当前位置: 首页 > news >正文

手机网站一键开发沧州网络推广公司

手机网站一键开发,沧州网络推广公司,项目网络的关键路径,如何在aws上创建wordpress简单的Hash函数介绍 在进入Merkle树之前,先简单地介绍一下哈希函数。假设有下面的哈希函数: valueHash(value1,value2) v a l u e H a s h ( v a l u e 1 , v a l u e 2 ) 其中, value v a l u e 是一个定长的数值,作为输入 v…

简单的Hash函数介绍

在进入Merkle树之前,先简单地介绍一下哈希函数。假设有下面的哈希函数:

value=Hash(value1,value2) v a l u e = H a s h ( v a l u e 1 , v a l u e 2 )

其中, value v a l u e 是一个定长的数值,作为输入 value1 v a l u e 1 value2 v a l u e 2 的哈希值。 value v a l u e 的特点是,如果 value1 v a l u e 1 或者 value2 v a l u e 2 中有一个值发生了变化,那么它的数值将会与原来完全不一致,而且这种不一致的变化是没有任何规律可言的。同时,我们也不可能根据 value v a l u e 的值反推出 value1 v a l u e 1 value2 v a l u e 2 的数值。哈希函数的特点保证了对于任意的两个输入组合,都有唯一的输出数值与之对应,这个特性可以用于校验输入函数参数的性质。

Merkle树的基本架构

Merkle树一般是一个满二叉树,当然,某些情况下也可以是 k k 叉的。一棵Merkle树的结构如下:
图1
红色的是根结点,灰色的是非叶子结点,黄色的是叶子结点。叶子结点的数值是直接根据数据块的值与0作为参数,经过Hash运算得来的,而灰色结点的值是以两个孩子结点的hash值作为输入,经过Hash运算得来的。

下面给出一棵简单的教程:
图2
不过,这里的Hash函数与我们介绍的有一些差异。图片中使用了孩子结点哈希值之和作为输入,而我们不进行求和,直而是直接输入两个孩子结点的参数。把图中叶子结点的哈希函数改成:

Mi=H(0,mi)

非叶子结点哈希函数改成:

Mi,j=H(Mi,Mj) M i , j = H ( M i , M j )

其中 i,j i , j 是该结点的两个孩子, Mi,Mj M i , M j 是两个孩子的哈希值。
如果出现需要处理的数据块是奇数个,只需要把这些数据块中的任意一个复制一份凑成偶数个就行,一般选择复制最后一个块。

综上可知,一棵Merkle树有如下特点:

  1. 叶子结点的值是实际数据块的Hash值。
  2. 每个非叶子结点的值,都是孩子结点的Hash值。根结点称为Merkle根
  3. 如果树是二叉树的话,称为二叉Merkle树,且二叉Merkle树一定是满二叉树(奇数叶子凑成偶数个)

给出复杂度的一些性质:
这里写图片描述

Merkle树的优势

很自然的,我们会想到一个问题,为什么使用Merkle树,而不是直接把所有叶子结点经过一次Hash计算之后,直接给出结论?比如像上面的介绍图中,共有16个叶子结点,那么总共需要进行16次Hash运算即可:

M0=H(0,m0)M1=H(M0,m1)M2=H(M1,m2)H15=H(M14,m15) M 0 = H ( 0 , m 0 ) M 1 = H ( M 0 , m 1 ) M 2 = H ( M 1 , m 2 ) ⋮ H 15 = H ( M 14 , m 15 )

用图表示为:
这里写图片描述
而如果使用Merkle树的话,会经过32次的哈希运算,这似乎与我们的常识不符合。

设想下面的一个场景:
A以上面的图片的形式给B发送了一个处理完的Hash数据,就是上面的那个红色Root数据。现在A同学要向B同学证明 M6 M 6 的数据没有被更改过,那么A需要向B发送 M6 M 6 M15 M 15 的所有数据,B需要把这些数据重新进行Hash运算才可以验证数据的正确性。显然,上面操作的复杂度是 O(n) O ( n ) 。虽然在第一次加密的时候运算简单了,但是给后期验证带来计算的麻烦。而在实际的区块链中,系统进行验证的次数要远远多于加密运算,因此这不是一个好的方式。

然后我们再来看使用Merkle树的优势:
这里写图片描述
同样是进行 M6 M 6 的数据验证,A仅需要给B发送图中蓝色的结点即可。在二叉树的情况下,它的计算复杂度仅仅是 O(log2m) O ( log 2 ⁡ m ) m m <script type="math/tex" id="MathJax-Element-3682">m</script>是数据块的个数,因此把验证数据的复杂度从线性时间降低到了对数时间。同时,由于验证数据集的简化,我们还可以节约出大量的内存空间。综上所述,我们使用Merkle树这种结构来组织区块链的有关数据。

http://www.zhongyajixie.com/news/1472.html

相关文章:

  • 给一个企业做网站东莞网站建设方案外包
  • 医院响应式网站建设方案成都搜狗seo
  • 界首做网站杭州最好的seo公司
  • 赣榆网站建设xxiaoseo怎么样关键词优化
  • 做网站后台搭建都用什么数据分析师培训机构推荐
  • 深圳东门新冠seo研究中心怎么样
  • 做任务的电脑网站p2p万能搜索引擎
  • 阜阳做网站哪家好网络销售怎么找客户
  • 东莞 网站制作宁波网站推广联系方式
  • ps联盟网站竞价排名采用什么计费方式
  • 专业做网站排名的人软文推广案例
  • 电商网站设计外贸谷歌推广怎么样
  • 做网站能用假图片吗市场监督管理局职责范围
  • 英文阿里巴巴网站建设sem投放是什么意思
  • dnf做代练哪个网站好点山东seo网页优化外包
  • 网站建设哪里有学销售找客户的方法
  • 用php做网站难吗如何软件网站优化公司
  • 永久免费手机网站自助建站线上商城的推广方案
  • 无锡网站推广优化费用中国最权威的网站排名
  • 怀宁建设局网站百度app最新版本
  • web前端开发难不难学如何优化网络连接
  • 东莞建设一个网站深圳网站建设微信开发
  • 乐云seo商城网站建设网页设计与制作项目教程
  • 哪个网站是专门做男人衣服的搜关键词网站
  • wordpress 分类排序插件百度搜索关键词优化
  • 如何做120急救网站雅虎搜索
  • 团购网站seo综合查询是什么意思
  • 网站空间 ASP神点击恶意点击软件
  • 千元低价网站建设百度竞价开户联系方式
  • 企业B2B网站建设与运营的重点最新的疫情情况