Almost trust-less Ripple for Bitcoiners
A lot of people involved in Bitcoin don’t really get Ripple - many see it as a competitor, which must therefore be immediately attacked because there can be only one, and we’ve chosen Bitcoin. Others, in particular the loony paranoid types, think the idea of decentralized debt and trusting random people to be an asinine one. It’s further confused by the fact that Ripple.com != RipplePay, and that the idea of “decentralized debt” is not entirely cogent to the functioning of this Ripple.
So, for you guys, here’s how you can use Ripple in an almost trust-less fashion.
Step 1) Bootstrap your Ripple account:
There’s a catch-22 for the new Ripple user: You can’t get currency into Ripple (including XRP) without trusting someone, and you can’t trust someone without XRP. You pretty much have to resort to using something like Bitstamp, buying direct from OpenCoin, or trusting someone on the forums to send you about a hundred (75 is apparently the minimum now) for 0.01 to 0.02 BTC. Compared to the rates on the in-Ripple market, these are just about extortionist - most people on the forums try to hawk 300 XRP for 0.02 BTC or so, which is a lot. Bitstamp or OpenCoin is probably your best bet.
Unfortunately, there’s not a lot I can do to make this process easier - hopefully it’s on OpenCoin’s radar to remove some of the barrier to entry. Once you have created and “funded” (with enough XRP to create a trust line) account, you’re ready to proceed.
Step 2) Trust your Gateway
“Woah woah woah,” I hear you exclaim. “I don’t trust nobody.” Bullshit. You very likely trust your BTC exchange to hold money, if only for brief periods, while you buy BTC at the very least - even if you only buy BTC on LocalBitcoins, you’re still trusting the person not to rob you at gunpoint. This is all you’re going to do in Ripple - extend trust to an exchange, to reflect that you trust them for X in BTC, even if only briefly.
In this example we’ll use Bitstamp. Assuming you have setup a Bitstamp account, click “Deposit”, then “Ripple”, and you’ll be given a Ripple address and a Destination tag in one convenient quasi-address, for a made-up example (BitStamp’s address should always be the same, but for trust issues I am not including it here):
rJAaNN8TZDUQkEv7hf2Q1SfGdNqj43CDab?dt=12345
In your Ripple wallet, add Bitstamp as a contact via “Wallet”; “Contacts” and clicking the green + button. Name the contact something useful, like “Bitstamp”, and paste the address into the address box. Ripple will tell you it’s not a valid address, because it has the destination tag on it - copy the numeric part (“12345”) and paste it into the “Destination Tag” box (this is so Bitstamp can tell you from other Bitstamp customers without using new accounts for each customer), and delete the question mark and everything after it, so you’re just left with the address itself.
Next, head on over to the “Trust” window, via “Advanced”; “Trust”, and extend trust to Bitstamp at whatever level you’re comfortable with, in whatever currencies Bitstamp uses that you are happy to accept, and at whatever levels you’re comfortable accepting what is essentially an IOU from Bitstamp for. For example, you may not trust Bitstamp to deliver on more than 1 BTC, so that’s where you set your trust level. In our example, we’ll withdraw USD because that’s what I had handy in my Bitstamp account, but it must be stressed that you can receive any currency that your gateway supports.
Step 3) Your client configures their account in an identical fashion
In this example, I’m using another account I set up purely for testing purposes, but basically your client(s) needs to repeat steps one and two. This is where the hard part about starting to use Ripple comes from, getting everyone set up. From here on out it gets a ton easier.
But to reiterate, on my test account (and you can make another wallet as well if you’re interested in throwing away 0.01 BTC or so - buy it yourself via your first Ripple account on the built-in Ripple market at a cheaper rate, then send it to your second account, to save yourself a little bit but note that you can’t ever withdraw all of the XRP back out of a test account to a zero balance), I fund it by getting 300 XRP or so to it, then I trust Bitstamp for $100 USD.
Step 4) Your client moves money out of Bitstamp onto Ripple
You’ll be amazed at how fast this step is when you’re coming from BTC! Since Ripple’s essentially IOU passed around (unless you pay via XRP), it takes literally seconds. The sender of the funds clicks the “Receive” tab to get their own Ripple address, and pastes it in to the “Withdraw Ripple” page on Bitstamp (or your other gateway). Time it though, it’s fast:
Note that there are fees involved, so withdraw a little extra to cover the fees - I withdrew $0.10 USD and I can’t send that much as you’ll see in the next step.
Step 5) Your client sends you funds in the currency you desire
This is where (I think so anyway) Ripple starts to get amazing. If you clicked the above link describing how to buy XRP on Ripple’s built in trading markets, you’ll note that for each gateway/issuer you trust, there are markets for each currency pair that the issuer supports. Well, we can simply send what’s left of the USD after fees, if that’s what I want to receive the funds in:
Or, we can try to send BTC and Ripple will convert the funds for us as well:
You’ll notice that in both examples, because the available XRP balance on this account is sufficiently high, we can also send XRP as well, and Ripple will also handle the currency conversion for you. Ripple will, apparently, trace multiple trust paths and find you the best deal on the currency conversions, but since we’re dealing in a simple trust-less example there is only one path per currency pair, because we both trust the gateway and that’s it.
From the above screenshot, I changed it around and in fact sent 0.00067 BTC, because it was closer to the $.10 USD and so I could show off the exchange process.
Unfortunately, Ripple’s reference client doesn’t, as yet, display the exchange rates used, so a little mental arithmetic is required to work out the best rates if you have multiple currency balances in your Ripple account and you don’t know which to send, but that’s unlikely to be a problem - typically you’ll want to keep very little actual XRP (just enough to extend trust and cover the very tiny transaction fees, 300~600 XRP should be heaps for most users, I believe) and if you are keeping Bitcoin as a store of value you’d probably spend your other currencies first, unless you feel like Bitcoin’s on the dive.
Step 6) Withdraw to your gateway account
Now you simply withdraw the funds back out of Ripple. What has essentially happened here is I requested an “IOU” from Bitstamp for one currency, which because I then sent a different currency, I then “sold” the IOU on the market in exchange for a different currency, then took that IOU and transferred it to the business account:
You can see by hovering my mouse above the USD balance, that there’s still a little “dust” left in the account - which is a minor pain in the arse. Bitstamp effectively owes me a tiny fraction of a US penny, and there’s probably no reasonable way to ever spend that - but if you’re using the Ripple service quite a bit, it’s unlikely to matter too much.
We then call that IOU in at Bitstamp by sending it to Bitstamp’s Ripple deposit address (screenshot modified, do not use this Ripple address, use the one you get from Bitstamp’s website):
And within a minute or two (depending on how fast Bitstamp’s servers feel like being) you should have the funds in your Bitstamp account, ready to withdraw to your Bitcoin wallet (which will take substantially longer). Note that at no point did we extend trust to anyone other than Bitstamp, on either account, nor did we ever actually engage in any “distributed debt” from anyone except Bitstamp, which chances are if you do much at all with BTC you engage in anyway.
It’s critical to understand the trust you place in your gateways - if the gateway goes down permanently the IOUs to the gateway effectively become worthless, and this is not a trivial risk.
However, there’s money to be made being a gateway, and there’s money to be made in arbitrage between gateways - which would mean that the company and the client, or the sender and the receiver, would not need to trust or use the same gateways as long as there exists a trust path between the two gateways, though some percentage of funds will be lost in the exchange between the two gateways. The fact that there’s money to be made pretty much guarantees that if Ripple hits any amount of usage at all, we should see stable gateway companies springing up.
The best part about the arbitrage thing is that Ripple’s interface abstracts all that away. You tell the client you want to send $5 USD to someone, and it tells you how much it’ll actually cost in any currency you happen to be holding on Ripple.
Finally, note that the first two steps are only required once for each new user to Ripple, and are easily the most time-consuming. In some hypothetical future where your money is stored at a bank that’s also a Ripple gateway, subsequent payments will likely take seconds to complete from start to finish, and completely do away with any concern about what actual currencies you’re using.
Ripple’s still in it’s very early stages, and is still fraught with bugs, but it’s an exciting technology even if you don’t like BTC (there’s no reason both users couldn’t trust a gateway that exclusively deals in their own country’s currency and avoid BTC and XRP altogether).