北大肖臻区块链公开课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中。

        

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...