{"record":{"id":"aea38f028deedfed","repo":"linera-io/linera-protocol","slug":"an-evm-runtime-is-required-to-load-user-applicatio","errorCode":null,"errorMessage":"An Evm runtime is required to load user applications. Please enable the `revm` feature flag when compiling `linera-storage`.","messagePattern":"An Evm runtime is required to load user applications\\. Please enable the `revm` feature flag when compiling `linera-storage`\\.","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"linera-storage/src/lib.rs","lineNumber":348,"sourceCode":"                           .await?\n                           .into())\n                    } else {\n                        panic!(\n                            \"A Wasm runtime is required to load user applications. \\\n                             Please enable the `wasmer` or the `wasmtime` feature flags \\\n                             when compiling `linera-storage`.\"\n                        );\n                    }\n                }\n            }\n            VmRuntime::Evm => {\n                cfg_if::cfg_if! {\n                    if #[cfg(with_revm)] {\n                        let evm_runtime = EvmRuntime::Revm;\n                        Ok(EvmContractModule::new(contract_bytecode, evm_runtime)?\n                           .into())\n                    } else {\n                        panic!(\n                            \"An Evm runtime is required to load user applications. \\\n                             Please enable the `revm` feature flag \\\n                             when compiling `linera-storage`.\"\n                        );\n                    }\n                }\n            }\n        }\n    }\n\n    /// Creates a [`UserServiceCode`] instance using the bytecode in storage referenced\n    /// by the `application_description`.\n    async fn load_service(\n        &self,\n        application_description: &ApplicationDescription,\n        txn_tracker: &TransactionTracker,\n    ) -> Result<UserServiceCode, ExecutionError> {\n        let service_bytecode_blob_id = application_description.service_bytecode_blob_id();","sourceCodeStart":330,"sourceCodeEnd":366,"githubUrl":"https://github.com/linera-io/linera-protocol/blob/6c226ddcb332ef55118dc8d0aafbd093d5420899/linera-storage/src/lib.rs#L330-L366","documentation":"In load_contract, EVM application bytecode requires the revm execution engine, enabled via the with_revm feature on linera-storage (surfaced as the revm feature flag). If an application with EVM bytecode is loaded and the crate was compiled without with_revm, it panics with instructions to enable the feature. Reached through get_user_contract when a block executes an EVM contract.","triggerScenarios":"Deploying/executing an EVM application (bytecode with the EVM runtime kind) against a node, indexer, or service binary whose linera-storage dependency lacks the with_revm feature — for example a Wasm-only build, or default-features = false without revm.","commonSituations":"Nodes built before EVM support or with trimmed features trying to follow chains that run EVM apps; test harnesses that only enabled Wasm features; feature unification in a workspace where no crate opts into revm.","solutions":["Enable the revm/with_revm feature on linera-storage in your dependency specification","Build with the standard linera-service feature set, which includes EVM support","Alternatively, avoid sending EVM applications to a Wasm-only deployment"],"exampleFix":"# before (Cargo.toml)\nlinera-storage = { path = \"../linera-storage\", default-features = false, features = [\"wasmtime\"] }\n\n# after\nlinera-storage = { path = \"../linera-storage\", default-features = false, features = [\"wasmtime\", \"revm\"] }","handlingStrategy":"validation","validationCode":"const _: () = {\n    #[cfg(not(feature = \"revm\"))]\n    compile_error!(\"enable the revm feature on linera-storage to load EVM contracts\");\n};","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Enable revm in any binary that will execute or index EVM applications","Keep contract and service loader features aligned (both load_contract and load_service need it)","Tag builds with the enabled runtimes so deployments are auditable"],"tags":["storage","evm","revm","feature-flags","smart-contract"],"backgroundTag":"missing-compile-feature","analyzedSha":"6c226ddcb332ef55118dc8d0aafbd093d5420899","analyzedAt":"2026-08-22T22:49:09.787Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}