@nomicfoundation/edr 0.12.0-next.9 → 0.12.0
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/coverage.sol +38 -0
- package/dist/src/ts/coverage.d.ts +6 -0
- package/dist/src/ts/coverage.d.ts.map +1 -0
- package/dist/src/ts/coverage.js +51 -0
- package/dist/src/ts/coverage.js.map +1 -0
- package/index.d.ts +267 -27
- package/index.js +5 -2
- package/package.json +21 -19
- package/src/account.rs +0 -124
- package/src/block.rs +0 -28
- package/src/call_override.rs +0 -116
- package/src/cast.rs +0 -165
- package/src/chains/generic.rs +0 -58
- package/src/chains/l1.rs +0 -268
- package/src/chains/op.rs +0 -424
- package/src/chains.rs +0 -7
- package/src/config.rs +0 -700
- package/src/context.rs +0 -447
- package/src/contract_decoder.rs +0 -57
- package/src/debug_trace.rs +0 -40
- package/src/gas_report.rs +0 -92
- package/src/instrument.rs +0 -109
- package/src/lib.rs +0 -50
- package/src/log.rs +0 -28
- package/src/logger.rs +0 -120
- package/src/mock/time.rs +0 -134
- package/src/mock.rs +0 -71
- package/src/precompile.rs +0 -50
- package/src/provider/factory.rs +0 -22
- package/src/provider/response.rs +0 -73
- package/src/provider.rs +0 -162
- package/src/result.rs +0 -212
- package/src/scenarios.rs +0 -53
- package/src/serde.rs +0 -57
- package/src/solidity_tests/artifact.rs +0 -184
- package/src/solidity_tests/config.rs +0 -793
- package/src/solidity_tests/factory.rs +0 -22
- package/src/solidity_tests/l1.rs +0 -68
- package/src/solidity_tests/op.rs +0 -69
- package/src/solidity_tests/runner.rs +0 -51
- package/src/solidity_tests/test_results.rs +0 -736
- package/src/solidity_tests.rs +0 -56
- package/src/subscription.rs +0 -32
- package/src/trace/debug.rs +0 -61
- package/src/trace/exit.rs +0 -89
- package/src/trace/library_utils.rs +0 -11
- package/src/trace/model.rs +0 -59
- package/src/trace/return_data.rs +0 -96
- package/src/trace/solidity_stack_trace.rs +0 -869
- package/src/trace.rs +0 -199
- package/src/ts/solidity_tests.ts +0 -46
- package/src/withdrawal.rs +0 -49
package/src/chains/l1.rs
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
use std::{str::FromStr, sync::Arc};
|
|
2
|
-
|
|
3
|
-
use edr_chain_l1::L1ChainSpec;
|
|
4
|
-
use edr_evm::eips::{
|
|
5
|
-
eip2935::{HISTORY_STORAGE_ADDRESS, HISTORY_STORAGE_UNSUPPORTED_BYTECODE},
|
|
6
|
-
eip4788::{BEACON_ROOTS_ADDRESS, BEACON_ROOTS_BYTECODE},
|
|
7
|
-
};
|
|
8
|
-
use edr_napi_core::{
|
|
9
|
-
logger::Logger,
|
|
10
|
-
provider::{SyncProvider, SyncProviderFactory},
|
|
11
|
-
subscription::subscriber_callback_for_chain_spec,
|
|
12
|
-
};
|
|
13
|
-
use edr_provider::time::CurrentTime;
|
|
14
|
-
use edr_solidity::contract_decoder::ContractDecoder;
|
|
15
|
-
use napi::{
|
|
16
|
-
bindgen_prelude::{BigInt, Uint8Array},
|
|
17
|
-
tokio::runtime,
|
|
18
|
-
};
|
|
19
|
-
use napi_derive::napi;
|
|
20
|
-
|
|
21
|
-
use crate::{account::AccountOverride, provider::ProviderFactory};
|
|
22
|
-
|
|
23
|
-
pub struct L1ProviderFactory;
|
|
24
|
-
|
|
25
|
-
impl SyncProviderFactory for L1ProviderFactory {
|
|
26
|
-
fn create_provider(
|
|
27
|
-
&self,
|
|
28
|
-
runtime: runtime::Handle,
|
|
29
|
-
provider_config: edr_napi_core::provider::Config,
|
|
30
|
-
logger_config: edr_napi_core::logger::Config,
|
|
31
|
-
subscription_callback: edr_napi_core::subscription::Callback,
|
|
32
|
-
contract_decoder: Arc<ContractDecoder>,
|
|
33
|
-
) -> napi::Result<Arc<dyn SyncProvider>> {
|
|
34
|
-
let logger =
|
|
35
|
-
Logger::<L1ChainSpec, CurrentTime>::new(logger_config, Arc::clone(&contract_decoder))?;
|
|
36
|
-
|
|
37
|
-
let provider_config =
|
|
38
|
-
edr_provider::ProviderConfig::<edr_chain_l1::Hardfork>::try_from(provider_config)?;
|
|
39
|
-
|
|
40
|
-
let provider = edr_provider::Provider::<L1ChainSpec>::new(
|
|
41
|
-
runtime.clone(),
|
|
42
|
-
Box::new(logger),
|
|
43
|
-
subscriber_callback_for_chain_spec::<L1ChainSpec, CurrentTime>(subscription_callback),
|
|
44
|
-
provider_config,
|
|
45
|
-
contract_decoder,
|
|
46
|
-
CurrentTime,
|
|
47
|
-
)
|
|
48
|
-
.map_err(|error| napi::Error::new(napi::Status::GenericFailure, error.to_string()))?;
|
|
49
|
-
|
|
50
|
-
Ok(Arc::new(provider))
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
#[napi]
|
|
55
|
-
pub const L1_CHAIN_TYPE: &str = edr_chain_l1::CHAIN_TYPE;
|
|
56
|
-
|
|
57
|
-
#[napi(catch_unwind)]
|
|
58
|
-
pub fn l1_genesis_state(hardfork: SpecId) -> Vec<AccountOverride> {
|
|
59
|
-
// Use closures for lazy execution
|
|
60
|
-
let beacon_roots_account_constructor = || AccountOverride {
|
|
61
|
-
address: Uint8Array::with_data_copied(BEACON_ROOTS_ADDRESS),
|
|
62
|
-
balance: Some(BigInt::from(0u64)),
|
|
63
|
-
nonce: Some(BigInt::from(0u64)),
|
|
64
|
-
code: Some(Uint8Array::with_data_copied(&BEACON_ROOTS_BYTECODE)),
|
|
65
|
-
storage: Some(Vec::new()),
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
let history_storage_account_constructor = || AccountOverride {
|
|
69
|
-
address: Uint8Array::with_data_copied(HISTORY_STORAGE_ADDRESS),
|
|
70
|
-
balance: Some(BigInt::from(0u64)),
|
|
71
|
-
nonce: Some(BigInt::from(0u64)),
|
|
72
|
-
code: Some(Uint8Array::with_data_copied(
|
|
73
|
-
&HISTORY_STORAGE_UNSUPPORTED_BYTECODE,
|
|
74
|
-
)),
|
|
75
|
-
storage: Some(Vec::new()),
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
if hardfork < SpecId::Cancun {
|
|
79
|
-
Vec::new()
|
|
80
|
-
} else if hardfork < SpecId::Prague {
|
|
81
|
-
vec![beacon_roots_account_constructor()]
|
|
82
|
-
} else {
|
|
83
|
-
vec![
|
|
84
|
-
beacon_roots_account_constructor(),
|
|
85
|
-
history_storage_account_constructor(),
|
|
86
|
-
]
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
#[napi(catch_unwind)]
|
|
91
|
-
pub fn l1_provider_factory() -> ProviderFactory {
|
|
92
|
-
let factory: Arc<dyn SyncProviderFactory> = Arc::new(L1ProviderFactory);
|
|
93
|
-
factory.into()
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/// Identifier for the Ethereum spec.
|
|
97
|
-
#[napi]
|
|
98
|
-
#[derive(PartialEq, Eq, PartialOrd, Ord)]
|
|
99
|
-
pub enum SpecId {
|
|
100
|
-
/// Frontier
|
|
101
|
-
Frontier = 0,
|
|
102
|
-
/// Frontier Thawing
|
|
103
|
-
FrontierThawing = 1,
|
|
104
|
-
/// Homestead
|
|
105
|
-
Homestead = 2,
|
|
106
|
-
/// DAO Fork
|
|
107
|
-
DaoFork = 3,
|
|
108
|
-
/// Tangerine
|
|
109
|
-
Tangerine = 4,
|
|
110
|
-
/// Spurious Dragon
|
|
111
|
-
SpuriousDragon = 5,
|
|
112
|
-
/// Byzantium
|
|
113
|
-
Byzantium = 6,
|
|
114
|
-
/// Constantinople
|
|
115
|
-
Constantinople = 7,
|
|
116
|
-
/// Petersburg
|
|
117
|
-
Petersburg = 8,
|
|
118
|
-
/// Istanbul
|
|
119
|
-
Istanbul = 9,
|
|
120
|
-
/// Muir Glacier
|
|
121
|
-
MuirGlacier = 10,
|
|
122
|
-
/// Berlin
|
|
123
|
-
Berlin = 11,
|
|
124
|
-
/// London
|
|
125
|
-
London = 12,
|
|
126
|
-
/// Arrow Glacier
|
|
127
|
-
ArrowGlacier = 13,
|
|
128
|
-
/// Gray Glacier
|
|
129
|
-
GrayGlacier = 14,
|
|
130
|
-
/// Merge
|
|
131
|
-
Merge = 15,
|
|
132
|
-
/// Shanghai
|
|
133
|
-
Shanghai = 16,
|
|
134
|
-
/// Cancun
|
|
135
|
-
Cancun = 17,
|
|
136
|
-
/// Prague
|
|
137
|
-
Prague = 18,
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
impl FromStr for SpecId {
|
|
141
|
-
type Err = napi::Error;
|
|
142
|
-
|
|
143
|
-
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
144
|
-
match s {
|
|
145
|
-
edr_chain_l1::hardfork::name::FRONTIER => Ok(SpecId::Frontier),
|
|
146
|
-
edr_chain_l1::hardfork::name::FRONTIER_THAWING => Ok(SpecId::FrontierThawing),
|
|
147
|
-
edr_chain_l1::hardfork::name::HOMESTEAD => Ok(SpecId::Homestead),
|
|
148
|
-
edr_chain_l1::hardfork::name::DAO_FORK => Ok(SpecId::DaoFork),
|
|
149
|
-
edr_chain_l1::hardfork::name::TANGERINE => Ok(SpecId::Tangerine),
|
|
150
|
-
edr_chain_l1::hardfork::name::SPURIOUS_DRAGON => Ok(SpecId::SpuriousDragon),
|
|
151
|
-
edr_chain_l1::hardfork::name::BYZANTIUM => Ok(SpecId::Byzantium),
|
|
152
|
-
edr_chain_l1::hardfork::name::CONSTANTINOPLE => Ok(SpecId::Constantinople),
|
|
153
|
-
edr_chain_l1::hardfork::name::PETERSBURG => Ok(SpecId::Petersburg),
|
|
154
|
-
edr_chain_l1::hardfork::name::ISTANBUL => Ok(SpecId::Istanbul),
|
|
155
|
-
edr_chain_l1::hardfork::name::MUIR_GLACIER => Ok(SpecId::MuirGlacier),
|
|
156
|
-
edr_chain_l1::hardfork::name::BERLIN => Ok(SpecId::Berlin),
|
|
157
|
-
edr_chain_l1::hardfork::name::LONDON => Ok(SpecId::London),
|
|
158
|
-
edr_chain_l1::hardfork::name::ARROW_GLACIER => Ok(SpecId::ArrowGlacier),
|
|
159
|
-
edr_chain_l1::hardfork::name::GRAY_GLACIER => Ok(SpecId::GrayGlacier),
|
|
160
|
-
edr_chain_l1::hardfork::name::MERGE => Ok(SpecId::Merge),
|
|
161
|
-
edr_chain_l1::hardfork::name::SHANGHAI => Ok(SpecId::Shanghai),
|
|
162
|
-
edr_chain_l1::hardfork::name::CANCUN => Ok(SpecId::Cancun),
|
|
163
|
-
edr_chain_l1::hardfork::name::PRAGUE => Ok(SpecId::Prague),
|
|
164
|
-
_ => Err(napi::Error::new(
|
|
165
|
-
napi::Status::InvalidArg,
|
|
166
|
-
format!("The provided hardfork `{s}` is not supported."),
|
|
167
|
-
)),
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
impl From<SpecId> for edr_chain_l1::Hardfork {
|
|
173
|
-
fn from(value: SpecId) -> Self {
|
|
174
|
-
match value {
|
|
175
|
-
SpecId::Frontier => edr_chain_l1::Hardfork::FRONTIER,
|
|
176
|
-
SpecId::FrontierThawing => edr_chain_l1::Hardfork::FRONTIER_THAWING,
|
|
177
|
-
SpecId::Homestead => edr_chain_l1::Hardfork::HOMESTEAD,
|
|
178
|
-
SpecId::DaoFork => edr_chain_l1::Hardfork::DAO_FORK,
|
|
179
|
-
SpecId::Tangerine => edr_chain_l1::Hardfork::TANGERINE,
|
|
180
|
-
SpecId::SpuriousDragon => edr_chain_l1::Hardfork::SPURIOUS_DRAGON,
|
|
181
|
-
SpecId::Byzantium => edr_chain_l1::Hardfork::BYZANTIUM,
|
|
182
|
-
SpecId::Constantinople => edr_chain_l1::Hardfork::CONSTANTINOPLE,
|
|
183
|
-
SpecId::Petersburg => edr_chain_l1::Hardfork::PETERSBURG,
|
|
184
|
-
SpecId::Istanbul => edr_chain_l1::Hardfork::ISTANBUL,
|
|
185
|
-
SpecId::MuirGlacier => edr_chain_l1::Hardfork::MUIR_GLACIER,
|
|
186
|
-
SpecId::Berlin => edr_chain_l1::Hardfork::BERLIN,
|
|
187
|
-
SpecId::London => edr_chain_l1::Hardfork::LONDON,
|
|
188
|
-
SpecId::ArrowGlacier => edr_chain_l1::Hardfork::ARROW_GLACIER,
|
|
189
|
-
SpecId::GrayGlacier => edr_chain_l1::Hardfork::GRAY_GLACIER,
|
|
190
|
-
SpecId::Merge => edr_chain_l1::Hardfork::MERGE,
|
|
191
|
-
SpecId::Shanghai => edr_chain_l1::Hardfork::SHANGHAI,
|
|
192
|
-
SpecId::Cancun => edr_chain_l1::Hardfork::CANCUN,
|
|
193
|
-
SpecId::Prague => edr_chain_l1::Hardfork::PRAGUE,
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/// Tries to parse the provided string to create a [`SpecId`] instance.
|
|
199
|
-
///
|
|
200
|
-
/// Returns an error if the string does not match any known hardfork.
|
|
201
|
-
#[napi(catch_unwind)]
|
|
202
|
-
pub fn l1_hardfork_from_string(hardfork: String) -> napi::Result<SpecId> {
|
|
203
|
-
hardfork.parse()
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
#[napi(catch_unwind)]
|
|
207
|
-
pub fn l1_hardfork_to_string(harfork: SpecId) -> &'static str {
|
|
208
|
-
match harfork {
|
|
209
|
-
SpecId::Frontier => edr_chain_l1::hardfork::name::FRONTIER,
|
|
210
|
-
SpecId::FrontierThawing => edr_chain_l1::hardfork::name::FRONTIER_THAWING,
|
|
211
|
-
SpecId::Homestead => edr_chain_l1::hardfork::name::HOMESTEAD,
|
|
212
|
-
SpecId::DaoFork => edr_chain_l1::hardfork::name::DAO_FORK,
|
|
213
|
-
SpecId::Tangerine => edr_chain_l1::hardfork::name::TANGERINE,
|
|
214
|
-
SpecId::SpuriousDragon => edr_chain_l1::hardfork::name::SPURIOUS_DRAGON,
|
|
215
|
-
SpecId::Byzantium => edr_chain_l1::hardfork::name::BYZANTIUM,
|
|
216
|
-
SpecId::Constantinople => edr_chain_l1::hardfork::name::CONSTANTINOPLE,
|
|
217
|
-
SpecId::Petersburg => edr_chain_l1::hardfork::name::PETERSBURG,
|
|
218
|
-
SpecId::Istanbul => edr_chain_l1::hardfork::name::ISTANBUL,
|
|
219
|
-
SpecId::MuirGlacier => edr_chain_l1::hardfork::name::MUIR_GLACIER,
|
|
220
|
-
SpecId::Berlin => edr_chain_l1::hardfork::name::BERLIN,
|
|
221
|
-
SpecId::London => edr_chain_l1::hardfork::name::LONDON,
|
|
222
|
-
SpecId::ArrowGlacier => edr_chain_l1::hardfork::name::ARROW_GLACIER,
|
|
223
|
-
SpecId::GrayGlacier => edr_chain_l1::hardfork::name::GRAY_GLACIER,
|
|
224
|
-
SpecId::Merge => edr_chain_l1::hardfork::name::MERGE,
|
|
225
|
-
SpecId::Shanghai => edr_chain_l1::hardfork::name::SHANGHAI,
|
|
226
|
-
SpecId::Cancun => edr_chain_l1::hardfork::name::CANCUN,
|
|
227
|
-
SpecId::Prague => edr_chain_l1::hardfork::name::PRAGUE,
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/// Returns the latest supported OP hardfork.
|
|
232
|
-
///
|
|
233
|
-
/// The returned value will be updated after each network upgrade.
|
|
234
|
-
#[napi]
|
|
235
|
-
pub fn l1_hardfork_latest() -> SpecId {
|
|
236
|
-
SpecId::Prague
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
macro_rules! export_spec_id {
|
|
240
|
-
($($variant:ident),*) => {
|
|
241
|
-
$(
|
|
242
|
-
#[napi]
|
|
243
|
-
pub const $variant: &str = edr_chain_l1::hardfork::name::$variant;
|
|
244
|
-
)*
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
export_spec_id!(
|
|
249
|
-
FRONTIER,
|
|
250
|
-
FRONTIER_THAWING,
|
|
251
|
-
HOMESTEAD,
|
|
252
|
-
DAO_FORK,
|
|
253
|
-
TANGERINE,
|
|
254
|
-
SPURIOUS_DRAGON,
|
|
255
|
-
BYZANTIUM,
|
|
256
|
-
CONSTANTINOPLE,
|
|
257
|
-
PETERSBURG,
|
|
258
|
-
ISTANBUL,
|
|
259
|
-
MUIR_GLACIER,
|
|
260
|
-
BERLIN,
|
|
261
|
-
LONDON,
|
|
262
|
-
ARROW_GLACIER,
|
|
263
|
-
GRAY_GLACIER,
|
|
264
|
-
MERGE,
|
|
265
|
-
SHANGHAI,
|
|
266
|
-
CANCUN,
|
|
267
|
-
PRAGUE
|
|
268
|
-
);
|