Take the 2-minute tour ×
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It's 100% free, no registration required.

is it possible to create a real hardware Bitcoin, e.g. a specified (and verifiable) value which is stored on a smart card or RFID which can be given directly to other people?

share|improve this question
1  
Isn't this what BilBills is all about? –  ripper234 Sep 5 '11 at 20:02
add comment

2 Answers

up vote 14 down vote accepted

It's certainly possible. The card would basically need four functions: add/generate account, add bitcoins, prove bitcoins, spend bitcoins. The card could piggyback on external smart systems so the card doesn't need to do very much.

Each function would be implemented as follows:

Add Account: An ECDSA private key would either be randomly generated by the card or loaded from an external source. The card would add the key to its store of keys. This would be a secure operation that would require the card's internal key to perform.

Add Bitcoins: A list of transaction identifiers and output indexes would be loaded into the card. This would also be a secure operation.

Prove Bitcoins: This operation would prove the ability of the card holder to spend a particular number of Bitcoins. An external device specifies a number of Bitcoins to prove. If desired, approval is sought from the card holder via a PIN or similar mechanism. The card then forms a transaction to pay that number of Bitcoins but damages it so the transaction is invalid (for example, it adds a single transaction input for a billion Bitcoins). Then it signs it. The recipient, seeing the invalid transaction signed knows the card holder could have signed the corresponding valid transaction. (If desired, a challenge can be included to prove the signed transaction was generated on the spot.)

Spend Bitcoins: This is the same as the prove Bitcoins operation except the transaction is valid, the recipient commits the transaction to the block chain, and the card updates its memory to reflect that the coins are spent.

The only other thing you might need is a 'sync' operation where the card fixes any discrepancies. For example, if a spend operation is done but for some reason it doesn't make it into the block chain, the card needs to know that it still holds those Bitcoins. (And can't spend the 'change' from that transaction.)

This is a minimal implementation. You can certainly add more capabilities.

share|improve this answer
add comment

http://smartcardwallet.org/ claims to have a system where the wallet is stored on a smart card. A custom client is needed to access the wallet, but they say all software is open source.

share|improve this answer
3  
Hi Martin! Please try to expand your answer so that it does not just contain a link. A couple of lines describing SmartCardWallet will make the answer much more useful to other users. –  D.H. Aug 10 '12 at 12:35
    
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. –  ThePiachu Sep 18 '12 at 11:54
1  
@ThePiachu et al, I've updated the answer, since the link looks relevant. –  Highly Irregular Jan 23 '13 at 8:53
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.