@nomicfoundation/edr 0.12.0-next.10 → 0.12.0-next.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -10
- package/src/chains/l1.rs +41 -41
- package/src/config.rs +6 -6
- package/src/mock/time.rs +5 -5
- package/src/mock.rs +1 -1
- package/src/precompile.rs +2 -2
- package/src/provider/response.rs +1 -1
- package/src/result.rs +18 -16
- package/src/solidity_tests/l1.rs +8 -4
- package/src/solidity_tests/op.rs +8 -5
- package/src/solidity_tests/runner.rs +1 -1
- package/src/trace/exit.rs +1 -1
- package/src/trace.rs +13 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nomicfoundation/edr",
|
|
3
|
-
"version": "0.12.0-next.
|
|
3
|
+
"version": "0.12.0-next.14",
|
|
4
4
|
"devDependencies": {
|
|
5
5
|
"@napi-rs/cli": "^2.18.4",
|
|
6
6
|
"@nomicfoundation/ethereumjs-util": "^9.0.4",
|
|
@@ -36,8 +36,7 @@
|
|
|
36
36
|
"files": [
|
|
37
37
|
"index.js",
|
|
38
38
|
"index.d.ts",
|
|
39
|
-
"src/"
|
|
40
|
-
"dist/src/"
|
|
39
|
+
"src/"
|
|
41
40
|
],
|
|
42
41
|
"license": "MIT",
|
|
43
42
|
"main": "index.js",
|
|
@@ -59,13 +58,13 @@
|
|
|
59
58
|
"repository": "NomicFoundation/edr.git",
|
|
60
59
|
"types": "index.d.ts",
|
|
61
60
|
"dependencies": {
|
|
62
|
-
"@nomicfoundation/edr-darwin-arm64": "0.12.0-next.
|
|
63
|
-
"@nomicfoundation/edr-darwin-x64": "0.12.0-next.
|
|
64
|
-
"@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.
|
|
65
|
-
"@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.
|
|
66
|
-
"@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.
|
|
67
|
-
"@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.
|
|
68
|
-
"@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.
|
|
61
|
+
"@nomicfoundation/edr-darwin-arm64": "0.12.0-next.14",
|
|
62
|
+
"@nomicfoundation/edr-darwin-x64": "0.12.0-next.14",
|
|
63
|
+
"@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.14",
|
|
64
|
+
"@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.14",
|
|
65
|
+
"@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.14",
|
|
66
|
+
"@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.14",
|
|
67
|
+
"@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.14"
|
|
69
68
|
},
|
|
70
69
|
"scripts": {
|
|
71
70
|
"artifacts": "napi artifacts",
|
package/src/chains/l1.rs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
use std::{str::FromStr, sync::Arc};
|
|
2
2
|
|
|
3
|
-
use
|
|
4
|
-
use edr_evm::eips::{
|
|
3
|
+
use edr_blockchain_fork::eips::{
|
|
5
4
|
eip2935::{HISTORY_STORAGE_ADDRESS, HISTORY_STORAGE_UNSUPPORTED_BYTECODE},
|
|
6
5
|
eip4788::{BEACON_ROOTS_ADDRESS, BEACON_ROOTS_BYTECODE},
|
|
7
6
|
};
|
|
7
|
+
use edr_chain_l1::L1ChainSpec;
|
|
8
8
|
use edr_napi_core::{
|
|
9
9
|
logger::Logger,
|
|
10
10
|
provider::{SyncProvider, SyncProviderFactory},
|
|
@@ -142,25 +142,25 @@ impl FromStr for SpecId {
|
|
|
142
142
|
|
|
143
143
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
144
144
|
match s {
|
|
145
|
-
edr_chain_l1::
|
|
146
|
-
edr_chain_l1::
|
|
147
|
-
edr_chain_l1::
|
|
148
|
-
edr_chain_l1::
|
|
149
|
-
edr_chain_l1::
|
|
150
|
-
edr_chain_l1::
|
|
151
|
-
edr_chain_l1::
|
|
152
|
-
edr_chain_l1::
|
|
153
|
-
edr_chain_l1::
|
|
154
|
-
edr_chain_l1::
|
|
155
|
-
edr_chain_l1::
|
|
156
|
-
edr_chain_l1::
|
|
157
|
-
edr_chain_l1::
|
|
158
|
-
edr_chain_l1::
|
|
159
|
-
edr_chain_l1::
|
|
160
|
-
edr_chain_l1::
|
|
161
|
-
edr_chain_l1::
|
|
162
|
-
edr_chain_l1::
|
|
163
|
-
edr_chain_l1::
|
|
145
|
+
edr_chain_l1::chains::name::FRONTIER => Ok(SpecId::Frontier),
|
|
146
|
+
edr_chain_l1::chains::name::FRONTIER_THAWING => Ok(SpecId::FrontierThawing),
|
|
147
|
+
edr_chain_l1::chains::name::HOMESTEAD => Ok(SpecId::Homestead),
|
|
148
|
+
edr_chain_l1::chains::name::DAO_FORK => Ok(SpecId::DaoFork),
|
|
149
|
+
edr_chain_l1::chains::name::TANGERINE => Ok(SpecId::Tangerine),
|
|
150
|
+
edr_chain_l1::chains::name::SPURIOUS_DRAGON => Ok(SpecId::SpuriousDragon),
|
|
151
|
+
edr_chain_l1::chains::name::BYZANTIUM => Ok(SpecId::Byzantium),
|
|
152
|
+
edr_chain_l1::chains::name::CONSTANTINOPLE => Ok(SpecId::Constantinople),
|
|
153
|
+
edr_chain_l1::chains::name::PETERSBURG => Ok(SpecId::Petersburg),
|
|
154
|
+
edr_chain_l1::chains::name::ISTANBUL => Ok(SpecId::Istanbul),
|
|
155
|
+
edr_chain_l1::chains::name::MUIR_GLACIER => Ok(SpecId::MuirGlacier),
|
|
156
|
+
edr_chain_l1::chains::name::BERLIN => Ok(SpecId::Berlin),
|
|
157
|
+
edr_chain_l1::chains::name::LONDON => Ok(SpecId::London),
|
|
158
|
+
edr_chain_l1::chains::name::ARROW_GLACIER => Ok(SpecId::ArrowGlacier),
|
|
159
|
+
edr_chain_l1::chains::name::GRAY_GLACIER => Ok(SpecId::GrayGlacier),
|
|
160
|
+
edr_chain_l1::chains::name::MERGE => Ok(SpecId::Merge),
|
|
161
|
+
edr_chain_l1::chains::name::SHANGHAI => Ok(SpecId::Shanghai),
|
|
162
|
+
edr_chain_l1::chains::name::CANCUN => Ok(SpecId::Cancun),
|
|
163
|
+
edr_chain_l1::chains::name::PRAGUE => Ok(SpecId::Prague),
|
|
164
164
|
_ => Err(napi::Error::new(
|
|
165
165
|
napi::Status::InvalidArg,
|
|
166
166
|
format!("The provided hardfork `{s}` is not supported."),
|
|
@@ -206,25 +206,25 @@ pub fn l1_hardfork_from_string(hardfork: String) -> napi::Result<SpecId> {
|
|
|
206
206
|
#[napi(catch_unwind)]
|
|
207
207
|
pub fn l1_hardfork_to_string(harfork: SpecId) -> &'static str {
|
|
208
208
|
match harfork {
|
|
209
|
-
SpecId::Frontier => edr_chain_l1::
|
|
210
|
-
SpecId::FrontierThawing => edr_chain_l1::
|
|
211
|
-
SpecId::Homestead => edr_chain_l1::
|
|
212
|
-
SpecId::DaoFork => edr_chain_l1::
|
|
213
|
-
SpecId::Tangerine => edr_chain_l1::
|
|
214
|
-
SpecId::SpuriousDragon => edr_chain_l1::
|
|
215
|
-
SpecId::Byzantium => edr_chain_l1::
|
|
216
|
-
SpecId::Constantinople => edr_chain_l1::
|
|
217
|
-
SpecId::Petersburg => edr_chain_l1::
|
|
218
|
-
SpecId::Istanbul => edr_chain_l1::
|
|
219
|
-
SpecId::MuirGlacier => edr_chain_l1::
|
|
220
|
-
SpecId::Berlin => edr_chain_l1::
|
|
221
|
-
SpecId::London => edr_chain_l1::
|
|
222
|
-
SpecId::ArrowGlacier => edr_chain_l1::
|
|
223
|
-
SpecId::GrayGlacier => edr_chain_l1::
|
|
224
|
-
SpecId::Merge => edr_chain_l1::
|
|
225
|
-
SpecId::Shanghai => edr_chain_l1::
|
|
226
|
-
SpecId::Cancun => edr_chain_l1::
|
|
227
|
-
SpecId::Prague => edr_chain_l1::
|
|
209
|
+
SpecId::Frontier => edr_chain_l1::chains::name::FRONTIER,
|
|
210
|
+
SpecId::FrontierThawing => edr_chain_l1::chains::name::FRONTIER_THAWING,
|
|
211
|
+
SpecId::Homestead => edr_chain_l1::chains::name::HOMESTEAD,
|
|
212
|
+
SpecId::DaoFork => edr_chain_l1::chains::name::DAO_FORK,
|
|
213
|
+
SpecId::Tangerine => edr_chain_l1::chains::name::TANGERINE,
|
|
214
|
+
SpecId::SpuriousDragon => edr_chain_l1::chains::name::SPURIOUS_DRAGON,
|
|
215
|
+
SpecId::Byzantium => edr_chain_l1::chains::name::BYZANTIUM,
|
|
216
|
+
SpecId::Constantinople => edr_chain_l1::chains::name::CONSTANTINOPLE,
|
|
217
|
+
SpecId::Petersburg => edr_chain_l1::chains::name::PETERSBURG,
|
|
218
|
+
SpecId::Istanbul => edr_chain_l1::chains::name::ISTANBUL,
|
|
219
|
+
SpecId::MuirGlacier => edr_chain_l1::chains::name::MUIR_GLACIER,
|
|
220
|
+
SpecId::Berlin => edr_chain_l1::chains::name::BERLIN,
|
|
221
|
+
SpecId::London => edr_chain_l1::chains::name::LONDON,
|
|
222
|
+
SpecId::ArrowGlacier => edr_chain_l1::chains::name::ARROW_GLACIER,
|
|
223
|
+
SpecId::GrayGlacier => edr_chain_l1::chains::name::GRAY_GLACIER,
|
|
224
|
+
SpecId::Merge => edr_chain_l1::chains::name::MERGE,
|
|
225
|
+
SpecId::Shanghai => edr_chain_l1::chains::name::SHANGHAI,
|
|
226
|
+
SpecId::Cancun => edr_chain_l1::chains::name::CANCUN,
|
|
227
|
+
SpecId::Prague => edr_chain_l1::chains::name::PRAGUE,
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
|
|
@@ -240,7 +240,7 @@ macro_rules! export_spec_id {
|
|
|
240
240
|
($($variant:ident),*) => {
|
|
241
241
|
$(
|
|
242
242
|
#[napi]
|
|
243
|
-
pub const $variant: &str = edr_chain_l1::
|
|
243
|
+
pub const $variant: &str = edr_chain_l1::chains::name::$variant;
|
|
244
244
|
)*
|
|
245
245
|
};
|
|
246
246
|
}
|
package/src/config.rs
CHANGED
|
@@ -280,28 +280,28 @@ impl TryFrom<ForkConfig> for edr_provider::ForkConfig<String> {
|
|
|
280
280
|
let condition = match condition {
|
|
281
281
|
Either::A(HardforkActivationByBlockNumber {
|
|
282
282
|
block_number,
|
|
283
|
-
}) =>
|
|
283
|
+
}) => edr_chain_config::ForkCondition::Block(
|
|
284
284
|
block_number.try_cast()?,
|
|
285
285
|
),
|
|
286
286
|
Either::B(HardforkActivationByTimestamp {
|
|
287
287
|
timestamp,
|
|
288
|
-
}) =>
|
|
288
|
+
}) => edr_chain_config::ForkCondition::Timestamp(
|
|
289
289
|
timestamp.try_cast()?,
|
|
290
290
|
),
|
|
291
291
|
};
|
|
292
292
|
|
|
293
|
-
Ok(
|
|
293
|
+
Ok(edr_chain_config::HardforkActivation {
|
|
294
294
|
condition,
|
|
295
295
|
hardfork,
|
|
296
296
|
})
|
|
297
297
|
},
|
|
298
298
|
)
|
|
299
299
|
.collect::<napi::Result<Vec<_>>>()
|
|
300
|
-
.map(
|
|
300
|
+
.map(edr_chain_config::HardforkActivations::new)
|
|
301
301
|
})
|
|
302
302
|
.transpose()?;
|
|
303
303
|
|
|
304
|
-
let chain_config =
|
|
304
|
+
let chain_config = edr_chain_config::ChainOverride {
|
|
305
305
|
name,
|
|
306
306
|
hardfork_activation_overrides,
|
|
307
307
|
};
|
|
@@ -339,7 +339,7 @@ impl From<MemPoolConfig> for edr_provider::MemPoolConfig {
|
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
impl From<MineOrdering> for
|
|
342
|
+
impl From<MineOrdering> for edr_runtime::MineOrdering {
|
|
343
343
|
fn from(value: MineOrdering) -> Self {
|
|
344
344
|
match value {
|
|
345
345
|
MineOrdering::Fifo => Self::Fifo,
|
package/src/mock/time.rs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
use std::sync::Arc;
|
|
2
2
|
|
|
3
|
-
use
|
|
4
|
-
use
|
|
3
|
+
use edr_chain_spec::ChainSpec;
|
|
4
|
+
use edr_chain_spec_block::BlockChainSpec;
|
|
5
5
|
use edr_generic::GenericChainSpec;
|
|
6
6
|
use edr_napi_core::logger::Logger;
|
|
7
7
|
use edr_primitives::B256;
|
|
8
|
-
use edr_rpc_spec::
|
|
8
|
+
use edr_rpc_spec::RpcBlockChainSpec;
|
|
9
9
|
use napi::{bindgen_prelude::BigInt, tokio::runtime, Env, JsObject};
|
|
10
10
|
use napi_derive::napi;
|
|
11
11
|
|
|
@@ -104,8 +104,8 @@ pub fn create_provider_with_mock_timer(
|
|
|
104
104
|
Box::new(logger),
|
|
105
105
|
Box::new(move |event| {
|
|
106
106
|
let event = edr_napi_core::subscription::SubscriptionEvent::new::<
|
|
107
|
-
<GenericChainSpec as
|
|
108
|
-
<GenericChainSpec as
|
|
107
|
+
<GenericChainSpec as BlockChainSpec>::Block,
|
|
108
|
+
<GenericChainSpec as RpcBlockChainSpec>::RpcBlock<B256>,
|
|
109
109
|
<GenericChainSpec as ChainSpec>::SignedTransaction,
|
|
110
110
|
>(event);
|
|
111
111
|
|
package/src/mock.rs
CHANGED
package/src/precompile.rs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
use
|
|
1
|
+
use edr_precompile::{PrecompileFn, PrecompileWithAddress};
|
|
2
2
|
use edr_primitives::Address;
|
|
3
3
|
use napi::bindgen_prelude::Uint8Array;
|
|
4
4
|
use napi_derive::napi;
|
|
@@ -46,5 +46,5 @@ impl Precompile {
|
|
|
46
46
|
/// secp256r1 precompile.
|
|
47
47
|
#[napi(catch_unwind)]
|
|
48
48
|
pub fn precompile_p256_verify() -> Precompile {
|
|
49
|
-
Precompile::from(
|
|
49
|
+
Precompile::from(edr_precompile::secp256r1::P256VERIFY)
|
|
50
50
|
}
|
package/src/provider/response.rs
CHANGED
package/src/result.rs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
use
|
|
2
|
-
use
|
|
1
|
+
use edr_chain_spec::EvmHaltReason;
|
|
2
|
+
use edr_runtime::trace::AfterMessage;
|
|
3
3
|
use napi::{
|
|
4
4
|
bindgen_prelude::{BigInt, Either3, Uint8Array},
|
|
5
5
|
Either,
|
|
@@ -19,17 +19,17 @@ pub enum SuccessReason {
|
|
|
19
19
|
SelfDestruct,
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
impl From<
|
|
23
|
-
fn from(eval:
|
|
22
|
+
impl From<edr_evm_spec::result::SuccessReason> for SuccessReason {
|
|
23
|
+
fn from(eval: edr_evm_spec::result::SuccessReason) -> Self {
|
|
24
24
|
match eval {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
edr_evm_spec::result::SuccessReason::Stop => Self::Stop,
|
|
26
|
+
edr_evm_spec::result::SuccessReason::Return => Self::Return,
|
|
27
|
+
edr_evm_spec::result::SuccessReason::SelfDestruct => Self::SelfDestruct,
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
impl From<SuccessReason> for
|
|
32
|
+
impl From<SuccessReason> for edr_evm_spec::result::SuccessReason {
|
|
33
33
|
fn from(value: SuccessReason) -> Self {
|
|
34
34
|
match value {
|
|
35
35
|
SuccessReason::Stop => Self::Stop,
|
|
@@ -157,7 +157,7 @@ impl From<&AfterMessage<EvmHaltReason>> for ExecutionResult {
|
|
|
157
157
|
} = value;
|
|
158
158
|
|
|
159
159
|
let result = match execution_result {
|
|
160
|
-
|
|
160
|
+
edr_evm_spec::result::ExecutionResult::Success {
|
|
161
161
|
reason,
|
|
162
162
|
gas_used,
|
|
163
163
|
gas_refunded,
|
|
@@ -172,12 +172,12 @@ impl From<&AfterMessage<EvmHaltReason>> for ExecutionResult {
|
|
|
172
172
|
gas_refunded: BigInt::from(*gas_refunded),
|
|
173
173
|
logs,
|
|
174
174
|
output: match output {
|
|
175
|
-
|
|
175
|
+
edr_evm_spec::result::Output::Call(return_value) => {
|
|
176
176
|
let return_value = Uint8Array::with_data_copied(return_value);
|
|
177
177
|
|
|
178
178
|
Either::A(CallOutput { return_value })
|
|
179
179
|
}
|
|
180
|
-
|
|
180
|
+
edr_evm_spec::result::Output::Create(return_value, address) => {
|
|
181
181
|
let return_value = Uint8Array::with_data_copied(return_value);
|
|
182
182
|
|
|
183
183
|
Either::B(CreateOutput {
|
|
@@ -188,7 +188,7 @@ impl From<&AfterMessage<EvmHaltReason>> for ExecutionResult {
|
|
|
188
188
|
},
|
|
189
189
|
})
|
|
190
190
|
}
|
|
191
|
-
|
|
191
|
+
edr_evm_spec::result::ExecutionResult::Revert { gas_used, output } => {
|
|
192
192
|
let output = Uint8Array::with_data_copied(output);
|
|
193
193
|
|
|
194
194
|
Either3::B(RevertResult {
|
|
@@ -196,10 +196,12 @@ impl From<&AfterMessage<EvmHaltReason>> for ExecutionResult {
|
|
|
196
196
|
output,
|
|
197
197
|
})
|
|
198
198
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
199
|
+
edr_evm_spec::result::ExecutionResult::Halt { reason, gas_used } => {
|
|
200
|
+
Either3::C(HaltResult {
|
|
201
|
+
reason: ExceptionalHalt::from(*reason),
|
|
202
|
+
gas_used: BigInt::from(*gas_used),
|
|
203
|
+
})
|
|
204
|
+
}
|
|
203
205
|
};
|
|
204
206
|
|
|
205
207
|
let contract_address = contract_address.as_ref().map(Uint8Array::with_data_copied);
|
package/src/solidity_tests/l1.rs
CHANGED
|
@@ -7,8 +7,12 @@ use edr_napi_core::solidity::{
|
|
|
7
7
|
use edr_primitives::Bytes;
|
|
8
8
|
use edr_solidity::artifacts::ArtifactId;
|
|
9
9
|
use edr_solidity_tests::{
|
|
10
|
-
contracts::ContractsByArtifact,
|
|
11
|
-
|
|
10
|
+
contracts::ContractsByArtifact,
|
|
11
|
+
decode::RevertDecoder,
|
|
12
|
+
evm_context::L1EvmBuilder,
|
|
13
|
+
multi_runner::TestContract,
|
|
14
|
+
revm::context::{BlockEnv, TxEnv},
|
|
15
|
+
MultiContractRunner,
|
|
12
16
|
};
|
|
13
17
|
use napi::tokio;
|
|
14
18
|
use napi_derive::napi;
|
|
@@ -33,14 +37,14 @@ impl SyncTestRunnerFactory for L1TestRunnerFactory {
|
|
|
33
37
|
let runner = tokio::task::block_in_place(|| {
|
|
34
38
|
runtime
|
|
35
39
|
.block_on(MultiContractRunner::<
|
|
36
|
-
|
|
40
|
+
BlockEnv,
|
|
37
41
|
(),
|
|
38
42
|
L1EvmBuilder,
|
|
39
43
|
edr_chain_l1::HaltReason,
|
|
40
44
|
edr_chain_l1::Hardfork,
|
|
41
45
|
_,
|
|
42
46
|
edr_chain_l1::InvalidTransaction,
|
|
43
|
-
|
|
47
|
+
TxEnv,
|
|
44
48
|
>::new(
|
|
45
49
|
config.try_into()?,
|
|
46
50
|
contracts,
|
package/src/solidity_tests/op.rs
CHANGED
|
@@ -4,11 +4,14 @@ use edr_napi_core::solidity::{
|
|
|
4
4
|
config::{TestRunnerConfig, TracingConfigWithBuffers},
|
|
5
5
|
SyncTestRunner, SyncTestRunnerFactory,
|
|
6
6
|
};
|
|
7
|
-
use edr_op::solidity_tests::OpEvmBuilder;
|
|
7
|
+
use edr_op::{solidity_tests::OpEvmBuilder, transaction::OpTxEnv};
|
|
8
8
|
use edr_primitives::Bytes;
|
|
9
9
|
use edr_solidity::artifacts::ArtifactId;
|
|
10
10
|
use edr_solidity_tests::{
|
|
11
|
-
contracts::ContractsByArtifact,
|
|
11
|
+
contracts::ContractsByArtifact,
|
|
12
|
+
decode::RevertDecoder,
|
|
13
|
+
multi_runner::TestContract,
|
|
14
|
+
revm::context::{BlockEnv, TxEnv},
|
|
12
15
|
MultiContractRunner,
|
|
13
16
|
};
|
|
14
17
|
use napi::tokio;
|
|
@@ -34,14 +37,14 @@ impl SyncTestRunnerFactory for OpTestRunnerFactory {
|
|
|
34
37
|
let runner = tokio::task::block_in_place(|| {
|
|
35
38
|
runtime
|
|
36
39
|
.block_on(MultiContractRunner::<
|
|
37
|
-
|
|
40
|
+
BlockEnv,
|
|
38
41
|
_,
|
|
39
42
|
OpEvmBuilder,
|
|
40
43
|
edr_op::HaltReason,
|
|
41
44
|
edr_op::Hardfork,
|
|
42
45
|
_,
|
|
43
|
-
edr_op::
|
|
44
|
-
|
|
46
|
+
edr_op::InvalidTransaction,
|
|
47
|
+
OpTxEnv<TxEnv>,
|
|
45
48
|
>::new(
|
|
46
49
|
config.try_into()?,
|
|
47
50
|
contracts,
|
package/src/trace/exit.rs
CHANGED
package/src/trace.rs
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
use std::sync::Arc;
|
|
9
9
|
|
|
10
|
-
use
|
|
11
|
-
use edr_evm_spec::EvmHaltReason;
|
|
10
|
+
use edr_chain_spec::EvmHaltReason;
|
|
12
11
|
use edr_primitives::bytecode::opcode::OpCode;
|
|
12
|
+
use edr_runtime::trace::BeforeMessage;
|
|
13
13
|
use napi::bindgen_prelude::{BigInt, Either3, Uint8Array};
|
|
14
14
|
use napi_derive::napi;
|
|
15
15
|
|
|
@@ -123,7 +123,7 @@ pub struct TracingStep {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
impl TracingStep {
|
|
126
|
-
pub fn new(step: &
|
|
126
|
+
pub fn new(step: &edr_runtime::trace::Step) -> Self {
|
|
127
127
|
let stack = step.stack.full().map_or_else(
|
|
128
128
|
|| {
|
|
129
129
|
step.stack
|
|
@@ -162,11 +162,11 @@ pub struct TracingMessageResult {
|
|
|
162
162
|
#[napi]
|
|
163
163
|
#[derive(Clone)]
|
|
164
164
|
pub struct RawTrace {
|
|
165
|
-
inner: Arc<
|
|
165
|
+
inner: Arc<edr_runtime::trace::Trace<EvmHaltReason>>,
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
impl From<Arc<
|
|
169
|
-
fn from(value: Arc<
|
|
168
|
+
impl From<Arc<edr_runtime::trace::Trace<EvmHaltReason>>> for RawTrace {
|
|
169
|
+
fn from(value: Arc<edr_runtime::trace::Trace<EvmHaltReason>>) -> Self {
|
|
170
170
|
Self { inner: value }
|
|
171
171
|
}
|
|
172
172
|
}
|
|
@@ -179,13 +179,15 @@ impl RawTrace {
|
|
|
179
179
|
.messages
|
|
180
180
|
.iter()
|
|
181
181
|
.map(|message| match message {
|
|
182
|
-
|
|
182
|
+
edr_runtime::trace::TraceMessage::Before(message) => {
|
|
183
183
|
Either3::A(TracingMessage::from(message))
|
|
184
184
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
edr_runtime::trace::TraceMessage::Step(step) => Either3::B(TracingStep::new(step)),
|
|
186
|
+
edr_runtime::trace::TraceMessage::After(message) => {
|
|
187
|
+
Either3::C(TracingMessageResult {
|
|
188
|
+
execution_result: ExecutionResult::from(message),
|
|
189
|
+
})
|
|
190
|
+
}
|
|
189
191
|
})
|
|
190
192
|
.collect()
|
|
191
193
|
}
|