addressed comments

This commit is contained in:
Nicholas Ward 2022-09-09 12:31:29 -07:00
parent 83c959d91e
commit e482bc7f0c
4 changed files with 12 additions and 33 deletions

View File

@ -10,7 +10,6 @@ plonky2_util = { path = "../util" }
eth-trie-utils = { git = "https://github.com/mir-protocol/eth-trie-utils.git", rev = "dd3595b4ba7923f8d465450d210f17a2b4e20f96" }
maybe_rayon = { path = "../maybe_rayon" }
anyhow = "1.0.40"
ascii = "1.0.0"
env_logger = "0.9.0"
ethereum-types = "0.14.0"
hex = { version = "0.4.3", optional = true }

View File

@ -136,13 +136,7 @@ sha2_compression_loop:
// stack: sha2_constants_k + 4*i, W[i], a[i], b[i], c[i], d[i], e[i], f[i], g[i], h[i], num_blocks, scratch_space_addr, message_schedule_addr, i, retdest
%mload_kernel_code_u32
// stack: K[i], W[i], a[i], b[i], c[i], d[i], e[i], f[i], g[i], h[i], num_blocks, scratch_space_addr, message_schedule_addr, i, retdest
DUP10
// stack: h[i], K[i], W[i], a[i], b[i], c[i], d[i], e[i], f[i], g[i], h[i], num_blocks, scratch_space_addr, message_schedule_addr, i, retdest
DUP10
// stack: g[i], h[i], K[i], W[i], a[i], b[i], c[i], d[i], e[i], f[i], g[i], h[i], num_blocks, scratch_space_addr, message_schedule_addr, i, retdest
DUP10
// stack: f[i], g[i], h[i], K[i], W[i], a[i], b[i], c[i], d[i], e[i], f[i], g[i], h[i], num_blocks, scratch_space_addr, message_schedule_addr, i, retdest
DUP10
%stack ((start: 6), e, f, g, h, (end: 5)) -> (e, f, g, h, start, e, f, g, h, end)
// stack: e[i], f[i], g[i], h[i], K[i], W[i], a[i], b[i], c[i], d[i], e[i], f[i], g[i], h[i], num_blocks, scratch_space_addr, message_schedule_addr, i, retdest
%sha2_temp_word1
// stack: T1[i], a[i], b[i], c[i], d[i], e[i], f[i], g[i], h[i], num_blocks, scratch_space_addr, message_schedule_addr, i, retdest

View File

@ -9,6 +9,11 @@ global sha2_store:
PUSH 1
// stack: addr=1, counter=num_bytes, x[0], x[1], x[2], ... , x[num_bytes-1], retdest
sha2_store_loop:
// stack: addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest
DUP2
// stack: counter, addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest
ISZERO
%jumpi(sha2_store_end)
// stack: addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest
DUP1
// stack: addr, addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest
@ -20,18 +25,13 @@ sha2_store_loop:
// stack: counter, addr, ... , x[num_bytes-1], retdest
%decrement
// stack: counter-1, addr, ... , x[num_bytes-1], retdest
DUP1
// stack: counter-1, counter-1, addr, ... , x[num_bytes-1], retdest
ISZERO
%jumpi(sha2_store_end)
// stack: counter-1, addr, ... , x[num_bytes-1], retdest
SWAP1
// stack: addr, counter-1, ... , x[num_bytes-1], retdest
%increment
// stack: addr+1, counter-1, ... , x[num_bytes-1], retdest
%jump(sha2_store_loop)
sha2_store_end:
// stack: counter=0, addr, retdest
// stack: addr, counter, retdest
%pop2
// stack: retdest
%jump(sha2_pad)

View File

@ -1,9 +1,7 @@
use std::str::FromStr;
use anyhow::Result;
use ascii::AsciiStr;
use ethereum_types::U256;
use rand::distributions::Alphanumeric;
use rand::{thread_rng, Rng};
use sha2::{Digest, Sha256};
@ -17,24 +15,14 @@ fn test_sha2() -> Result<()> {
let mut rng = thread_rng();
let num_bytes = rng.gen_range(1..10000);
let message: String = rng
.sample_iter(&Alphanumeric)
.take(num_bytes)
.map(char::from)
.collect();
dbg!(num_bytes);
let num_bytes = rng.gen_range(0..10000);
let message: Vec<u8> = (0..num_bytes).map(|_| rng.gen()).collect();
let mut hasher = Sha256::new();
hasher.update(message.clone());
let expected = format!("{:02X}", hasher.finalize());
let bytes: Vec<U256> = AsciiStr::from_ascii(&message)
.unwrap()
.as_bytes()
.iter()
.map(|&x| U256::from(x as u32))
.collect();
let bytes: Vec<U256> = message.iter().map(|&x| U256::from(x as u32)).collect();
let mut initial_stack = vec![U256::from(num_bytes)];
initial_stack.extend(bytes);
@ -42,13 +30,11 @@ fn test_sha2() -> Result<()> {
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!("{:02X}", result);
dbg!(expected);
dbg!(actual);
assert_eq!(expected, actual);
Ok(())
}