Version: dev

Hash methods

sha256​

Given an array of bytes, returns the resulting sha256 hash.

``fn sha256(_input : [u8]) -> [u8; 32]``

example:

``fn main() {    let x = [163, 117, 178, 149]; // some random bytes    let hash = std::hash::sha256(x);}``
info

blake2s​

Given an array of bytes, returns an array with the Blake2 hash

``fn blake2s(_input : [u8]) -> [u8; 32]``

example:

``fn main() {    let x = [163, 117, 178, 149]; // some random bytes    let hash = std::hash::blake2s(x);}``
info

pedersen​

Given an array of Fields, returns the Pedersen hash.

``fn pedersen(_input : [Field]) -> [Field; 2]``

example:

``fn main() {    let x = [163, 117, 178, 149]; // some random bytes    let hash = std::hash::pedersen(x);}``
info

keccak256​

Given an array of bytes (`u8`), returns the resulting keccak hash as an array of 32 bytes (`[u8; 32]`). Specify a message_size to hash only the first `message_size` bytes of the input.

``fn keccak256<N>(_input : [u8; N], _message_size: u32) -> [u8; 32]``

example:

``fn main() {    let x = [163, 117, 178, 149]; // some random bytes    let message_size = 4;    let hash = std::hash::keccak256(x, message_size);}``
info

poseidon​

Given an array of Fields, returns a new Field with the Poseidon Hash. Mind that you need to specify how many inputs are there to your Poseidon function.

``// example for hash_1, hash_2 accepts an array of length 2, etcfn hash_1(input: [Field; 1]) -> Field``

example:

``fn main(){  let hash1 = std::hash::poseidon::bn254::hash_2([1, 2]);  assert(hash1 == 0x115cc0f5e7d690413df64c6b9662e9cf2a3617f2743245519e19607a4417189a);}``

mimc_bn254 and mimc​

`mimc_bn254` is `mimc`, but with hardcoded parameters for the BN254 curve. You can use it by providing an array of Fields, and it returns a Field with the hash. You can use the `mimc` method if you're willing to input your own constants:

``fn mimc<N>(x: Field, k: Field, constants: [Field; N], exp : Field) -> Field``

otherwise, use the `mimc_bn254` method:

``fn mimc_bn254<N>(array: [Field; N]) -> Field``

example:

``fn main() {    let x = [163, 117, 178, 149]; // some random bytes    let hash = std::hash::mimc_bn254(x);}``

hash_to_field​

``fn hash_to_field<N>(_input : [Field; N]) -> Field {}``

Calculates the `blake2s` hash of the inputs and returns the hash modulo the field modulus to return a value which can be represented as a `Field`.

info