北大肖臻区块链公开课02-BTC-数据结构
创始人
2024-12-29 02:09:34
0

一、区块链

1.哈希指针

        普通的指针p指向一个结构体,p中保存的就是该结构体的内存位置。

        哈希指针H()指向一个结构体,H()中不仅保存了内存位置,还保存了对应数据的哈希值,以便验证数据内容是否遭受篡改。

2.tamper-evident log

        该特性使得区块链易检出所在链是否遭受了任何的篡改。

        区块链中的第一个区块被称为genesis block(创世纪块),后续链接的每个块都会记录前面一整个区块的哈希值H(x),直至most recent block(最新区块),再对其计算一次哈希值并使用哈希指针指向它。这样便使得倘若整个区块链中存在任何被篡改的痕迹,被篡改的区块的哈希值便会发生变化,这种变化像多米诺骨牌一样一层一层向后传递,直至最后的哈希指针中的哈希值。因此只需要判断最后的哈希值是否发送了变化便可以确定整个区块链是否被篡改过。当然这种检测只能判断出是否被篡改,如果想要判断出何处被篡改,则需要遍历整个区块链分别计算哈希值进行比对。

二、Merkle Tree

       除了链表的形式,区块链中常用的数据结构还有二叉树,称为Merkle Tree。最下层的叶子结点存放着Transaction(交易),倒数第二层存放着交易叶子结点的哈希值,两个交易的哈希值合并后再取一个哈希值,存放于更上层的父结点中,层层递进,直至根节点,再对根结点取一个根哈希值root hash。这样的Merkle Tree的形式也具有tamper-evident的特性。

1.Merkle proof & proof of membership(inclusion)

           区块链中的结点分为全结点轻结点,全结点存放着两部分内容:block header和block body,其中header中保存着哈希值,而body中则保存着交易列表。轻结点只保存header部分,即哈希值。

        假设用户A持有一个比特币钱包,这是一个轻结点,只保存了根哈希值,现在A与用户B之间发生了一笔交易x,那么A要如何知道这笔交易x是否真正地被包括在了这棵Merkle Tree中呢?

        首先A从这个轻结点向一个全结点发起请求,请求获取到关于这笔交易x的Merkle proof,全结点收到请求后将图中红色的哈希值发送给该轻结点,此时该轻结点便可以在本地结合交易x的信息和红色的哈希值逐层计算出绿色的哈希值,最终计算出一个根哈希值,将该根哈希值与自己本身存储的根哈希值进行对比,若一致便可以确认该交易x存在于该Merkle Tree中。

        由于采取了二叉树的数据结构,这种验证的时间复杂度仅为O(log n)。

2.proof of non-membership

        那么又该如何证明一个交易不存在于一棵Merkle Tree呢?遍历一整棵Merkle Tree当然是可行的,但是时间复杂度就达到了O(n),有没有什么方法做一些优化呢?

        如果先对全部交易的哈希值做一个排序,得到一棵Sorted Merkle Tree,事情就简单了许多。假设目标交易x的哈希值为H(x),根据各个交易的哈希值的大小,可以得到两个交易y和z,使得H(y)且y与z在该Sorted Merkle Tree中是邻居关系,请求获取到y与z的Merkle proof后逐层验证直至根哈希值,确认y与z都是原Merkle Tree中的合法交易,则交易x就不可能存在于该Merkle Tree中。

        

相关内容

热门资讯

一分钟揭秘!微扑克小程序透明挂... 自定义新版系统规律,只需要输入自己想要的开挂功能,一键便可以生成出专用辅助器,不管你是想分享给你好友...
详细教程!德州扑克ai透明挂黑... 详细教程!德州扑克ai透明挂黑科技!德州扑克ai辅助技巧(2024已更新)(哔哩哔哩)是一款可以让一...
二分钟了解!微扑克插件透明挂黑... 自定义新版系统规律,只需要输入自己想要的开挂功能,一键便可以生成出专用辅助器,不管你是想分享给你好友...
总算了解!aapoker外挂透... 总算了解!aapoker外挂透明挂!aapoker外挂辅助器助手(2023已更新)(哔哩哔哩)是一款...
总算清楚!微扑克代打透明挂脚本... 总算清楚!微扑克代打透明挂脚本!微扑克代打透视辅助器(2021已更新)(哔哩哔哩)是一款可以让一直输...
新2024版!wpk外挂APP... 新2024版!wpk外挂APP透明挂!wpk外挂辅助工具(2020已更新)(哔哩哔哩);1、超多福利...
推荐几款新版!wepoke a... 推荐几款新版!wepoke app软件透明挂!wepoke app透视辅助器(2020已更新)(哔哩...
推荐十款!wpk机器人软件透明... 推荐十款!wpk机器人软件透明挂!wpk机器人辅助神器(2020已更新)(哔哩哔哩)是一款可以让一直...
揭秘关于!wpk插件透明挂辅助... 揭秘关于!wpk插件透明挂辅助器!wpk插件辅助透视(2024已更新)(哔哩哔哩)是一款可以让一直输...
玩家必备攻略!wpk机器人透明... 玩家必备攻略!wpk机器人透明挂脚本!wpk机器人辅助透视(2024已更新)(哔哩哔哩);一、wpk...