На момент написания этого поста Substrate предоставляет черту HashingApi
в ящике 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
, но, кроме этого, я считаю, что небо - это предел.