10.02.2016 Views

Bitcoin and Cryptocurrency Technologies

1Qqc4BN

1Qqc4BN

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Storage requirements. ​Fully validating nodes must stay permanently connected so as to hear about all<br />

the data. The longer a node is offline, the more catching up it will have to do when it rejoins the<br />

network. Such nodes also have to store the entire block chain <strong>and</strong> need a good network connection to<br />

be able to hear every new transaction <strong>and</strong> forward it to peers. The storage requirement is currently in<br />

the low tens of gigabytes (see Figure 3.11), well within the abilities of a single commodity desktop<br />

machine.<br />

Figure 3.11. ​Size of the block chain. ​Fully validating nodes must store the entire block chain, which as<br />

of the end of 2014 is over 26 gigabytes.<br />

Finally, fully validating nodes must maintain the entire set of unspent transaction outputs, which are<br />

the coins available to be spent. Ideally this should be stored in RAM, so that upon hearing a new<br />

proposed transaction on the network, the node can quickly look up the transaction outputs that it’s<br />

attempting to claim, run the scripts, see if the signatures are valid, <strong>and</strong> add the transaction to the<br />

transaction pool. As of mid-2014, there are over 44 million transactions on the block chain of which 12<br />

million are unspent. Fortunately, that’s still small enough to fit in less than a gigabyte of RAM in an<br />

efficient data structure.<br />

Lightweight nodes. ​In contrast to fully validating nodes, there are lightweight nodes, also called thin<br />

clients or Simple Payment Verification (SPV) clients. In fact, the vast majority of nodes on the <strong>Bitcoin</strong><br />

network are lightweight nodes. These differ from fully validating nodes in that they don’t store the<br />

entire block chain. They only store the pieces that they need to verify specific transactions that they<br />

care about. If you use a wallet program, it would typically incorporate an SPV node. The node<br />

downloads the block headers <strong>and</strong> transactions that represent payments to your addresses.<br />

An SPV node doesn’t have the security level of a fully validating node. Since the node has block<br />

headers, it can check that the blocks were difficult to mine, but it can’t check to see that every<br />

transaction included in a block is actually valid because it doesn’t have the transaction history <strong>and</strong><br />

doesn’t know the set of unspent transactions outputs. SPV nodes can only validate the transactions<br />

94

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!