问题标签 [merkle-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
75 浏览

python - 我曾经使用的 Merkle Tree 库即使在安装后也会出现此错误.. ModuleNotFoundError: No module named 'mtree'

我在我的研究论文实现中使用了一个名为“mtree”的库。现在,当我尝试导入它时,会出现以下错误

ModuleNotFoundError:没有名为“mtree”的模块

我试图用 pip install mtree 重新安装它。它安装没有任何问题,但是我不能使用它的任何功能。有人可以帮忙吗?

该库的功能之一是 mtree.create_tree('')

0 投票
1 回答
98 浏览

algorithm - 比较两棵 Merkle 树的时间复杂度是多少?

我有一个简单的递归函数,它比较两个默克尔树并累积叶节点中的差异。但是,我无法衡量它的时间复杂度。具体来说,我想看看它与比较两个哈希表或两个 BST 相比如何。在这种情况下,一组叶子是一行,它们共享一个 rowid。一组行构成了整个 merkle 树。在下面的代码中,我只是在叶级别累积差异。

时间复杂度:

在最好的情况下,我看到这是一个常量操作,因为两棵树的根哈希是相同的。在最坏的情况下,比较次数是所有叶节点的总数。

问题:

我可以感觉到 merkle 树比普通哈希表做得更好,因为它能够更快地修剪树。但是,我无法用大 O 术语来表示这一点。

一个类似的哈希表实现将是对第二个哈希表进行 rowid 遍历和恒定时间查找。一旦找到 rowid 的值,如果叶级数据存储为哈希表,您可能会对每个叶进行线性比较。

0 投票
0 回答
369 浏览

javascript - MerkleProof 智能合约和 Javascript 中的不同哈希值

我在智能合约和 Javascript(测试)中为 MerkleProof 获得了不同的哈希值

智能合约

令牌测试

它仅在散列 msg.sender 时有效,但不适用于连接数据和单个 uint256。我尝试使用带有以太坊地址和数量的 merkletree.js 创建一个 MerkleTree。MerkelTree 在链下创建(例如 node.js)并在链上验证。

有任何想法吗?

0 投票
0 回答
46 浏览

blockchain - 如何在以太坊上获得 merkleProof?

在此处输入图像描述 我与以太坊上的合约进行交互。我在哪里得到bytes32[] _merkleProof

0 投票
1 回答
232 浏览

reactjs - keccak.js Uncaught ReferenceError: 缓冲区未定义

我在 ReactJS 中有一个小脚本:

可悲的是,执行脚本时出现此错误:

所以错误就在那里:

但是很遗憾我找不到解决方案,你们能帮帮我吗?谢谢 !

0 投票
0 回答
197 浏览

javascript - 使用 Keccak256 在 python 中进行 Merkle 证明

我正在尝试使用 Merkle 树为 NFT 创建白名单以节省气体成本。我在这里看到了一个很棒的实现,用 javascript,但我想用 Python 来做。似乎我无法使用 keccak 哈希创建 merkle 树,我认为对于 etheruem 区块链来说这是必要的。Open-zeppelin 的MerkleProof.sol使用 kaccack 哈希来验证叶子。我猜我可以将其更改为使用 sha256,但我不喜欢这些快速修复。

这是我在下面尝试的:

它确实返回一棵 Merkle 树,但使用 sha256 进行散列,因为 pymerkle 没有 keccak 散列。(上面的 keccak 库用于对钱包进行哈希处理)。运行它会返回与 JS 中不同的 Merkle 树。我什至不确定差异是否是因为散列。

这就是我想验证的可靠性:

0 投票
0 回答
6 浏览

blockchain - 以太坊黄皮书澄清 - Merkle Patricia Tree

我有一个关于黄皮书最新出版物附录 D 的快速问题。这与c的定义有关,特别是在图 (202) 的第二行,我正在努力解释这种解释的where j = max{...}部分。我想知道是否有人可以帮助我解决这个问题。谢谢!

0 投票
1 回答
15 浏览

mysql - 无法在 Trillian 日志 mysql 数据库中创建树

我正在使用本地 kubernetes 集群(使用 istio)将我的应用程序与 Trillian 集成。我已经部署了一个 mysql 数据库以及一个个性、一个服务器和一个签名者,但我无法使用此处的命令创建树(https://github.com/google/trillian/blob/master/examples/deployment /kubernetes/provision_tree.sh#L27 )

echo TREE=$(curl -sb -X POST ${LOG_URL}/v1beta1/trees -d '{ "tree":{ "tree_state":"ACTIVE", "tree_type":"LOG", "hash_strategy":"RFC6962_SHA256", "signature_algorithm":"ECDSA", "max_root_duration":"0", "hash_algorithm":"SHA256" }, "key_spec":{ "ecdsa_params":{ "curve":"P256" } } }') 当我执行命令时,我得到404 page not found结果。

trillian-server 的 .yaml 文件定义如下:

服务正在运行:

这个部署有什么问题吗?

0 投票
0 回答
5 浏览

smartcontracts - MerkleTreeJS - 白名单验证的叶子解析错误

在铸造 NFT 时,我们正在使用 MerkleTreeJS 来节省我们的社区 Gas 费。但是,当我们将证明发送到合约时,我们会收到以下错误:

您知道我们如何正确解析数组吗?

这是我们的代码:

0 投票
1 回答
22 浏览

javascript - merkletreejs 方法 getHexProof 返回空字符串

我正在尝试为 NFT 集合创建一个白名单 merkle 树,所以我尝试了以下代码:

但是证明总是空的,为什么?

PS:当我尝试记录它时,叶子看起来像这样:��_�vD��CT,��sh��+o�j����