From 28f980744293aa5c8bddaa0e3a3a04c567204574 Mon Sep 17 00:00:00 2001 From: Dmitry Vagner Date: Wed, 21 Sep 2022 16:49:46 -0700 Subject: [PATCH] 0xdeadbeef --- evm/src/cpu/kernel/asm/ripemd/ripemd.asm | 2 +- evm/src/cpu/kernel/tests/ripemd.rs | 46 +++++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/evm/src/cpu/kernel/asm/ripemd/ripemd.asm b/evm/src/cpu/kernel/asm/ripemd/ripemd.asm index 156dc496..917ef937 100644 --- a/evm/src/cpu/kernel/asm/ripemd/ripemd.asm +++ b/evm/src/cpu/kernel/asm/ripemd/ripemd.asm @@ -80,7 +80,7 @@ process: %shl_const(96) OR // stack: e' d' c' b' a', VARS - %stack (result, VARS: 3) -> (0xdeadbeef, result) + %stack (result, VARS: 3, fin) -> (fin, result) // stack: 0xdeadbeef, result JUMP diff --git a/evm/src/cpu/kernel/tests/ripemd.rs b/evm/src/cpu/kernel/tests/ripemd.rs index 60b2dbb8..845c665f 100644 --- a/evm/src/cpu/kernel/tests/ripemd.rs +++ b/evm/src/cpu/kernel/tests/ripemd.rs @@ -1,3 +1,4 @@ +use std::str::FromStr; use anyhow::Result; use ethereum_types::U256; @@ -12,7 +13,7 @@ fn test_ripemd() -> Result<()> { let kernel = combined_kernel(); let input: Vec = vec![ - 26 , 0x61, 0x62, + 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, @@ -24,6 +25,7 @@ fn test_ripemd() -> Result<()> { stack_init.push(U256::from_str("0xdeadbeef").unwrap()); + let stack_result = run( &kernel.code, kernel.global_labels["ripemd_alt"], @@ -37,3 +39,45 @@ fn test_ripemd() -> Result<()> { Ok(()) } + + +// use std::str::FromStr; + +// use anyhow::Result; +// use ethereum_types::U256; +// use rand::{thread_rng, Rng}; +// use sha2::{Digest, Sha256}; + +// use crate::cpu::kernel::aggregator::combined_kernel; +// use crate::cpu::kernel::interpreter::run; + +// #[test] +// fn test_sha2() -> Result<()> { +// let kernel = combined_kernel(); +// let sha2 = kernel.global_labels["sha2"]; + +// let mut rng = thread_rng(); + +// let num_bytes = rng.gen_range(0..10000); +// let message: Vec = (0..num_bytes).map(|_| rng.gen()).collect(); + +// let mut hasher = Sha256::new(); +// hasher.update(message.clone()); +// let expected = format!("{:X}", hasher.finalize()); + +// let bytes: Vec = message.iter().map(|&x| U256::from(x as u32)).collect(); + +// let mut initial_stack = vec![U256::from(num_bytes)]; +// initial_stack.extend(bytes); +// initial_stack.push(U256::from_str("0xdeadbeef").unwrap()); +// initial_stack.reverse(); + +// let after_sha2 = run(&kernel.code, sha2, initial_stack, &kernel.prover_inputs)?; +// let stack_after_sha2 = after_sha2.stack(); +// let result = stack_after_sha2[1]; +// let actual = format!("{:X}", result); + +// assert_eq!(expected, actual); + +// Ok(()) +// }