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
Transactions


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.