前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >比特币中MerkleTree默克尔树的构造

比特币中MerkleTree默克尔树的构造

作者头像
深蓝studyzy
发布2022-06-16 16:21:15
8180
发布2022-06-16 16:21:15
举报
文章被收录于专栏:深蓝居深蓝居

有点比特币基础的应该都知道,在一个区块的区块头中有一个字段叫RootHash,这个根哈希是该区块中所有交易构建默克尔树之后计算的树根哈希。但是基本上所有的文章都只说到如果交易数不是偶数个的时候需要补齐,但是具体怎么补齐呢?下面简单说明一下,以解这个细节上的疑惑。

一、3个交易时

如果只有3个交易Tx1,Tx2,Tx3,那么在构造默克尔树的时候,只需要把最后的那个Tx3和自己再算相加,计算Hash33即可。如图:

Tx3
Tx3

二、5个交易时

如果是有4个交易,那最简单,没什么好说的,接下来说如果有5个交易的情形,那么这里就需要做多次自己和自己相加,然后计算上一级哈希的情况,具体计算如图:

Tx5
Tx5

三、6个交易时

那么如果有6个交易的时候,是把Tx6复制多次进行填充吗?不是的!!!而是在计算的过程中遇到单个Hash的时候进行重复,也就是对H56就行重复,所以实际上是把Tx5和Tx6进行了填充,如图:

UntitledImage
UntitledImage

总之在计算默克尔树的根哈希时,都是简单的从下到上层层推进,每一层在算的时候如果下面的哈希是奇数,就复制一个哈希,在5个交易时,计算H55就是复制了一份H5,然后上一层计算H5555的时候下面又是奇数,所以复制了一份H55。同理在计算6个交易的默克尔树时,算H5656时,因为下面只有一个H56,所以复制了一份H56。对于更大量的交易数的时候,处理逻辑都是这样的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、3个交易时
  • 二、5个交易时
  • 三、6个交易时
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档