比特币 二、数据结构
作者:互联网
什么是数据结构?简言之,一个比特币区块中大约有4000多条交易,这4000多条交易,我们用一种怎样的结构进行排列。是像表格一样一个一个往下排,还是两个两个一对,两对两对一组……这样(这叫二叉树),或者其它的方法,就是数据结构。研究数据结构的目的,主要是为了查找的方便。
- 复杂度为1表示,一下子就能找到。这种算法/数据结构是最好的
- 复杂度为n表示,随着数据量的增大,找到特定数据的消耗时间与数据量成同比例增长,是比较差的
- 复杂度为logn的算法/数据结构的好坏,是介于1与n之间的
- Ho保存了 1)创世区块整体求哈希的值与 2)创世区块的地址
- Ha保存了 1)结构体A(包括了Ho)整体求哈希的值与 2)结构体A的地址
- Hb保存了 1)结构体B(包括了Ha)整体求哈希的值与 2)结构体B的地址
- ……
- Hd保存了 1)结构体D(包括了Hc)整体求哈希的值与 2)结构体D的地址。Hd保存在了用户本地
- 全节点full node:全节点是是拥有完整区块链账本的节点,全节点需要占用内存同步所有的区块链数据,能够独立校验区块链上的所有交易并实时更新数据,主要负责区块链的交易的广播和验证。
- 轻节点light node:没有拥有完整区块链账本的节点。比如,手机比特币钱包客户端就是一个轻节点,他没有必要去保存所有的账本。
- 全节点收到了B请求验证这笔交易的信息,全节点可以看到这笔在merkle tree中的位置,他给B提供三个数据,即上图中红色的H()。
- B在本地通过运算得到上图手指绿色H(),再和获得的红色H()一起,再在本地算出上方的绿色H(),再和获得的红色H()一起,再在本地算出上方的绿色H()……最终算到root hash值,设为H1。
- B将算出来的root hash值H1与本地的root hash值H进行对比,如果H1=H,则这笔交易存在在该区块中。
标签:数据结构,比特,proof,哈希,merkle,区块,节点,指针 来源: https://www.cnblogs.com/B1ueyuan/p/14394397.html