Skip to the editor

poseidon_guest.rs

poseidon_guest.rs

// Source:  github.com/babybear-labs/benchmark
// File:    risc-zero/methods/poseidon/src/main.rs, lines 1-29
// Commit:  992bbf7 (pinned)
// Link:    https://github.com/babybear-labs/benchmark/blob/992bbf786b96594ea82ac99b8eac5b2b8aa34284/risc-zero/methods/poseidon/src/main.rs#L1-L29

#![no_main]
#![no_std]

extern crate alloc;

use core::hint::black_box;

use alloc::str::FromStr;
use risc0_zkvm::guest::env;
use starknet_crypto::poseidon_hash_single;
use starknet_types_core::felt::Felt;

risc0_zkvm::guest::entry!(main);

pub fn main() {
    let n: u32 = env::read();
    black_box(bench_poseidon_n(n));
}

fn bench_poseidon_n(n_thousands: u32) -> Felt {
    let felt = Felt::from_str("1").unwrap();
    let mut last_hash = felt;
    
    for _ in 0..(n_thousands * 1) {
        last_hash = poseidon_hash_single(felt);
    }
    
    last_hash
}