美文网首页
自学区块链(二)BTC的数据结构

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

作者: 阿根廷香蕉 | 来源:发表于2019-08-24 23:37 被阅读0次

    BTC的数据结构

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

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

    哈希指针

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

    箭头就是哈希指针

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

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

    默克尔树(Merkle tree,MT)

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

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

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

    相关文章

      网友评论

          本文标题:自学区块链(二)BTC的数据结构

          本文链接:https://www.haomeiwen.com/subject/dyhqectx.html