自学区块链(二)BTC的数据结构

BTC的数据结构

1、最基本的数据结构就是区块链(就是一个一个区块组成的链表),和普通的链表的区别是,使用的是哈希指针代替了普通指针。

2、默克尔树(Merkle tree,MT)是一种哈希二叉树


哈希指针

普通指针是存的结构体的在内存中的起始地址,而哈希指针除了要保存这个结构体的地址之外,还要保存这个结构体的哈希值H()。正因为保存了哈希值,所以能够防止结构体内容被篡改。


箭头就是哈希指针

H()这个哈希值是对整区块取的哈希。这个结构的好处是,不管区块中哪个点被篡改,都会导致我们最后保存的哈希值发生变化,我们保存的最后一个H()值可以验证出来前面数据的安全性。而普通链表修改一个元素对后面时不产生影响的。

正因为有这个性质,区块链中就可以不用保存全部区块,保存最近的一些区块,要用到其他区块时就找别的节点要,(由于去中心化)当存在恶意节点传过来篡改过的数据,可以通过这个性质来验证。

默克尔树(Merkle tree,MT)

是一种哈希二叉树,最上面的值去哈希root hash,可以保护整棵树的数据安全性(中间不管哪一步被篡改,都会对应不上root hash值)


BTC当中各个区块用hash指针相连,每个区块当中的交易信息就保存在默克尔树中,最底层的数据块其实就是交易信息。

节点分为两类:全节点和轻节点,手机上的钱包就属于轻节点的应用,全节点保存交易的所有信息(包括默克尔树),轻节点保存的只有block header(默克尔树的根哈希值在这),轻节点在需要验证交易是否在这个默克尔树上的,需求向全节点发送请求,全节点会发送一个merkle proof给轻节点验证(给出旁边的交易的哈希值)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容