#block-header #arweave #pow #validation #hash #merkle #difficulty

arweave_rs_validator

对Arweave区块头部进行PoW预验证的方法,以验证其完整性

1个不稳定版本

0.1.0 2024年2月14日

#6#arweave

MIT/Apache

125KB
2K SLoC

验证器

此库包含验证Arweave区块是否由工作量证明共识产生并满足或超过其在产生时的网络难度设置的必要组件。

因为Arweave使用“有用工作量证明”机制,其中用于产生区块的哈希值是从Arweave的历史数据中计算得出的,因此验证共识的步骤比简单地比较哈希值更为复杂。

验证测试

要验证Arweave区块头部,您需要正在验证的区块头部以及之前的区块头部。

步骤如下

https://github.com/ThePeopleOfTheNetwork/arweave_rs/blob/ee2fa244de829b78a02517784abb161247790cb5/validator/src/lib.rs#L18-L157

非常感谢 janekolszak 对计算 block_hash 用于验证的 go工作。还要感谢 CalebEverett 提供的默克尔树构建块,我从 arloader 借用了这些块。这两者对于完成验证步骤至关重要。

默克尔证明

区块头部中有两个默克尔证明。分别是 tx_pathdata_pathtx_path 是由所有交易的数据根组成的默克尔树中的路径,它证明属于该块的交易是块的一部分。 data_path 是由交易中的所有块组成的默克尔树中的路径。它将交易的 data_root 路径映射到特定的块。在这种情况下,该块是作为 poapoa2 数据的一部分提供的。

依赖项

~15–32MB
~540K SLoC