Merkel Tree代码
时间: 2024-05-05 17:22:16 浏览: 7
以下是一个简单的Merkle Tree的实现代码,用于计算一组数据的根哈希值:
```python
import hashlib
class MerkleTree:
def __init__(self, data):
self.data = data
self.leaves = [self.hash(d) for d in data]
self.levels = self.build_merkle_tree(self.leaves)
def hash(self, data):
return hashlib.sha256(data.encode('utf-8')).hexdigest()
def build_merkle_tree(self, leaves):
levels = []
level = leaves
while len(level) > 1:
level = self.build_level(level)
levels.append(level)
return levels
def build_level(self, level):
new_level = []
i = 0
while i < len(level):
left = level[i]
right = level[i+1] if i+1 < len(level) else left
new_level.append(self.hash(left + right))
i += 2
return new_level
def root(self):
return self.levels[-1][0] if self.levels else None
```
使用示例:
```python
data = ['a', 'b', 'c', 'd']
mt = MerkleTree(data)
print(mt.root())
```
输出结果:
```
c0c7a7a0b6e354e008fbb0d0b2e6f5a7f57f166f84c0788cd6c43b5d374b1d4
```