RIPPLE
The wide success of Bitcoin has lead to a surge of a large number of alternative cryptocurrencies. These include Litecoin [13], Namecoin [14], and Ripple [15,16], among others. Most of these currencies simply clone the Bitcoin blockchain and try to address some of the shortcomings of Bitcoin. As described in Chapter 8, Namecoin offers the ability to store data within a PoW blockchain in order to realize a decentralized open-source information registration based on Bitcoin, while Litecoin primarily differs from Bitcoin by having a smaller block generation time and a larger number of coinbases. While most of these digital currencies are based on Bitcoin, Ripple has evolved almost completely independently of Bitcoin (and of its various forks). Currently, Ripple holds the second highest market cap after Bitcoin [17]. This corresponds to almost 20% of the market cap held by Bitcoin. Ripple Labs have additionally finalized the financing of a $30 million funding round to support the growth and development of Ripple [18].
Ripple does not only offer an alternative currency, XRP, but also promises to facilitate the exchange between currencies within its network. Although Ripple is built upon an open-source decentralized consensus protocol, the current deployment of Ripple is solely managed by Ripple Labs. At the time of writing, Ripple claims to have a total network value of approximately $ 960 million with an average of almost 170 accounts created per day since the launch of the system [19]. Moreover, there are currently a number of businesses that are built around the Ripple system [20, 21]. For instance, the International Ripple Business Association currently deploys a handful of Ripple gateways [22], market makers [23], exchangers [24], and merchants [25] located around the globe.
In the remainder of this section, we overview the Ripple protocol and discuss the basic differences between the current deployments of Ripple and Bitcoin.
Ripple [15] is a decentralized payment system based on credit networks [26,27]. The Ripple code is open source and available for the public; this means that anyone can deploy a Ripple instance. Nodes can take up to three different roles in Ripples: users that make/receive payments, market makers that act as trade enablers in the system, and validating servers that execute Ripple’s consensus protocol in order to check and validate all transactions taking place in the system.
Ripple users are referenced by means of pseudonyms. Users are equipped with a public/private key pair; when a user wishes to send a payment to another user, it cryptographically signs the transfer of money denominated in Ripple’s own currency, XRP, or using any other currency. For payments made in non-XRP currencies, Ripple has no way to enforce payments, and only records the amounts owed by one entity to the other. More specifically, in this case, Ripple implements a distributed credit network system.
A non-XRP payment from A to B is only possible if B is willing to accept an I owe you (IOU) transaction from A (i.e., B trusts A and gives enough credit to A). Hence, A can only make a successful IOU payment to B if the payment value falls within the credit balance allocated by B to A. This may be the case, for example, if the participants know each other or if the involved amounts are rather marginal; typically however, such transactions require the involvement of market makers who act as intermediaries. In this case, enough credit should be available throughout the payment path for a successful payment.
For example, a trust line can be established between market maker U1 and A (see Figure 9.4) by A depositing an amount at U1. In this example, A wants to issue a payment to B with the amount of 100 USD. Here, the payment is routed from A ^ U1 ^ U2 ^ U4 ^ B. This is possible because available credit lines are larger than the actual payment for every atomic transactions. Note that we did not route through U3 as there is not enough credit available between U1 ^ U3. However, we note that it is possible to break down the payment amount at U1, route a payment below 90 USD through U1 ^ U3 ^ B, and transfer the rest through U1 ^ U2 ^ U4 ^ B (extra fee at U3 required). In typical cases, Ripple relies on a pathfinding algorithm that finds the most suitable payment path from the source to the destination. By implementing credit networks, Ripple can act as an exchange/trade medium between currencies; in case of currency pairs that are traded rarely, XRP can act as a bridge between such currencies.
Ripple maintains a distributed ledger that keeps track of all the exchanged transactions in the system. These ledgers are similar in spirit to Bitcoin blocks but are created every few seconds and contain a list of transactions to which the majority of validating servers has agreed. This is achieved by means of Ripple’s consensus protocol [15] that is executed among validating servers. This protocol is based on a crash-tolerant consensus protocol and does not deal with Byzantine nodes. This consensus protocol implicitly assumes the presence of rational (but not Byzantine) validating servers. The main intuition is that Ripple captures a closed system of validating servers that are not anonymous. Although Ripple originally had the intention of realizing an open system where any entity can set up and connect their servers, Ripple’s use cases involve private deployments within a fixed set of (known) entities (such as banks and financial institutions). In this setting, rational servers would not risk misbehaving since all messages are authenticated and cannot be later refuted; if detected then these servers can simply be banned/sued. More specifically, Ripple claims that, in case of forks, then the entire logs of communication between servers will be exposed/analyzed to identify and isolate malicious servers.
A Ripple ledger consists of the following information: (1) a set of transactions, (2) account-related information such as account settings, total balance, trust relation, (3) a time stamp, (4) a ledger number, and (5) a status bit indicating whether the ledger is validated or not. The most recent validated ledger is referred to as the last closed ledger. On the other hand, if the ledger is not validated yet, the ledger is deemed open.