- protocol documentation in wiki
- sample network traffic, bitcoin messages, keys, ...
Main --> Receive_EnterAmount --> Receive_ShowQRInvoice --> Main --> Scan --QR Invoice--> Pay_ConfirmPayment --> Main
- TX QR codes (so the sender doesn't need to use the internet)
- use SQLCipher as a drop-in replacement for SQLite
- forex via {TruCoin, ...}
- address book
- key management/backup
- ...
- NodeJS and C
- encode messages
- MessageParser
parser = new MessageParser
socket.on('data', function(data){parser.update(data)})
parser.on('version', function(m){if(m.version >= 209){...}})
- create a {private key, signed transaction message, ...}
- verify a {transaction, block, ...}
- API
- backed by {Redis, some scalable KV store}
- massively scalable
- define a set of VIP peers, try to maintain connections with them
- e.g. TruCoin EC2 micros in {US-East, Ireland, Singapore}, every mining pool
- Optionally log each socket data event (with a millisecond timestamp)
- Explore ways to speed up propagation (e.g. propagating an
INV
before the (GETDATA
,TX
) round trip)
- API
- backed by {Redis, SQL}
- optional fine-grained control of which keys to use as inputs
- massively scalable (mining pools are having scaling problems with the original bitcoind)
- require a 0.001 BTC transaction fee (configurable)
- public API:
- check settings (like fee requirements)
- TCP feed of accepted TXs
- ...
- single-threaded
- price-time priority limit order matching engine
- emit private events
- Each event contains some random salt (e.g. 15 bytes)
- The user who triggered an event (e.g. the buyer in a
BID
event) gets a copy
Each event...
- corresponds to a private event
- redacts fields like
account_id
- contains a hash (e.g. 30 bytes) of its private event