Skip to main content
. 2019 Mar 25;26(5):462–478. doi: 10.1093/jamia/ocy185

Figure 3.

Figure 3.

Another technique to reduce the need for each user to keep the full history of transactions is to use lightweight nodes together with a Merkle tree. For a user who only wants to use coins but does not want to “mine” new blocks, the full transaction history (more than 150 GB as of January 2018) is too large, especially for smartphones. Therefore, a user can adopt lightweight nodes1 so that only the Merkle Branch1 that links the transactions that the user would like to verify is used. An example of the Merkle Branch for transaction T12 stored on a blockchain lightweight node (eg, on a mobile device), in contrast to the data storage of a full node (eg, on a personal computer), is shown in this figure. With the use of the Merkle tree, a lightweight node only stores data relevant to specific transactions (eg, T12) to save space.1 For example, in addition to T12 itself, this lightweight node only needs to store related hashes (ie, Hash of T11, Hash of T13–14, and Hash of T15–18), instead of storing the full Merkle tree, to make sure T12 is linked to block B1. That is, one can first compute the Hash of T12 using T12, and then compute the Hash of T11–12 using the Hash of T11 and the Hash of T12. Eventually, one can compute the value of the Merkle Root (Hash of T11–18), and compare it with the one stored in B1, to make sure T12 has been verified in B1. This way, a lot of required storage space for those lightweight nodes is saved, making applications such as wallet apps on mobile devices feasible. This verifying process is also known as Simplified Payment Verification.1,59 As a result, users/nodes can be divided into 2 groups: full nodes (the ones storing the whole transaction history and performing mining) and lightweight nodes (ie, the nodes using Simplified Payment Verification just for transactions, without mining), thus reducing the storage space for lightweight nodes and improving the scalability of a blockchain network.