diff --git a/etherlink/CHANGES_KERNEL.md b/etherlink/CHANGES_KERNEL.md index f9f095e029e0c10602c4d2e2d77ce5a9c27ccf0a..c867d226ced05cce79a6d0fc1c34251faf0b6142 100644 --- a/etherlink/CHANGES_KERNEL.md +++ b/etherlink/CHANGES_KERNEL.md @@ -6,6 +6,8 @@ - The EVM now supports optional access lists. See [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930). (!17766) +- Introduces a new feature flag to enable REVM as the EVM execution + engine instead of Sputnik. (!18384) ### Bug fixes diff --git a/etherlink/CHANGES_NODE.md b/etherlink/CHANGES_NODE.md index 863d3d0d95620cf76ee70f247c23556eecc9c36b..bf2d8a5d111f9b424241842217fc313e6a897086 100644 --- a/etherlink/CHANGES_NODE.md +++ b/etherlink/CHANGES_NODE.md @@ -8,6 +8,8 @@ - New field `"db"` which allows to configure some parameters for the database such as the connection pool size and the connection reuse limit. (!18235) +- New `"enable_revm"` config key feature flag to change the EVM execution's VM + from Sputnik to REVM. (!18384) ### RPCs changes diff --git a/etherlink/bin_node/lib_dev/kernel_config.ml b/etherlink/bin_node/lib_dev/kernel_config.ml index cd1c7c4108ad9aa401f20ca62ac7e8af05cc9309..520c107268eb8dcac56df164c340a064fd0c1eb2 100644 --- a/etherlink/bin_node/lib_dev/kernel_config.ml +++ b/etherlink/bin_node/lib_dev/kernel_config.ml @@ -210,9 +210,9 @@ let make ~mainnet_compat ~eth_bootstrap_balance ?l2_chain_ids ?delayed_inbox_timeout ?delayed_inbox_min_levels ?sequencer_pool_address ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?remove_whitelist ?enable_fa_bridge - ?enable_dal ?dal_slots ?enable_fast_withdrawal ?enable_fast_fa_withdrawal - ?enable_multichain ?set_account_code ?max_delayed_inbox_blueprint_length - ?evm_version ~output () = + ?enable_revm ?enable_dal ?dal_slots ?enable_fast_withdrawal + ?enable_fast_fa_withdrawal ?enable_multichain ?set_account_code + ?max_delayed_inbox_blueprint_length ?evm_version ~output () = let eth_bootstrap_accounts = let open Ethereum_types in match eth_bootstrap_accounts with @@ -310,6 +310,7 @@ let make ~mainnet_compat ~eth_bootstrap_balance ?l2_chain_ids @ eth_bootstrap_accounts @ set_account_code @ make_instr remove_whitelist @ make_instr ~path_prefix:["evm"; "feature_flags"] enable_fa_bridge + @ make_instr ~path_prefix:["evm"; "feature_flags"] enable_revm @ make_instr ~path_prefix:["evm"; "feature_flags"] enable_dal @ make_instr ~path_prefix:["evm"; "world_state"; "feature_flags"] diff --git a/etherlink/bin_node/lib_dev/kernel_config.mli b/etherlink/bin_node/lib_dev/kernel_config.mli index 8ff5c68d4b6a1c3eb47e3facd054319c16ec559b..cb114352d60229a52e40ba8a5cc05db5e532a459 100644 --- a/etherlink/bin_node/lib_dev/kernel_config.mli +++ b/etherlink/bin_node/lib_dev/kernel_config.mli @@ -35,6 +35,7 @@ val make : ?max_blueprint_lookahead_in_seconds:string * string -> ?remove_whitelist:string * string -> ?enable_fa_bridge:string * string -> + ?enable_revm:string * string -> ?enable_dal:string * string -> ?dal_slots:string * string -> ?enable_fast_withdrawal:string * string -> diff --git a/etherlink/bin_node/main.ml b/etherlink/bin_node/main.ml index 96e4f92641e6690cdd595ab3e2ecf59f0b01c364..4774f44d2aa9e134bc11baeb3e73fa5f90043843 100644 --- a/etherlink/bin_node/main.ml +++ b/etherlink/bin_node/main.ml @@ -2,7 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2023 Nomadic Labs *) -(* Copyright (c) 2023-2024 Functori *) +(* Copyright (c) 2023-2025 Functori *) (* Copyright (c) 2023 Marigold *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) @@ -2157,7 +2157,7 @@ let make_kernel_config_command = ~group:Groups.kernel ~desc:"Create a configuration for the kernel installer." (merge_options - (args23 + (args24 mainnet_compat_arg (config_key_arg ~name:"kernel_root_hash" ~placeholder:"root hash") (config_key_arg ~name:"chain_id" ~placeholder:"chain id") @@ -2190,6 +2190,7 @@ let make_kernel_config_command = eth_bootstrap_balance_arg eth_bootstrap_account_arg (config_key_flag ~name:"enable_fa_bridge") + (config_key_flag ~name:"enable_revm") (config_key_arg ~name:"dal_slots" ~placeholder:"0,1,4,6,...")) (args8 (config_key_flag ~name:"enable_dal") @@ -2230,6 +2231,7 @@ let make_kernel_config_command = eth_bootstrap_balance, eth_bootstrap_accounts, enable_fa_bridge, + enable_revm, dal_slots ), ( enable_dal, enable_multichain, @@ -2267,6 +2269,7 @@ let make_kernel_config_command = ?eth_bootstrap_accounts ?enable_fa_bridge ?enable_dal + ?enable_revm ?dal_slots ?enable_multichain ?set_account_code diff --git a/etherlink/kernel_latest/kernel/src/migration.rs b/etherlink/kernel_latest/kernel/src/migration.rs index 57237dfcf97304b9d4e241a022f409018a53df19..8dd45fa237a6794542a569a66b412fdfb948ed3a 100644 --- a/etherlink/kernel_latest/kernel/src/migration.rs +++ b/etherlink/kernel_latest/kernel/src/migration.rs @@ -13,7 +13,7 @@ use crate::error::Error; use crate::error::StorageError; use crate::error::UpgradeProcessError; use crate::storage::{ - read_chain_id, read_storage_version, store_backlog, store_dal_slots, + is_revm_enabled, read_chain_id, read_storage_version, store_backlog, store_dal_slots, store_storage_version, tweak_dal_activation, StorageVersion, DELAYED_BRIDGE, ENABLE_FA_BRIDGE, KERNEL_GOVERNANCE, KERNEL_SECURITY_GOVERNANCE, SEQUENCER_GOVERNANCE, @@ -360,6 +360,13 @@ fn migrate_to( Ok(MigrationStatus::None) } } + StorageVersion::V34 => { + if is_revm_enabled(host)? { + // Add anything that's needed for the REVM migration, in particular + // the new bytecodes for custom precompile contracts. + }; + Ok(MigrationStatus::Done) + } } } diff --git a/etherlink/kernel_latest/kernel/src/storage.rs b/etherlink/kernel_latest/kernel/src/storage.rs index 6738e01e206f5836db10b1bfb1efa9d69363e9e0..b853842a7a3e80d61488b55fd906d879aba87d3f 100644 --- a/etherlink/kernel_latest/kernel/src/storage.rs +++ b/etherlink/kernel_latest/kernel/src/storage.rs @@ -67,6 +67,7 @@ pub enum StorageVersion { V31, V32, V33, + V34, } impl From for u64 { @@ -81,7 +82,7 @@ impl StorageVersion { } } -pub const STORAGE_VERSION: StorageVersion = StorageVersion::V33; +pub const STORAGE_VERSION: StorageVersion = StorageVersion::V34; pub const PRIVATE_FLAG_PATH: RefPath = RefPath::assert_from(b"/evm/remove_whitelist"); @@ -180,6 +181,9 @@ const TRACER_INPUT: RefPath = RefPath::assert_from(b"/evm/trace/input"); pub const ENABLE_FA_BRIDGE: RefPath = RefPath::assert_from(b"/evm/feature_flags/enable_fa_bridge"); +// If this path contains a value, REVM will be used for evm executions. +pub const ENABLE_REVM: RefPath = RefPath::assert_from(b"/evm/feature_flags/enable_revm"); + // If the flag is set, the kernel consider that this is local evm node execution. const EVM_NODE_FLAG: RefPath = RefPath::assert_from(b"/__evm_node"); @@ -897,6 +901,13 @@ pub fn evm_node_flag(host: &impl Runtime) -> anyhow::Result { } } +pub fn is_revm_enabled(host: &impl Runtime) -> anyhow::Result { + Ok(matches!( + host.store_has(&ENABLE_REVM)?, + Some(ValueType::Value) + )) +} + pub fn max_blueprint_lookahead_in_seconds(host: &impl Runtime) -> anyhow::Result { let bytes = host.store_read_all(&MAX_BLUEPRINT_LOOKAHEAD_IN_SECONDS)?; let bytes: [u8; 8] = bytes.as_slice().try_into()?; diff --git a/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm b/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm index 187e02e899393ba7e83f157c6d75ee994864852c..0e185574682b1c4b5d1acde10401513f093fd2d6 100755 Binary files a/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm and b/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm differ diff --git a/etherlink/tezt/lib/evm_node.ml b/etherlink/tezt/lib/evm_node.ml index 97537bb020782ee53e4fbe763e474c54ca74cdde..b7a3ece346abfeab42a9ea5a0d2f8294ef2dc418 100644 --- a/etherlink/tezt/lib/evm_node.ml +++ b/etherlink/tezt/lib/evm_node.ml @@ -1779,8 +1779,8 @@ let make_kernel_installer_config ?(l2_chain_ids = []) ?delayed_inbox_min_levels ?sequencer_pool_address ?maximum_allowed_ticks ?maximum_gas_per_transaction ?(max_blueprint_lookahead_in_seconds = ten_years_in_seconds) - ?(set_account_code = []) ?(enable_fa_bridge = false) ?(enable_dal = false) - ?dal_slots ?(enable_fast_withdrawal = false) + ?(set_account_code = []) ?(enable_fa_bridge = false) ?(enable_revm = false) + ?(enable_dal = false) ?dal_slots ?(enable_fast_withdrawal = false) ?(enable_fast_fa_withdrawal = false) ?(enable_multichain = false) ?evm_version ~output () = let set_account_code = @@ -1848,6 +1848,7 @@ let make_kernel_installer_config ?(l2_chain_ids = []) Int64.to_string max_blueprint_lookahead_in_seconds; ] @ Cli_arg.optional_switch "enable-fa-bridge" enable_fa_bridge + @ Cli_arg.optional_switch "enable-revm" enable_revm @ Cli_arg.optional_switch "enable-multichain" enable_multichain @ Cli_arg.optional_switch "enable-dal" enable_dal @ Cli_arg.optional_switch "enable-fast-withdrawal" enable_fast_withdrawal diff --git a/etherlink/tezt/lib/evm_node.mli b/etherlink/tezt/lib/evm_node.mli index b50e5cf6fa8b89267a6224d11aff09b27a946c7a..d5609daaaf69df012f0300d4025e005c82ecb990 100644 --- a/etherlink/tezt/lib/evm_node.mli +++ b/etherlink/tezt/lib/evm_node.mli @@ -693,6 +693,7 @@ val make_kernel_installer_config : ?max_blueprint_lookahead_in_seconds:int64 -> ?set_account_code:(string * string) list -> ?enable_fa_bridge:bool -> + ?enable_revm:bool -> ?enable_dal:bool -> ?dal_slots:int list -> ?enable_fast_withdrawal:bool -> diff --git a/etherlink/tezt/lib/setup.ml b/etherlink/tezt/lib/setup.ml index 94e28e4f6823834204fbfb0ae07c56d56768f734..1bb79ee10b2461ec315f8774b8598a463e11e46d 100644 --- a/etherlink/tezt/lib/setup.ml +++ b/etherlink/tezt/lib/setup.ml @@ -247,7 +247,7 @@ let setup_kernel_singlechain ~l1_contracts ?max_delayed_inbox_blueprint_length ?(eth_bootstrap_accounts = Evm_node.eth_default_bootstrap_accounts) ?sequencer_pool_address ?da_fee_per_byte ?minimum_base_fee_per_gas ?maximum_allowed_ticks ?maximum_gas_per_transaction - ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ~enable_dal ?dal_slots ?evm_version ~sequencer ~preimages_dir ~kernel () = let output_config = Temp.file "config.yaml" in @@ -277,6 +277,7 @@ let setup_kernel_singlechain ~l1_contracts ?max_delayed_inbox_blueprint_length ~output:output_config ?evm_version ?enable_fa_bridge + ?enable_revm () in let* {output; _} = @@ -337,7 +338,7 @@ let generate_l2_kernel_config (l2_setup : Evm_node.l2_setup) client = let setup_kernel_multichain ~(l2_setups : Evm_node.l2_setup list) ~l1_contracts ?max_delayed_inbox_blueprint_length ~mainnet_compat ?delayed_inbox_timeout ?delayed_inbox_min_levels ?maximum_allowed_ticks - ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ~enable_dal ?dal_slots ~sequencer ~preimages_dir ?evm_version ~kernel ~client () = let l2_chain_ids = List.map (fun l2 -> l2.Evm_node.l2_chain_id) l2_setups in @@ -413,6 +414,7 @@ let setup_kernel_multichain ~(l2_setups : Evm_node.l2_setup list) ~l1_contracts ?eth_bootstrap_accounts ~output:rollup_config ?enable_fa_bridge + ?enable_revm ?evm_version () in @@ -428,8 +430,8 @@ let setup_kernel ~enable_multichain ~l2_chains ~l1_contracts ?max_delayed_inbox_blueprint_length ~mainnet_compat ~sequencer ?delayed_inbox_timeout ?delayed_inbox_min_levels ?maximum_allowed_ticks ~enable_dal ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?dal_slots - ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ~preimages_dir ~kernel - ?evm_version ~client () = + ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?enable_revm + ~preimages_dir ~kernel ?evm_version ~client () = if not enable_multichain then ( assert (List.length l2_chains = 1) ; let chain_config = List.hd l2_chains in @@ -452,6 +454,7 @@ let setup_kernel ~enable_multichain ~l2_chains ~l1_contracts ?max_blueprint_lookahead_in_seconds ?eth_bootstrap_accounts:chain_config.Evm_node.eth_bootstrap_accounts ?enable_fa_bridge + ?enable_revm ?evm_version ~preimages_dir ~kernel @@ -468,6 +471,7 @@ let setup_kernel ~enable_multichain ~l2_chains ~l1_contracts ?maximum_allowed_ticks ~enable_dal ?enable_fa_bridge + ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?dal_slots @@ -486,7 +490,7 @@ let setup_sequencer_internal ?max_delayed_inbox_blueprint_length ?commitment_period ?challenge_window ?(sequencer = Constant.bootstrap1) ?(kernel = Constant.WASM.evm_kernel) ?evm_version ?preimages_dir ?maximum_allowed_ticks ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge - ?enable_fast_withdrawal ?enable_fast_fa_withdrawal + ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?(threshold_encryption = false) ?(drop_duplicate_when_injection = true) ?(blueprints_publisher_order_enabled = true) ?rollup_history_mode ~enable_dal ?dal_slots ~enable_multichain ~l2_chains ?rpc_server ?websockets @@ -543,6 +547,7 @@ let setup_sequencer_internal ?max_delayed_inbox_blueprint_length ?evm_version ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?enable_revm ~preimages_dir ~kernel ~client @@ -790,9 +795,10 @@ let register_multichain_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?tez_bootstrap_contracts ?sequencer ?sequencer_pool_address ~kernel ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds - ?enable_fa_bridge ?enable_fast_withdrawal ?enable_fast_fa_withdrawal - ?commitment_period ?challenge_window ?(threshold_encryption = false) - ?(uses = uses) ?(additional_uses = []) ?rollup_history_mode ~enable_dal + ?enable_fa_bridge ?enable_revm ?enable_fast_withdrawal + ?enable_fast_fa_withdrawal ?commitment_period ?challenge_window + ?(threshold_encryption = false) ?(uses = uses) ?(additional_uses = []) + ?rollup_history_mode ~enable_dal ?(dal_slots = if enable_dal then Some [0; 1; 2; 3] else None) ~enable_multichain ~l2_setups ?rpc_server ?websockets ?history_mode ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path body ~title ~tags @@ -852,6 +858,7 @@ let register_multichain_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?maximum_allowed_ticks ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ~threshold_encryption @@ -910,7 +917,7 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?(tez_bootstrap_accounts = Evm_node.tez_default_bootstrap_accounts) ?sequencer ?sequencer_pool_address ~kernel ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction - ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?commitment_period ?challenge_window ?threshold_encryption ?uses ?additional_uses ?rollup_history_mode ~enable_dal ?dal_slots ~enable_multichain ?rpc_server @@ -945,6 +952,7 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?commitment_period @@ -978,11 +986,12 @@ let register_test_for_kernels ~__FILE__ ?max_delayed_inbox_blueprint_length ?sequencer ?sequencer_pool_address ?(kernels = Kernel.all) ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds - ?enable_fa_bridge ?rollup_history_mode ?commitment_period ?challenge_window - ?additional_uses ~threshold_encryption ~enable_dal ?dal_slots - ~enable_multichain ?rpc_server ?websockets ?enable_fast_withdrawal - ?enable_fast_fa_withdrawal ?history_mode ?enable_tx_queue ?spawn_rpc - ?periodic_snapshot_path ?l2_setups ~title ~tags body protocols = + ?enable_fa_bridge ?enable_revm ?rollup_history_mode ?commitment_period + ?challenge_window ?additional_uses ~threshold_encryption ~enable_dal + ?dal_slots ~enable_multichain ?rpc_server ?websockets + ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?history_mode + ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path ?l2_setups ~title ~tags + body protocols = List.iter (fun kernel -> register_test @@ -1013,6 +1022,7 @@ let register_test_for_kernels ~__FILE__ ?max_delayed_inbox_blueprint_length ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?additional_uses diff --git a/etherlink/tezt/lib/setup.mli b/etherlink/tezt/lib/setup.mli index cbf99d2238b981d61e462e1ec1708f76cce3d502..cfa414d1c6cfb4402038aeef4fb32cac1c1a1718 100644 --- a/etherlink/tezt/lib/setup.mli +++ b/etherlink/tezt/lib/setup.mli @@ -104,6 +104,7 @@ val register_test : ?maximum_gas_per_transaction:int64 -> ?max_blueprint_lookahead_in_seconds:int64 -> ?enable_fa_bridge:bool -> + ?enable_revm:bool -> ?enable_fast_withdrawal:bool -> ?enable_fast_fa_withdrawal:bool -> ?commitment_period:int -> @@ -155,6 +156,7 @@ val register_multichain_test : ?maximum_gas_per_transaction:int64 -> ?max_blueprint_lookahead_in_seconds:int64 -> ?enable_fa_bridge:bool -> + ?enable_revm:bool -> ?enable_fast_withdrawal:bool -> ?enable_fast_fa_withdrawal:bool -> ?commitment_period:int -> @@ -208,6 +210,7 @@ val register_test_for_kernels : ?maximum_gas_per_transaction:int64 -> ?max_blueprint_lookahead_in_seconds:int64 -> ?enable_fa_bridge:bool -> + ?enable_revm:bool -> ?rollup_history_mode:Sc_rollup_node.history_mode -> ?commitment_period:int -> ?challenge_window:int -> diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index 9670f315c7d69d4c1c9f52b8fc103662dd7028da..40d3a42f42a43527816182e327c746f2169201e3 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -254,9 +254,9 @@ let register_all ?max_delayed_inbox_blueprint_length ?sequencer_rpc_port ?sequencer ?sequencer_pool_address ?(kernels = Kernel.all) ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds - ?enable_fa_bridge ?rollup_history_mode ?commitment_period ?challenge_window - ?additional_uses ?rpc_server ?websockets ?enable_fast_withdrawal - ?enable_fast_fa_withdrawal ?history_mode + ?enable_fa_bridge ?enable_revm ?rollup_history_mode ?commitment_period + ?challenge_window ?additional_uses ?rpc_server ?websockets + ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?history_mode ?(use_threshold_encryption = default_threshold_encryption_registration) ?(use_dal = default_dal_registration) ?(use_multichain = default_multichain_registration) ?enable_tx_queue @@ -325,6 +325,7 @@ let register_all ?max_delayed_inbox_blueprint_length ?sequencer_rpc_port ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?enable_revm ?enable_fast_withdrawal ?enable_fast_fa_withdrawal ?additional_uses diff --git a/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out b/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out index 872cd2711a786c4c10fcb94fd37e9c7fe074a728..a9f013f45681296e6fa1caec1335814ef94888ad 100644 --- a/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out +++ b/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out @@ -825,7 +825,7 @@ Kernel commands: [--maximum-gas-per-transaction <30000...>] [--max-blueprint-lookahead-in-seconds <500>] [--remove-whitelist] [--eth-bootstrap-balance <9999000000000000000000>] - [--eth-bootstrap-account <0x...>] [--enable-fa-bridge] + [--eth-bootstrap-account <0x...>] [--enable-fa-bridge] [--enable-revm] [--dal-slots <0,1,4,6,...>] [--enable-dal] [--enable-multichain] [--l2-chain-id <1>] [--max-delayed-inbox-blueprint-length <1000>] [--enable-fast-withdrawal] [--enable-fast-fa-withdrawal] @@ -871,6 +871,7 @@ Kernel commands: --eth-bootstrap-account <0x...>: Add an etherlink bootstrap account in the installer config. --enable-fa-bridge: Enable flag enable_fa_bridge in the installer config. + --enable-revm: Enable flag enable_revm in the installer config. --dal-slots <0,1,4,6,...>: Value for dal_slots in the installer config. --enable-dal: Enable flag enable_dal in the installer config. --enable-multichain: Enable flag enable_multichain in the installer