I was thinking today about how best to show the fiat equivalents for bitcoin amounts.
(Fiat = USD, GBP, EUR - I will just use USD in this post but it applies to them all).
There is a slight problem in that exchange rates are not fixed so if 1 BTC = 6.5 USD today, maybe next week it is 7.0 USD. How best to show this on a user interface ?
If you notice on blockchain.info and Electrum Lite you see phrases such as "X BTC (
about $Y)". (my emphasis). We all have the same problem. I do not think there is a place for 'about' when dealing with money.
I think we can fix a lot of things by adding the
fiat amount being requested to bitcoin URIs. An example:
Alice goes to BobsChocolates.com and wants to buy some chocolates for $40, which currently is 6.06 BTC. The URI payment request shown on the website would currently be:
bitcoin:<address>?amount=6.06&label=BobsChocolates
I propose we add the fiat amount to the bitcoin URI as follows:
bitcoin:<address>?amount=6.06&label=BobsChocolates
&fiat=USD40This gives the following advantages:
- On Alice's user interface you can show the exact amount in USD, which I am assuming Alice is more familiar with.
"Do you want to pay $40.00 (6.06 BTC) to "BobsChocolates" ? - On Bobs interface - he can track his payments in both USD and BTC as appropriate. (His suppliers probably still want USD).
- When the exchange rate varies the user interface can show the user either the USD amount at time of transaction ($40) or the dollar amount now, using the current exchange rate. Thus you can reconcile currency changes as you have to with any multi-currency dealings.
- Heresy I know: But you could hardly show bitcoins on the user interface at all !
To illustrate an "all dollar" exchange:
1) Charlie wants to request a dollar amount from Dana. He enters $20 on his "Request" page.
2) The USD amount is converted to BTC. (currently 3.04 BTC).
3) A URI is created with a fiat tag recording the fiat amount. (bitcoin:<address>?amount=3.04&label=LoveAndKisses&fiat=USD20)
4) Dana scans the tag and sees the fiat amount (plus the BTC amount if she is really interested).
5) The payment is made as 3.04 BTC but it is shown on the user interface as the transaction dollar amount ($20).
Both Charlie and Dana's records show the amount as $20.
There is of course an implicit exchange rate between the BTC and fiat amount on the URI. This in some ways is a negociation - a vendor is saying with a URI:
"I want you to pay 6.06 BTC for these chocolates and I am saying that the dollar amount is $40.00"
The payer either agrees and pays it or disagrees and out-of-band makes a counter offer or simply walks away.
I would assume UIs would be "exchange rate aware" with options for checking the implicit rate in a URI is believable. You can imagine warning messages like:
"Do you want to pay $40.00 (6.06 BTC) for BobsChocolates ?
WARNING: This is a shockingly bad exchange rate"
I imagine the MtGox last price would be used as the default exchange rate as that has the lowest bid-ask difference, with settings for things like:
- use a fixed rate, with entry box
- use the Intersango last price
- etc
Your feedback is very welcome!