merkle-tree - merkletreejs 方法 getHexProof 不起作用?
问题描述
我正在尝试使用 merkletreejs 库测试 merkle 证明,但我不知道为什么会这样
const tree = new MerkleTree(leaves, SHA256)
const root = tree.getHexRoot()
const leaf = SHA256('a')
const proof = tree.getProof(leaf) // РАБОТАЕТ
console.log(tree.verify(proof, leaf, root)) // true
但这不是吗?
const tree = new MerkleTree(leaves, SHA256)
const root = tree.getHexRoot()
const leaf = SHA256('a')
const proof = tree.getHexProof(leaf)
console.log(tree.verify(proof, leaf, root)) // false
解决方案
似乎它需要一些额外的代码才能工作。此代码有效:
const { MerkleTree } = require('merkletreejs')
const sha1 = require('crypto-js/sha1')
const leaves = [
'd89f84d948796605a413e196f40bce1d6294175d',
'32f04c7f572bf75a266268c6f4d8c92731dc3b7f',
'b80b52d80f5fe940ac2c987044bc439e4218ac94',
'1553c75a1d637961827f4904a0955e57915d8310'
]
const tree = new MerkleTree(leaves, sha1, {
sortLeaves: true,
sortPairs: true
})
const root = tree.getHexRoot()
const leaf = 'b80b52d80f5fe940ac2c987044bc439e4218ac94'
const proof = tree.getHexProof(leaf)
console.log(tree.verify(proof, leaf, root))
推荐阅读
- ios - 推送通知 - 来自 Today Extension - iOS
- python - 对象之间通配符匹配的简洁方法?
- mysql - 此代码显示用户列表 bt 如何将其转换为 Nodejs 和 mysql 中的 MVC 模型?
- angularjs - 根据条件angularjs显示视图输入字段
- android - RadioButton 状态和按钮验证
- c# - Office365 - 使用 C# 列出用户
- python-3.x - 使用二维嵌套字典中的 if/else 语句进行列表理解循环
- node.js - nodejs到mosquitto raspberry pi pub sub不起作用
- java - PostgreSQL - 找不到适用于 JDBC 的驱动程序
- javascript - AJAX - JSON 未定义(jQuery、NodeJS)