merkle树python实现

Merkle树是一种用于存储和验证数据完整性的数据结构。本文介绍了Merkle树的概念,包括其在存储哈希值方面的应用。当Merkle树中的叶子节点哈希值改变时,会触发从叶子到根节点路径上所有节点哈希值的更新。通过一个实例展示了当新增一个完整性信息时,如何影响到Merkle树的部分节点。文章还探讨了Python实现Merkle树的可能方法。
摘要由CSDN通过智能技术生成

merkle树

百度解释
博客解释

莫科尔树存储哈希值
一棵莫科尔树,树中每个叶子节点对应一个哈希值。
莫科尔树的高度为 h,那么每个莫科尔树能够记录 2**h个完整性摘要值。
每更新一个叶子节点,需要更新从叶子节点到根的这一路径上所有节点的哈希值。

如图 ,节点 1 和节点 2 已经存储了完整性信息,新完整性信息将保存在节点 3,并且由于节点 3 的值发生变化,导致需要重新计算节点 6 和节点 7 的哈希值。

在这里插入图片描述

实现

from algorithm.g_hash import G_hash

""""
l左节点
r右节点
p父节点
hash存储的hash值,每修改一次叶子节点向上更新
data其他数据
"""
class Node:
    def __init__(self):
        self.l=None
        self.r=None
        self.p=None
        self.hash="\\"
        self.data="\\"

    def change_data(self,data):
        self.data=data
        self.hash=G_hash(data)
        return self.hash

"""
init初始化树
root根节点
h树的高度,0代表只有根节点
leaf空余的叶子数
add()从root向下递归添加h层高的节点
creat()创建h高的树  (根节点没算)
update() 其实是从左到右向空余叶子添加数据
up_update()向上更新节点知道父节点
show2层次遍历树,显示
show2由show_tree()调用
sum()是返回根节点的所有点个数
"""

class merkle_tree:
    def __int__(self):
        self.root = None
        self.h=0
        self.leaf=0
    #     添加 h层树的节点
    def add(self,item,h):
        l= Node
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值