⽤ Javascript 实现默克尔树
时间: 2024-03-13 22:42:55 浏览: 17
好的,默克尔树是一种哈希树,它的叶子节点是数据块的哈希值,每个非叶子节点是其子节点的哈希值的哈希值。下面是使用 JavaScript 实现默克尔树的简单代码:
```javascript
const crypto = require('crypto');
// 生成哈希值
function generateHash(data) {
const hash = crypto.createHash('sha256');
hash.update(data);
return hash.digest('hex');
}
// 构建默克尔树
function buildMerkleTree(leaves) {
let tree = leaves.slice(); // 复制叶子节点
while (tree.length > 1) {
let newLevel = [];
for (let i = 0; i < tree.length; i += 2) {
let left = tree[i];
let right = i + 1 < tree.length ? tree[i + 1] : left;
let newNode = generateHash(left + right);
newLevel.push(newNode);
}
tree = newLevel;
}
return tree[0];
}
// 示例
const leaves = ['a', 'b', 'c', 'd'].map(generateHash);
const root = buildMerkleTree(leaves);
console.log(root); // 输出树根哈希值
```
该代码生成了一个示例默克尔树,其中叶子节点是字符串 `'a'`、`'b'`、`'c'`、`'d'` 的哈希值,使用 SHA256 算法进行哈希,然后将这些哈希值构建成树并计算出根的哈希值。