# Gavin Andresen # 2010-06-29 16:58:58 # https://bitcointalk.org/index.php?topic=221.msg1876#msg1876 I think bittorrent would be a really good model to follow. @p{par} But it's not the only path to success; Perl is a good example of a successful technology with One True implementation and no specification beyond the One True implementation. @p{par} Then again, development of Perl 6 seems to be going really slowly. @p{par} And I think breaking up the functionality is a really good idea. For example, if the algorithm for signing transactions and the format for public and private keys were standardized it would be possible to create a Bitcoin iPhone app that stored the private keys (wallet) on the phone and submitted signed transactions to a proxy that was connected to the p2p network. @p{par} I see the functionality broken out into these pieces: @p{par} 1. p2p nodes that are constantly connected and relay blocks and transactions @p{brk} 2. transaction monitoring ("tell me when there are new transactions that match some set of criteria") @p{brk} 3. new block monitoring ("tell me when there are new blocks that match some set of criteria") @p{brk} 4. transaction validation (answers question "is this transaction valid, and how many validations does it have?") @p{brk} 5. block validation ("is this block valid, and how many validations does it have?") @p{brk} 6. bitcoin mining: race to generate a new block and earn @s{/B} @p{brk} 7. wallet storage (generate new addresses, and store their public/private keys and any transactions that correspond to them) @p{brk} 8. generate new transactions (sign @s{/B} with private key(s) and submit to p2p network) @p{par}