Different approaches to using NFC Ring with Bitcoin
Having spent some time with Bitcoin, I wrote up a few approaches the NFC Ring can take when handling Bitcoin. John asked me to post them here so we can discuss them.
Here is my first post on the subject:
In general, you would want an option to share your Bitcoin Address on the public side of the ring, and have the private part of the ring be used to sign transactions. The typical payment would work like this:
You want to pay at some place, so you brofist the NFC reader. This gives the payment system your Address, which the system uses to fetch your unspent transactions, create a payment transaction and present all the necessary information to you ("This is your balance, this is how much BTC you'll be charged, etc"). If you accept that transaction, you use the secret part of the ring to get the raw transaction from the device, sign it on the ring, and return the signed transaction. You want to avoid broadcasting your private key under any measures (asides getting some backup of it at home or something).
And here are the various approaches we can take with integrating Bitcoin:
NFC Ring would just be a spending wallet, it should only have your "pocket change". In this approach one wouldn't really care to disclose our balance amount.
Making payments in the Bitcoin system discloses your address in the first place and the balances of addresses are public knowledge. On the other hand, one could use an eWallet that just bundles up everyone's money to obfuscate that. People generally have an aversion to those wallets though - they have a reputation of taking their money.
We could require the user to log into their account or confirm the payment through their phone. This would make the payments a lot slower and probably less convenient, but would keep the anonymity.
The system could be requesting the necessary data through a https connection (provided something like that is possible) and create all the needed transactions this way.
The ring could be having multiple Bitcoin addresses in it and create new ones on the spot (just like the Standard Bitcoin Client). This would obfuscate the balances, but would require more data to be stored (and backed up, although one can use deterministic wallets).
I personally think approach number 1 would be the easiest to implement as well as the most useful (being able to pay for something in a second has its advantages). At the same time, it might be the least safe (I would imagine it would be easy to try charging someone more money than they are aware of).