Standalone hardware bitcoin client: even more anonymity and reliability for bitcoin Radio enabled smartcards as a self-sustainable wireless media: no recharge and no immediate internet connection needed
The reliability of the Bitcoin system is assured primarily by encryption. The system's main vulnerability is the Bitcoin wallet, created as a file on the computer. If a hacker (or a computer virus) gains access to the computer and can read this file, he (it) will be able to transfer all the money to his (its) anonymous account where it will be nearly impossible to find. It will also be impossible to prove to anyone that you did not voluntarily transfer the money to your own anonymous account.
Our Bitcoincard, a stand-alone device that in effect acts as an electronic wallet, can be used to hide the wallet in a safe place (outside the computer, making it inaccessible to hackers).
It is worth noting in this regard that:
digital signature keys are created and stored inside the card, and never leave it;
the card does not have an operating system or the ability to download additional software, which protects the card from attacks by viruses;
the exchange protocol with the outside world is simple and protected by encryption;
if the card is lost, the money it contains is also irrecoverably lost;
the card is completely anonymous;
the card has unmatched energy efficiency, and does not need to be charged;
the card has unprecedented processing power for an ordinary smart card;
the cards can perform peer to peer transactions using their own radio protocol in the absence of any communications infrastructure;
the cards should periodically come close to any gateway in order to synchronize their state with the global bitcoin system.
In essence, Bitcoincards are Bitcoin clients and support the following operations:
creation of an electronic wallet (addresses);
receipt of coins from Bitcoin clients;
transfer of coins to Bitcoin clients;
transfer of coins from card to card (bypassing the Bitcoin system during transfer, but having all transactions subsequently recorded in the system and verified by it).
Bitcoincards only interact with the outside world (the Bitcoin system) through the radio. The card contains a chip with a low-power radio transceiver. In addition to the global distributed Bitcoin system, two types of components are needed for the functioning of the Bitcoin card:
a gateway to ensure interaction between the card and an IP network by radio;
a server to ensure interaction between the card and the Bitcoin system.
The gateway is a very simple device that only receives packets by radio from the Bitcoincard and transfers them to the server using IP, and transfers IP packets by radio from the server to the card. The gateway can be a separate small device with an Ethernet connection and an antenna, or a USB dongle with an antenna connected to a portable device (notebook), computer or, for example, a payment terminal. Additional software is installed when the USB dongle is connected to a computer.
The server is an intermediary between the Bitcoincard and the Bitcoin system, and performs the following functions:
receipt of payments from Bitcoin cards (with confirmation of receipt) and forwarding of the payments to the Bitcoin system;
verification of the validity and checking the status of all the transactions involving the cards (by keeping a copy of the block list);
informing the Bitcoin cards about the incoming payments.
Any number of gateways and servers can co-exist in the system. One server can communicate through multiple (possibly thousands of) gateways. A gateway may communicate with multiple servers.
A card must trust at least one server in order to verify the received payments. Since a card does not have the resources to keep a copy of the block list, the server verifies that the payment transaction is confirmed in the Bitcoin system (and at least 6 blocks have been closed in the block list after it) on the card's behalf. The card gets an update signed by the server via a gateway.
The server can be set up and maintained by the owner of the card. Generally, however, we expect several "clearing houses" trusted by the majority of the card users to appear in the Internet. Everyone can set up a new such server. In order to make the card trust a new server (or a clearing house running multiple such servers), the card owner must issue the corresponding commands using the key pad and the display of the card. This must be done in the communications range of a gateway connected to the server.
How it works.
Receipt of coins on the card:
The card enters the coverage area of the gateway, and after being switched on it hears the beacons (short periodic radio transmissions announcing the presence of a gateway);
The card requests from a trusted server via the gateway an update on incoming payments, confirmations of past transactions, etc., that took place since the last successful communications session with any trusted server via any gateway;
The server either answers (via the gateway) that there are no updates, or transfers an incoming transaction with a tag indicating whether there are more;
If the tag indicates that there are more transactions, the card requests the next incoming transaction until there are no more;
Then the card requests and updates the status of each unconfirmed transaction;
The amount of the payments received is shown on the screen.
Transfer of coins from a card:
The card enters the coverage area of the gateway, and after being switched on it hears the beacons;
The user chooses the address of the payment recipient from the address book (or types it on the key pad) and enters the amount of bitcoins to transfer;
The card forms and signs the payment transaction;
The card broadcasts the transaction (several times until the server confirms its receipt);
The gateway hears the transaction and transfers it to the server, then it sends the server's response to the card;
If no confirmation of the receipt is received, the transaction is stored in the flash memory of the card to be sent later;
The card then requests the status of the transaction from the server and shows it on the screen.
Transfer of coins from card to card (in the absence of a connection to the server).
At the press of a button, the recipient's card broadcasts its bitcoin address together with the user name (any nick) of the recipient.
The sender's card hears the address and offers the sender to enter it in the address book, showing the user name and the bitcoin address on the screen (the bitcoin address can be also communicated by the recipient to the sender offline for verification);
The sender chooses the recipient from the address book and enters the amount to pay, and the card forms and signs the Bitcoin transaction;
The sender's card broadcasts the transaction (several times until the recipient's card confirms its receipt), while simultaneously storing it in the flash memory of the card in order to forward the transaction to a server when the card finds itself within the range of a gateway;
The recipient's card accepts the transaction and confirms its receipt;
The recipient's card marks the received transaction as "unconfirmed", while simultaneously storing it in the flash memory in order forward it to the server later. (Both the sender and the receiver attempt to forward the transaction to the server every time they find themselves within the range of a gateway);
After receiving beacons from a gateway, the recipient's card transfers the deferred transaction to the server and receives a confirmation of receipt from the server;
The recipient's card requests the trusted server to report the status of the transaction, and, if the transaction is confirmed by a chain of at least six blocks in the block list (as reported by the server), it marks it as confirmed and usable for subsequent payments. The money has been received.
Background information on Bitcoin transactions
This simplified description is intended for people with no prior knowledge of the Bitcoin protocol to make the text above easier to understand.
Each Bitcoin transaction has a set of inputs (sources of coins) and outputs (payment recipients). The total amount of coins on all inputs and outputs must match. If the amount of the inputs exceeds the amount of the outputs, the difference is taken as a tip by the Bitcoin mining servers that process the transactions. If the amount of the inputs is less than the the amount of the outputs, the transaction is considered invalid and it is rejected by the system. Each input (source of the coins) of the transaction is the output of some other previously performed transaction, signed by the payment recipient. Each output of the transaction is a Bitcoin address of the recipient. Thus, transactions form chains, with outputs of earlier transactions used as inputs by the subsequent transactions. The whole graph is recorded in the block list, the main element of the Bitcoin system. In order to spend the received money, the recipient of the transaction must form a new transaction and sign it with his private key. The Bitcoin system verifies the signature and makes sure that the private key used matches the bitcoin address of the recipient, that is, it is indeed the intended recipient of the original transaction who now spends the money. In the case of Bitcoin card, it securely stores such private keys.