by JOHN LIGHT - Nov. 27, 2013
Ripple is a project I’ve been meaning to write about for a while now, but told myself I would hold off sharing my thoughts until they’d open-sourced. Ripple Labs, Inc, (formerly OpenCoin, Inc) open-sourced the software back in September of this year, and since then I have been devoting more time to examining the project and learning to use the Ripple client. What I have come to realize is that Ripple is the decentralized exchange that the cryptocurrency community has been clamoring for.
Developer Ryan Fugger started the Ripple project to create an open source mutual credit and financial payment system, which is now called “RipplePay” or “Ripple Classic.” After the founders of Ripple Labs picked up the idea and began to expand on it, Ripple took on the form that it has today: a decentralized payment network and currency exchange which can be used to settle transactions in seconds. Ripple has several components, each of which we’ll examine in detail together:
- Ripple, the protocol and payment network; ripples (XRP for short), the native currency on the Ripple network
- The ledger, which is a history of all of the transactions in Ripple
- Ledger validators, who work to maintain an accurate ledger
- The Ripple Client, which people use to access and take part in the Ripple network
- a Ripple address, which each Client generates to receive payments
- Gateways, who issue digital currencies referred to as a “balance,” which can potentially be redeemed for assets which back them
- Market Makers, who provide liquidity and facilitate payments between Gateways
- Ripple Labs, who develops the Ripple protocol and Ripple software for consumers and merchants, and distributes the initial supply of XRP
- ...and the final and most important component of the Ripple network is trust, which is needed to create relationships in the Ripple network.
Like Bitcoin, Ripple is comprised of both a payment protocol and a native cryptocurrency (XRP). There will only ever be 100 billion XRP in the network. XRP serves two functions in Ripple: it’s primary function is as an anti-spam mechanism to prevent attackers from overwhelming the network with useless ledger entries, and it’s secondary function is as a bridge currency. Despite having this native cryptocurrency, Ripple is currency agnostic. Any user running the rippled software can issue new currencies as a Gateway and trade in any currency available on the Ripple network. It’s up to each Gateway to earn the trust of other nodes in the network if they expect others to use their currency.
Trust is the backbone of the Ripple network. If a user wants to hold a balance issued by a Gateway, the user must first create a trust line for X amount of currency from that Gateway. For example, if I want to be able to accept payments up to $100 from ABC Gateway, I must first create a $100 trust line with them. Since creating a trust line is a ledger entry, it costs a small amount of XRP. Users will only accept balances from Gateways they have trust lines with. If no trust line is present, the Ripple network uses its pathfinding algorithm to automatically find a payment path between Gateway A, which User A trusts, and Gateway B, who User B trusts. This ability to set trust levels, perform distributed currency exchange, and only hold balances from Gateways one trusts is what sets the Ripple network apart from other attempts at decentralized exchange and why I believe Ripple is poised for success.
Where Bitcoin uses a blockchain and proof of work to generate new currency and provide security to the payment network, Ripple uses a global ledger and consensus. Consensus occurs approximately every 5 seconds as all of the ledger validators come to an agreement regarding the current state of the Ripple ledger. The benefit of using a ledger and consensus rather than a blockchain and proof of work is that payment confirmations happen as fast as consensus occurs. The downside is that the native currency XRP was created not one block at a time, as in Bitcoin, but rather all up front by the developers of the protocol. Ripple Labs is addressing the challenge of distributing XRPs by giving them away to early adopters, developers, and charities. The founders are keeping 20% of the total XRP for themselves as a reward and incentive for developing the network. The rest will be distributed over time through sales and giveaways as the currency gains value.*
Like other cryptocurrency networks, Ripple has user-defined privacy. This means that the system is only as private as each user allows it to be. If you share your Ripple address with anyone, they will be able to see all incoming and outgoing transactions. Therefore, it is best to keep your address private if you do not want your transactions to be monitored by others. To protect your privacy during commerce, you can create one wallet for spending and trading, and another for receiving, never linking the two in name. More privacy features are in the works to make Ripple more private and protect against abuses that can occur in a public ledger system where all transactions can be tracked and monitored. Until then, it’s best to just use different addresses for different contexts.
To get started with Ripple, go to the Ripple.com Register page and fill in the blanks to create a new wallet. Be sure to choose a good password. Write down your password and Secret Key, and keep them in a safe place. After you’ve created your wallet, you will need to add XRP in order to create trust lines and make payments. You can purchase XRP from others who already have it via an exchange website or a local meetup. There are also XRP giveaway sites, faucets, and community forums where you can make a request for XRP. After you have XRP, you can create trust lines to other users, send payments, and place orders in the Ripple open order book. Be careful who you issue trust to – you might get stuck with a balance which cannot be redeemed! A Ripple balance is an IOU, debt which is easily transferred by those who trust the debt issuer to redeem the IOU for whatever they claim is backing it.
For example, ABCGatewayUSD would be a Unites States Dollar IOU issued by ABCGateway, redeemable (in theory) for real USD. Only users who trust ABCGateway will have to hold that balance for USD payments. If a user trusts two Gateways for USD, then at any time their USD balance for one of those Gateways could be swapped out by the network for an equivalent amount of USD from the other Gateway. This is how the pathfinding feature facilitates payments between Gateways. If I’m buying something from you and I have USD and you only accept CNY, then Ripple will find a path of nodes which will take my USD and eventually give you CNY. If no path is found, the payment will not happen and we will have to try again. This is a feature, not a bug – it means no one gets stuck with a Ripple balance they don’t want.
If you want to take advantage of Ripple’s distributed currency exchange capability, you will need to have an XRP balance equivalent to the amount of currency you want to trade, or you will need to purchase Gateway-issued currencies from others who have them. Each order entry costs a small amount of XRP, since it adds an entry to the Ripple ledger. Once you have enough XRP or Gateway-issued currency, you can go to the “Trade” tab in the Ripple Client and place orders to buy and sell XRP or currencies from trusted Gateways on the Ripple order book. Alternatively, you can perform an immediate trade for a desired currency at the best market price by using the “Convert” option in the Wallet tab. Once you have the desired Ripple balance, you can either spend it on goods and services, sell it for another Ripple balance, send bitcoins to a bitcoin address, or redeem the balance at its issuing Gateway for the asset backing the balance. Rather than register with a currency exchange and hand over personal information and money for fees just to trade currencies with others, Ripple enables you to perform this function in the cloud, making currency exchange easy, inexpensive, and private.
There are many opportunities opened up by the Ripple project, opportunities for both fun and profit: developing new and exciting applications, market making to provide liquidity, forming a Gateway to provide neighbors with access to the network, creating new community currencies and mutual credit systems, banking in the cloud, and much more. I look forward to seeing all the cool things that will be done with this promising technology.
* The distribution model for XRP admittedly remains my one issue with the project (the other previous issue I had, the fact that the server code was closed-source, was solved when Ripple Labs open-sourced the server code) and is also a contentious point raised by many in the cryptocurrency community, to the point of pushing some to erroneously call Ripple a scam. I would prefer that XRP be created and distributed over time in a logical and predictable way to those providing value to the network, rather than arbitrarily by a central entity, perhaps for example to ledger validators every time consensus is reached or via targeted micro-proof-of-work vis a visHashCash or BitMessage. But since I am not a developer and am not well versed in the technical limitations of the possible solutions to the problem at hand, I will leave this challenge to those who know better. I do not look at XRP as the unique and valuable feature of Ripple anyway, since I believe that XBT is already a superior cryptocurrency for many reasons. Rather, I find value in the mining-less consensus process and the distributed exchange protocol which makes Ripple such a fluid, efficient payment network.
This author accepts tips via Ripple at address: rE9susk14sicgzs9Yykqtg1S