1

在构建 Substrate 运行时模块时,我可以访问哪些哈希算法?

我可以导入其他哈希算法以在 Substrate 运行时模块中使用吗?

4

1 回答 1

1

在撰写本文时,SubstrateHashingApi在 crate 中提供了一个 trait,core/sr-io它提供了以下哈希函数:

export_api! {
    pub(crate) trait HashingApi {
        /// Conduct a 256-bit Keccak hash.
        fn keccak_256(data: &[u8]) -> [u8; 32] ;

        /// Conduct a 128-bit Blake2 hash.
        fn blake2_128(data: &[u8]) -> [u8; 16];

        /// Conduct a 256-bit Blake2 hash.
        fn blake2_256(data: &[u8]) -> [u8; 32];

        /// Conduct four XX hashes to give a 256-bit result.
        fn twox_256(data: &[u8]) -> [u8; 32];

        /// Conduct two XX hashes to give a 128-bit result.
        fn twox_128(data: &[u8]) -> [u8; 16];

        /// Conduct two XX hashes to give a 64-bit result.
        fn twox_64(data: &[u8]) -> [u8; 8];
    }
}

因为这些函数是为必须构建到 Wasm 的运行时编写的,所以它们必须在不使用标准 Rust 库 ( std) 的情况下进行编译。

如果你想在你的 Substrate 运行时引入新的哈希算法或任何新库,你必须确保它也可以在没有 的情况下构建std,但除此之外,我相信天空是极限。

于 2019-05-28T11:26:17.713 回答