seelabs 2c6b0f3193 Fix limiting step re-execute bug (RIPD-1368):
The deferred credits table can compute a balance that's different from the
ledger balance.

Syntax:
A number written with no decimal means that number exactly. I.e. "12". A number
written with a decimal means that number has a non-zero digit at the lowest
order digit. I.e. "12.XX" means a number like "12.00000000000005"

Consider the following payment:
alice (USD) -> USD/XRP -> (XRP) Bob
Alice initially has 12.XX USD in her account.
The strand is used to debit alice the following amounts:
1) Debit alice 5
2) Debit alice 0.XX
3) Debit alice 3.XX

The next time the strand is explored, alice has a USD/XRP offer on the books,
and her account is credited:

1) Credit alice 20

When the beginning of the strand is reached, consider what happens when alice is
a limiting step. Calculate how much we can get out the step. According to the
deferred credit table this is:
12.XX - (5 + 0.XX + 3.XX)

This is also limited by alice's balance, which is large thanks to the credit she
received in the book step.

Now that the step has calculated how much we can get out, throw out the
sandbox (the one with the credit), and re-execute. However, the following error
occurs. We asked for 12.XX - (5 + 0.XX + 3.XX). However, the ledger has
calculated that alice has:
((12.XX - 5) - 0.XX) - 3.XX

That's a problem, because that number is smaller. Notice that there are two
precision losing operations in the deferred credits table:
1) The 5 + 0.XX step
2) The 12.XX - (total of debits). (Notice total of debits is < 10)

However, there is only one precision losing operation in the ledger calculation:
1) (Subtotal of 12.XX-5) - 0.XX

That means the calculation for the ledger results in a number that's smaller
than the deferred credits. Flow detects this as a re-execution error.
2017-03-01 11:42:31 -05:00
2017-03-01 11:41:07 -05:00
2016-05-24 12:36:38 -04:00
2014-05-13 12:15:59 -07:00
2016-10-17 15:18:40 -04:00
2017-01-13 15:01:20 -08:00
2017-01-13 15:01:20 -08:00
2016-10-17 15:18:40 -04:00
2014-04-28 14:54:15 -07:00
2017-01-13 15:01:20 -08:00
2017-01-30 15:49:01 -08:00

Ripple

What is Ripple?

Ripple is a network of computers which use the [Ripple consensus algorithm] (https://www.youtube.com/watch?v=pj1QVb1vlC0) to atomically settle and record transactions on a secure distributed database, the Ripple Consensus Ledger (RCL). Because of its distributed nature, the RCL offers transaction immutability without a central operator. The RCL contains a built-in currency exchange and its path-finding algorithm finds competitive exchange rates across order books and currency pairs.

Key Features

  • Distributed
    • Direct account-to-account settlement with no central operator
    • Decentralized global market for competitive FX
  • Secure
    • Transactions are cryptographically signed using ECDSA or Ed25519
    • Multi-signing capabilities
  • Scalable
    • Capacity to process the worlds cross-border payments volume
    • Easy access to liquidity through a competitive FX marketplace

Cross-border payments

Ripple enables banks to settle cross-border payments in real-time, with end-to-end transparency, and at lower costs. Banks can provide liquidity for FX themselves or source it from third parties.

As Ripple adoption grows, so do the number of currencies and counterparties. Liquidity providers need to maintain accounts with each counterparty for each currency a capital- and time-intensive endeavor that spreads liquidity thin. Further, some transactions, such as exotic currency trades, will require multiple trading parties, who each layer costs to the transaction. Thin liquidity and many intermediary trading parties make competitive pricing challenging.

Flow - Direct

XRP as a Bridge Currency

Ripple can bridge even exotic currency pairs directly through XRP. Similar to USD in todays currency market, XRP allows liquidity providers to focus on offering competitive FX rates on fewer pairs and adding depth to order books. Unlike USD, trading through XRP does not require bank accounts, service fees, counterparty risk, or additional operational costs. By using XRP, liquidity providers can specialize in certain currency corridors, reduce operational costs, and ultimately, offer more competitive FX pricing.

Flow - Bridged over XRP

rippled - Ripple server

rippled is the reference server implementation of the Ripple protocol. To learn more about how to build and run a rippled server, visit https://ripple.com/build/rippled-setup/

travis-ci.org: Build Status codecov.io: Code Coverage

License

rippled is open source and permissively licensed under the ISC license. See the LICENSE file for more details.

Repository Contents

Folder Contents
./bin Scripts and data files for Ripple integrators.
./build Intermediate and final build outputs.
./Builds Platform or IDE-specific project files.
./doc Documentation and example configuration files.
./src Source code.

Some of the directories under src are external repositories inlined via git-subtree. See the corresponding README for more details.

##For more information:

To learn about how Ripple is transforming global payments visit https://ripple.com/contact/


Copyright © 2015, Ripple Labs. All rights reserved.

Portions of this document, including but not limited to the Ripple logo, images and image templates are the property of Ripple Labs and cannot be copied or used without permission.

Description
Codebase for Xahaud - The consensus, RPC & blockchain app for the Xahau network.
Readme 155 MiB
Languages
C++ 90.3%
C 8.1%
CMake 0.6%
Shell 0.2%
Java 0.2%
Other 0.5%