@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.
Files changed (52) hide show
  1. package/coverage.sol +38 -0
  2. package/dist/src/ts/coverage.d.ts +6 -0
  3. package/dist/src/ts/coverage.d.ts.map +1 -0
  4. package/dist/src/ts/coverage.js +51 -0
  5. package/dist/src/ts/coverage.js.map +1 -0
  6. package/index.d.ts +267 -27
  7. package/index.js +5 -2
  8. package/package.json +21 -19
  9. package/src/account.rs +0 -124
  10. package/src/block.rs +0 -28
  11. package/src/call_override.rs +0 -116
  12. package/src/cast.rs +0 -165
  13. package/src/chains/generic.rs +0 -58
  14. package/src/chains/l1.rs +0 -268
  15. package/src/chains/op.rs +0 -424
  16. package/src/chains.rs +0 -7
  17. package/src/config.rs +0 -700
  18. package/src/context.rs +0 -447
  19. package/src/contract_decoder.rs +0 -57
  20. package/src/debug_trace.rs +0 -40
  21. package/src/gas_report.rs +0 -92
  22. package/src/instrument.rs +0 -109
  23. package/src/lib.rs +0 -50
  24. package/src/log.rs +0 -28
  25. package/src/logger.rs +0 -120
  26. package/src/mock/time.rs +0 -134
  27. package/src/mock.rs +0 -71
  28. package/src/precompile.rs +0 -50
  29. package/src/provider/factory.rs +0 -22
  30. package/src/provider/response.rs +0 -73
  31. package/src/provider.rs +0 -162
  32. package/src/result.rs +0 -212
  33. package/src/scenarios.rs +0 -53
  34. package/src/serde.rs +0 -57
  35. package/src/solidity_tests/artifact.rs +0 -184
  36. package/src/solidity_tests/config.rs +0 -793
  37. package/src/solidity_tests/factory.rs +0 -22
  38. package/src/solidity_tests/l1.rs +0 -68
  39. package/src/solidity_tests/op.rs +0 -69
  40. package/src/solidity_tests/runner.rs +0 -51
  41. package/src/solidity_tests/test_results.rs +0 -736
  42. package/src/solidity_tests.rs +0 -56
  43. package/src/subscription.rs +0 -32
  44. package/src/trace/debug.rs +0 -61
  45. package/src/trace/exit.rs +0 -89
  46. package/src/trace/library_utils.rs +0 -11
  47. package/src/trace/model.rs +0 -59
  48. package/src/trace/return_data.rs +0 -96
  49. package/src/trace/solidity_stack_trace.rs +0 -869
  50. package/src/trace.rs +0 -199
  51. package/src/ts/solidity_tests.ts +0 -46
  52. 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
- );