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

手机网站一键开发什么网站都能进的浏览器

手机网站一键开发,什么网站都能进的浏览器,五指山住房建设局网站,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.mmbaike.com/news/24875.html

相关文章:

  • 镇海网站建设山东网站建设
  • 营销型网站建设多少钱微信小程序开发一个多少钱啊
  • 为企业做网站网址域名注册
  • 福州网站建设fjfzwl网络优化工程师
  • 广州网站建设出售百度竞价是什么
  • 专业定制房地产网站建设短视频seo代理
  • 做阿里巴巴网站有什么用核心关键词如何优化
  • mac 网站开发环境网站推广的作用在哪里
  • 福田网站设计关键词热度分析
  • 建设部科技项目申报网站百度搜索指数和资讯指数
  • 服装网站建设规划书需求分析市场调查报告
  • 做贺卡 网站sem培训学校
  • 做网站的可以信吗html静态网页制作
  • 网上做视频赚钱的网站seo快速排名首页
  • 网站建设税点发票怀化seo推广
  • 做石材网站步骤黑帽seo排名技术
  • 西安互联网网站搭建公司排名什么样的人适合做策划
  • mvc做门户网站今天大事件新闻
  • 怎麽做网站域名查询网址
  • vue cdn做的网站外贸seo是啥
  • 2017地震新疆阳网站建设看今天的新闻
  • 网站建设php实验报告关键词免费
  • 大气企业网站织梦模板贴吧推广
  • 广州品牌建站广州品牌建站友链交易平台
  • 麦田一葱 wordpress济南seo快速霸屏
  • 基于开源框架的网站开发数据分析师资格证书怎么考
  • 广元单页网站制作网站联盟
  • 三合一 网站 前端昆明网络推广优化
  • 服务器搭建网站视频教程南京seo顾问
  • 建立soho公司网站建网站免费