From 5881175dc41a90978433a30b485ce110559f6988 Mon Sep 17 00:00:00 2001 From: Pierrick Couderc Date: Wed, 4 Sep 2024 16:48:16 +0200 Subject: [PATCH 1/3] EVM/Kernel: add kernel crate --- etherlink/kernel_evm/Cargo.lock | 10 ++++++++++ etherlink/kernel_evm/Cargo.toml | 1 + etherlink/kernel_evm/runtime/Cargo.toml | 16 ++++++++++++++++ etherlink/kernel_evm/runtime/src/lib.rs | 3 +++ 4 files changed, 30 insertions(+) create mode 100644 etherlink/kernel_evm/runtime/Cargo.toml create mode 100644 etherlink/kernel_evm/runtime/src/lib.rs diff --git a/etherlink/kernel_evm/Cargo.lock b/etherlink/kernel_evm/Cargo.lock index 521fc99aebe9..7b0fb3e9f394 100644 --- a/etherlink/kernel_evm/Cargo.lock +++ b/etherlink/kernel_evm/Cargo.lock @@ -2198,6 +2198,16 @@ dependencies = [ "tezos-smart-rollup-debug", ] +[[package]] +name = "tezos-evm-runtime" +version = "0.1.0" +dependencies = [ + "tezos-smart-rollup-core", + "tezos-smart-rollup-debug", + "tezos-smart-rollup-host", + "tezos-smart-rollup-mock", +] + [[package]] name = "tezos-indexable-storage" version = "0.1.0" diff --git a/etherlink/kernel_evm/Cargo.toml b/etherlink/kernel_evm/Cargo.toml index 91885a04702b..4a1c3e4e525c 100644 --- a/etherlink/kernel_evm/Cargo.toml +++ b/etherlink/kernel_evm/Cargo.toml @@ -17,6 +17,7 @@ members = [ "indexable_storage", "logging", "storage", + "runtime", ] [workspace.dependencies] diff --git a/etherlink/kernel_evm/runtime/Cargo.toml b/etherlink/kernel_evm/runtime/Cargo.toml new file mode 100644 index 000000000000..e72fda7622ca --- /dev/null +++ b/etherlink/kernel_evm/runtime/Cargo.toml @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2024 Nomadic Labs +# +# SPDX-License-Identifier: MIT + +[package] +name = "tezos-evm-runtime" +version = "0.1.0" +edition = "2021" + +[dependencies] +tezos-smart-rollup-debug.workspace = true +tezos-smart-rollup-core.workspace = true +tezos-smart-rollup-host.workspace = true + +[dev-dependencies] +tezos-smart-rollup-mock.workspace = true diff --git a/etherlink/kernel_evm/runtime/src/lib.rs b/etherlink/kernel_evm/runtime/src/lib.rs new file mode 100644 index 000000000000..d208bf912d15 --- /dev/null +++ b/etherlink/kernel_evm/runtime/src/lib.rs @@ -0,0 +1,3 @@ +// SPDX-FileCopyrightText: 2024 Nomadic Labs +// +// SPDX-License-Identifier: MIT -- GitLab From e24b00b75766246ee8481bcb4d1d227e3ee89fce Mon Sep 17 00:00:00 2001 From: Pierrick Couderc Date: Wed, 4 Sep 2024 17:02:55 +0200 Subject: [PATCH 2/3] EVM/Kernel: move Runtime related module to runtime crate --- etherlink/kernel_evm/Cargo.lock | 2 ++ etherlink/kernel_evm/Cargo.toml | 1 + etherlink/kernel_evm/kernel/Cargo.toml | 1 + etherlink/kernel_evm/kernel/src/block.rs | 8 ++++---- etherlink/kernel_evm/kernel/src/block_in_progress.rs | 2 +- etherlink/kernel_evm/kernel/src/lib.rs | 9 +++------ etherlink/kernel_evm/runtime/Cargo.toml | 1 + .../{kernel => runtime}/src/internal_storage.rs | 0 etherlink/kernel_evm/runtime/src/lib.rs | 4 ++++ .../kernel_evm/{kernel => runtime}/src/mock_internal.rs | 0 .../kernel_evm/{kernel => runtime}/src/safe_storage.rs | 0 11 files changed, 17 insertions(+), 11 deletions(-) rename etherlink/kernel_evm/{kernel => runtime}/src/internal_storage.rs (100%) rename etherlink/kernel_evm/{kernel => runtime}/src/mock_internal.rs (100%) rename etherlink/kernel_evm/{kernel => runtime}/src/safe_storage.rs (100%) diff --git a/etherlink/kernel_evm/Cargo.lock b/etherlink/kernel_evm/Cargo.lock index 7b0fb3e9f394..547257c7131f 100644 --- a/etherlink/kernel_evm/Cargo.lock +++ b/etherlink/kernel_evm/Cargo.lock @@ -785,6 +785,7 @@ dependencies = [ "sha3", "softfloat", "tezos-evm-logging", + "tezos-evm-runtime", "tezos-indexable-storage", "tezos-smart-rollup", "tezos-smart-rollup-core", @@ -2202,6 +2203,7 @@ dependencies = [ name = "tezos-evm-runtime" version = "0.1.0" dependencies = [ + "sha3", "tezos-smart-rollup-core", "tezos-smart-rollup-debug", "tezos-smart-rollup-host", diff --git a/etherlink/kernel_evm/Cargo.toml b/etherlink/kernel_evm/Cargo.toml index 4a1c3e4e525c..a19731ec50d6 100644 --- a/etherlink/kernel_evm/Cargo.toml +++ b/etherlink/kernel_evm/Cargo.toml @@ -62,6 +62,7 @@ libsecp256k1 = { version = "0.7", default-features = false, features = [ tezos_ethereum = { path = "./ethereum" } evm-execution = { path = "./evm_execution" } tezos-evm-logging = { path = "./logging" } +tezos-evm-runtime = { path = "./runtime" } tezos-indexable-storage = { path = "./indexable_storage" } tezos-storage = { path = "./storage" } diff --git a/etherlink/kernel_evm/kernel/Cargo.toml b/etherlink/kernel_evm/kernel/Cargo.toml index 3da5ff8ca745..76d4b932fbf0 100644 --- a/etherlink/kernel_evm/kernel/Cargo.toml +++ b/etherlink/kernel_evm/kernel/Cargo.toml @@ -40,6 +40,7 @@ evm.workspace = true evm-execution.workspace = true tezos_ethereum.workspace = true tezos-evm-logging.workspace = true +tezos-evm-runtime.workspace = true tezos-indexable-storage.workspace = true tezos-storage.workspace = true diff --git a/etherlink/kernel_evm/kernel/src/block.rs b/etherlink/kernel_evm/kernel/src/block.rs index 4662f4c461fa..c44139bebf1d 100644 --- a/etherlink/kernel_evm/kernel/src/block.rs +++ b/etherlink/kernel_evm/kernel/src/block.rs @@ -15,8 +15,6 @@ use crate::configuration::Limits; use crate::delayed_inbox::DelayedInbox; use crate::error::Error; use crate::event::Event; -use crate::internal_storage::InternalRuntime; -use crate::safe_storage::{KernelRuntime, SafeStorage}; use crate::storage; use crate::upgrade; use crate::upgrade::KernelUpgrade; @@ -32,6 +30,8 @@ use primitive_types::{H160, H256, U256}; use tezos_ethereum::block::BlockFees; use tezos_ethereum::transaction::TransactionHash; use tezos_evm_logging::{log, Level::*}; +use tezos_evm_runtime::internal_storage::InternalRuntime; +use tezos_evm_runtime::safe_storage::{KernelRuntime, SafeStorage}; use tezos_smart_rollup::outbox::OutboxQueue; use tezos_smart_rollup_host::path::{Path, RefPath}; use tezos_smart_rollup_host::runtime::Runtime; @@ -425,9 +425,9 @@ pub fn produce( let at_most_one_block = host.store_has(&AT_MOST_ONE_BLOCK)?.is_some(); #[cfg(not(test))] - let mut internal_storage = crate::internal_storage::InternalStorage(); + let mut internal_storage = tezos_evm_runtime::internal_storage::InternalStorage(); #[cfg(test)] - let mut internal_storage = crate::mock_internal::MockInternal(); + let mut internal_storage = tezos_evm_runtime::mock_internal::MockInternal(); let mut safe_host = SafeStorage { host, internal: &mut internal_storage, diff --git a/etherlink/kernel_evm/kernel/src/block_in_progress.rs b/etherlink/kernel_evm/kernel/src/block_in_progress.rs index 815fd4ebdb66..44218dc79837 100644 --- a/etherlink/kernel_evm/kernel/src/block_in_progress.rs +++ b/etherlink/kernel_evm/kernel/src/block_in_progress.rs @@ -11,7 +11,6 @@ use crate::error::Error; use crate::error::TransferError::CumulativeGasUsedOverflow; use crate::gas_price::base_fee_per_gas; use crate::inbox::Transaction; -use crate::safe_storage::KernelRuntime; use crate::storage::{self, object_path, receipt_path}; use crate::tick_model; use anyhow::Context; @@ -27,6 +26,7 @@ use tezos_ethereum::transaction::{ }; use tezos_ethereum::Bloom; use tezos_evm_logging::{log, Level::*}; +use tezos_evm_runtime::safe_storage::KernelRuntime; use tezos_smart_rollup_encoding::timestamp::Timestamp; use tezos_smart_rollup_host::path::{concat, RefPath}; use tezos_smart_rollup_host::runtime::Runtime; diff --git a/etherlink/kernel_evm/kernel/src/lib.rs b/etherlink/kernel_evm/kernel/src/lib.rs index 2c4c8de0d90c..2cbf34291b00 100644 --- a/etherlink/kernel_evm/kernel/src/lib.rs +++ b/etherlink/kernel_evm/kernel/src/lib.rs @@ -19,7 +19,6 @@ use inbox::StageOneStatus; use migration::MigrationStatus; use primitive_types::U256; use reveal_storage::{is_revealed_storage, reveal_storage}; -use safe_storage::WORLD_STATE_PATH; use storage::{ read_base_fee_per_gas, read_chain_id, read_da_fee, read_kernel_version, read_last_info_per_level_timestamp, read_last_info_per_level_timestamp_stats, @@ -30,6 +29,7 @@ use storage::{ use tezos_crypto_rs::hash::ContractKt1Hash; use tezos_ethereum::block::BlockFees; use tezos_evm_logging::{log, Level::*}; +use tezos_evm_runtime::safe_storage::WORLD_STATE_PATH; use tezos_smart_rollup::entrypoint; use tezos_smart_rollup::michelson::MichelsonUnit; use tezos_smart_rollup::outbox::{ @@ -57,13 +57,10 @@ mod fallback_upgrade; mod fees; mod gas_price; mod inbox; -mod internal_storage; mod linked_list; mod migration; -mod mock_internal; mod parsing; mod reveal_storage; -mod safe_storage; mod sequencer_blueprint; mod simulation; mod stage_one; @@ -361,9 +358,7 @@ mod tests { use crate::configuration::{Configuration, Limits}; use crate::fees; use crate::main; - use crate::mock_internal::MockInternal; use crate::parsing::RollupType; - use crate::safe_storage::SafeStorage; use crate::storage::{ read_transaction_receipt_status, store_chain_id, ENABLE_FA_BRIDGE, }; @@ -393,6 +388,8 @@ mod tests { transaction::{TransactionHash, TransactionType}, tx_common::EthereumTransactionCommon, }; + use tezos_evm_runtime::mock_internal::MockInternal; + use tezos_evm_runtime::safe_storage::SafeStorage; use tezos_smart_rollup::michelson::ticket::FA2_1Ticket; use tezos_smart_rollup::michelson::{ diff --git a/etherlink/kernel_evm/runtime/Cargo.toml b/etherlink/kernel_evm/runtime/Cargo.toml index e72fda7622ca..349f7b36e475 100644 --- a/etherlink/kernel_evm/runtime/Cargo.toml +++ b/etherlink/kernel_evm/runtime/Cargo.toml @@ -11,6 +11,7 @@ edition = "2021" tezos-smart-rollup-debug.workspace = true tezos-smart-rollup-core.workspace = true tezos-smart-rollup-host.workspace = true +sha3.workspace = true [dev-dependencies] tezos-smart-rollup-mock.workspace = true diff --git a/etherlink/kernel_evm/kernel/src/internal_storage.rs b/etherlink/kernel_evm/runtime/src/internal_storage.rs similarity index 100% rename from etherlink/kernel_evm/kernel/src/internal_storage.rs rename to etherlink/kernel_evm/runtime/src/internal_storage.rs diff --git a/etherlink/kernel_evm/runtime/src/lib.rs b/etherlink/kernel_evm/runtime/src/lib.rs index d208bf912d15..79881a605089 100644 --- a/etherlink/kernel_evm/runtime/src/lib.rs +++ b/etherlink/kernel_evm/runtime/src/lib.rs @@ -1,3 +1,7 @@ // SPDX-FileCopyrightText: 2024 Nomadic Labs // // SPDX-License-Identifier: MIT + +pub mod internal_storage; +pub mod mock_internal; +pub mod safe_storage; diff --git a/etherlink/kernel_evm/kernel/src/mock_internal.rs b/etherlink/kernel_evm/runtime/src/mock_internal.rs similarity index 100% rename from etherlink/kernel_evm/kernel/src/mock_internal.rs rename to etherlink/kernel_evm/runtime/src/mock_internal.rs diff --git a/etherlink/kernel_evm/kernel/src/safe_storage.rs b/etherlink/kernel_evm/runtime/src/safe_storage.rs similarity index 100% rename from etherlink/kernel_evm/kernel/src/safe_storage.rs rename to etherlink/kernel_evm/runtime/src/safe_storage.rs -- GitLab From 3a075833e790cc47c0e52cb4aa0100315c6b8831 Mon Sep 17 00:00:00 2001 From: Pierrick Couderc Date: Wed, 4 Sep 2024 18:41:03 +0200 Subject: [PATCH 3/3] EVM/Kernel: rename InternalStorage to InternalHost and also internal_storage crate to internal_runtime, to be consistent with the SDK --- etherlink/kernel_evm/kernel/src/block.rs | 4 ++-- .../runtime/src/{internal_storage.rs => internal_runtime.rs} | 4 ++-- etherlink/kernel_evm/runtime/src/lib.rs | 2 +- etherlink/kernel_evm/runtime/src/mock_internal.rs | 2 +- etherlink/kernel_evm/runtime/src/safe_storage.rs | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename etherlink/kernel_evm/runtime/src/{internal_storage.rs => internal_runtime.rs} (95%) diff --git a/etherlink/kernel_evm/kernel/src/block.rs b/etherlink/kernel_evm/kernel/src/block.rs index c44139bebf1d..c701eb59b121 100644 --- a/etherlink/kernel_evm/kernel/src/block.rs +++ b/etherlink/kernel_evm/kernel/src/block.rs @@ -30,7 +30,7 @@ use primitive_types::{H160, H256, U256}; use tezos_ethereum::block::BlockFees; use tezos_ethereum::transaction::TransactionHash; use tezos_evm_logging::{log, Level::*}; -use tezos_evm_runtime::internal_storage::InternalRuntime; +use tezos_evm_runtime::internal_runtime::InternalRuntime; use tezos_evm_runtime::safe_storage::{KernelRuntime, SafeStorage}; use tezos_smart_rollup::outbox::OutboxQueue; use tezos_smart_rollup_host::path::{Path, RefPath}; @@ -425,7 +425,7 @@ pub fn produce( let at_most_one_block = host.store_has(&AT_MOST_ONE_BLOCK)?.is_some(); #[cfg(not(test))] - let mut internal_storage = tezos_evm_runtime::internal_storage::InternalStorage(); + let mut internal_storage = tezos_evm_runtime::internal_runtime::InternalHost(); #[cfg(test)] let mut internal_storage = tezos_evm_runtime::mock_internal::MockInternal(); let mut safe_host = SafeStorage { diff --git a/etherlink/kernel_evm/runtime/src/internal_storage.rs b/etherlink/kernel_evm/runtime/src/internal_runtime.rs similarity index 95% rename from etherlink/kernel_evm/runtime/src/internal_storage.rs rename to etherlink/kernel_evm/runtime/src/internal_runtime.rs index c3357777f6c0..495da6f232de 100644 --- a/etherlink/kernel_evm/runtime/src/internal_storage.rs +++ b/etherlink/kernel_evm/runtime/src/internal_runtime.rs @@ -34,9 +34,9 @@ pub trait ExtendedRuntime { fn store_get_hash(&mut self, path: &T) -> Result, RuntimeError>; } -pub struct InternalStorage(); +pub struct InternalHost(); -impl InternalRuntime for InternalStorage { +impl InternalRuntime for InternalHost { fn __internal_store_get_hash( &mut self, path: &T, diff --git a/etherlink/kernel_evm/runtime/src/lib.rs b/etherlink/kernel_evm/runtime/src/lib.rs index 79881a605089..5ceb77baf0ec 100644 --- a/etherlink/kernel_evm/runtime/src/lib.rs +++ b/etherlink/kernel_evm/runtime/src/lib.rs @@ -2,6 +2,6 @@ // // SPDX-License-Identifier: MIT -pub mod internal_storage; +pub mod internal_runtime; pub mod mock_internal; pub mod safe_storage; diff --git a/etherlink/kernel_evm/runtime/src/mock_internal.rs b/etherlink/kernel_evm/runtime/src/mock_internal.rs index 6c0cc99a19bf..37e820a7b50b 100644 --- a/etherlink/kernel_evm/runtime/src/mock_internal.rs +++ b/etherlink/kernel_evm/runtime/src/mock_internal.rs @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -use crate::internal_storage::InternalRuntime; +use crate::internal_runtime::InternalRuntime; use sha3::{Digest, Keccak256}; use tezos_smart_rollup_host::path::Path; use tezos_smart_rollup_host::runtime::RuntimeError; diff --git a/etherlink/kernel_evm/runtime/src/safe_storage.rs b/etherlink/kernel_evm/runtime/src/safe_storage.rs index 2f5e92783fad..5fea289e5904 100644 --- a/etherlink/kernel_evm/runtime/src/safe_storage.rs +++ b/etherlink/kernel_evm/runtime/src/safe_storage.rs @@ -5,7 +5,7 @@ // // SPDX-License-Identifier: MIT -use crate::internal_storage::{ExtendedRuntime, InternalRuntime}; +use crate::internal_runtime::{ExtendedRuntime, InternalRuntime}; use tezos_smart_rollup_core::PREIMAGE_HASH_SIZE; use tezos_smart_rollup_host::dal_parameters::RollupDalParameters; use tezos_smart_rollup_host::{ -- GitLab