加密

OpenZeppelin Rust Contracts 提供了一个 crate,用于区块链环境中常见的加密过程。 以下文档记录了可用的功能。

验证 Merkle 证明

开发者可以构建一个链下的 Merkle 树,通过使用 Merkle 证明来验证一个元素(叶子)是否属于一个集合。 这项技术被广泛用于创建白名单(例如,用于空投)和其他高级用例。

提示:OpenZeppelin Contracts 提供了一个 JavaScript 库,用于在链下构建树和生成证明。

MerkleProof 提供了:

fn verify(&self, proof: Vec<B256>, root: B256, leaf: B256) -> bool {
    let proof: Vec<[u8; 32]> = proof.into_iter().map(|m| *m).collect();
    Verifier::<KeccakBuilder>::verify(&proof, *root, *leaf)
}

请注意,这些函数使用 keccak256 作为哈希算法,但是我们的库也提供了泛型对应物:https://docs.rs/openzeppelin-crypto/0.3.0-alpha.1/openzeppelin_crypto/merkle/struct.Verifier.html#method.verify_with_builder[verify_with_builder] 和 verify_multi_proof_with_builder

我们还提供了一个适配器 hash 模块,用于将您自己的哈希器与它们结合使用,该模块类似于 Rust 标准库的 API。