From 8fb1e4e760089401a5f992f3450cb4da5ea4fc54 Mon Sep 17 00:00:00 2001 From: BGluth Date: Wed, 21 Sep 2022 15:40:11 -0600 Subject: [PATCH] Added a mapping between code hashes and contract byte code Added a mapping between an account's `codehash` field and the actual contract byte code in `GenerationInputs`. --- evm/src/generation/mod.rs | 8 +++++++- evm/tests/transfer_to_new_addr.rs | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/evm/src/generation/mod.rs b/evm/src/generation/mod.rs index baf2ec32..1d2fbf30 100644 --- a/evm/src/generation/mod.rs +++ b/evm/src/generation/mod.rs @@ -1,5 +1,7 @@ +use std::collections::HashMap; + use eth_trie_utils::partial_trie::PartialTrie; -use ethereum_types::Address; +use ethereum_types::{Address, H256}; use plonky2::field::extension::Extendable; use plonky2::field::polynomial::PolynomialValues; use plonky2::field::types::Field; @@ -41,6 +43,10 @@ pub struct GenerationInputs { /// storage tries, and nodes therein, that will be accessed by these transactions. pub storage_tries: Vec<(Address, PartialTrie)>, + /// Mapping between smart contract code hashes and the contract byte code. + /// All account smart contracts that are invoked will have an entry present. + pub contract_code: HashMap>, + pub block_metadata: BlockMetadata, } diff --git a/evm/tests/transfer_to_new_addr.rs b/evm/tests/transfer_to_new_addr.rs index 1cd79194..82f4938b 100644 --- a/evm/tests/transfer_to_new_addr.rs +++ b/evm/tests/transfer_to_new_addr.rs @@ -1,3 +1,5 @@ +use std::collections::HashMap; + use eth_trie_utils::partial_trie::PartialTrie; use hex_literal::hex; use plonky2::field::goldilocks_field::GoldilocksField; @@ -31,6 +33,7 @@ fn test_simple_transfer() -> anyhow::Result<()> { transactions_trie: PartialTrie::Empty, receipts_trie: PartialTrie::Empty, storage_tries: vec![], + contract_code: HashMap::new(), block_metadata, };