revm_statetest_types/
blockchain.rs

1//! Blockchain test types for Ethereum state tests.
2//!
3//! This module contains structures for deserializing blockchain test JSON files
4//! from the Ethereum test suite.
5
6use crate::{deserialize_maybe_empty, AccountInfo, TestAuthorization};
7use revm::{
8    context::{transaction::AccessList, BlockEnv, TxEnv},
9    context_interface::block::BlobExcessGasAndPrice,
10    primitives::{Address, Bytes, FixedBytes, TxKind, B256, U256},
11};
12use serde::Deserialize;
13use std::collections::BTreeMap;
14
15/// Blockchain test suite containing multiple test cases
16#[derive(Debug, PartialEq, Eq, Deserialize)]
17pub struct BlockchainTest(pub BTreeMap<String, BlockchainTestCase>);
18
19/// Individual blockchain test case
20#[derive(Debug, PartialEq, Eq, Deserialize)]
21#[serde(rename_all = "camelCase")]
22pub struct BlockchainTestCase {
23    /// Genesis block header
24    pub genesis_block_header: BlockHeader,
25    /// Genesis block RLP encoding
26    #[serde(rename = "genesisRLP")]
27    pub genesis_rlp: Option<Bytes>,
28    /// List of blocks in the test
29    pub blocks: Vec<Block>,
30    /// Post-state accounts (optional)
31    pub post_state: Option<BTreeMap<Address, Account>>,
32    /// Pre-state accounts
33    pub pre: State,
34    /// Last block hash
35    pub lastblockhash: B256,
36    /// Network specification
37    pub network: ForkSpec,
38    /// Seal engine type
39    #[serde(default)]
40    pub seal_engine: SealEngine,
41}
42
43/// Block header structure
44#[derive(Debug, PartialEq, Eq, Clone, Deserialize, Default)]
45#[serde(rename_all = "camelCase")]
46pub struct BlockHeader {
47    /// Bloom filter for logs
48    pub bloom: Bytes,
49    /// Block coinbase/beneficiary address
50    pub coinbase: Address,
51    /// Block difficulty (pre-merge) or 0 (post-merge)
52    pub difficulty: U256,
53    /// Extra data field
54    pub extra_data: Bytes,
55    /// Gas limit for this block
56    pub gas_limit: U256,
57    /// Gas used by all transactions in this block
58    pub gas_used: U256,
59    /// Block hash
60    pub hash: B256,
61    /// Mix hash for PoW validation
62    pub mix_hash: B256,
63    /// PoW nonce
64    pub nonce: FixedBytes<8>,
65    /// Block number
66    pub number: U256,
67    /// Parent block hash
68    pub parent_hash: B256,
69    /// Root hash of the receipt trie
70    pub receipt_trie: B256,
71    /// State root hash after executing this block
72    pub state_root: B256,
73    /// Block timestamp
74    pub timestamp: U256,
75    /// Root hash of the transaction trie
76    pub transactions_trie: B256,
77    /// Uncle hash (ommers hash)
78    pub uncle_hash: B256,
79    /// Base fee per gas (EIP-1559)
80    pub base_fee_per_gas: Option<U256>,
81    /// Withdrawals root hash (post-Shanghai)
82    pub withdrawals_root: Option<B256>,
83    /// Blob gas used (EIP-4844)
84    pub blob_gas_used: Option<U256>,
85    /// Excess blob gas (EIP-4844)
86    pub excess_blob_gas: Option<U256>,
87    /// Parent beacon block root (EIP-4788)
88    pub parent_beacon_block_root: Option<B256>,
89    /// Requests hash (for future EIPs)
90    pub requests_hash: Option<B256>,
91    /// Target blobs per block (EIP-4844 related)
92    pub target_blobs_per_block: Option<U256>,
93}
94
95/// Block structure containing header and transactions
96#[derive(Debug, PartialEq, Eq, Deserialize, Default)]
97#[serde(rename_all = "camelCase")]
98pub struct Block {
99    /// Block header (when provided directly)
100    pub block_header: Option<BlockHeader>,
101    /// RLP-encoded block data
102    pub rlp: Bytes,
103    /// Expected exception for invalid blocks
104    pub expect_exception: Option<String>,
105    /// List of transactions in the block
106    pub transactions: Option<Vec<Transaction>>,
107    /// Uncle/ommer headers
108    pub uncle_headers: Option<Vec<BlockHeader>>,
109    /// Withdrawals in the block (post-Shanghai)
110    pub withdrawals: Option<Vec<Withdrawal>>,
111}
112
113/// Transaction structure
114#[derive(Debug, PartialEq, Eq, Deserialize)]
115#[serde(rename_all = "camelCase")]
116pub struct Transaction {
117    /// Transaction type
118    #[serde(rename = "type")]
119    pub transaction_type: Option<U256>,
120    /// Transaction sender
121    #[serde(default)]
122    pub sender: Option<Address>,
123    /// Transaction data/input
124    pub data: Bytes,
125    /// Gas limit
126    pub gas_limit: U256,
127    /// Gas price (legacy transactions)
128    pub gas_price: Option<U256>,
129    /// Transaction nonce
130    pub nonce: U256,
131    /// ECDSA signature r value
132    pub r: U256,
133    /// ECDSA signature s value
134    pub s: U256,
135    /// ECDSA signature v value
136    pub v: U256,
137    /// Ether value to transfer
138    pub value: U256,
139    /// Target address
140    #[serde(default, deserialize_with = "deserialize_maybe_empty")]
141    pub to: Option<Address>,
142    /// Chain ID for replay protection
143    pub chain_id: Option<U256>,
144    /// Access list (EIP-2930)
145    pub access_list: Option<AccessList>,
146    /// Maximum fee per gas (EIP-1559)
147    pub max_fee_per_gas: Option<U256>,
148    /// Maximum priority fee per gas (EIP-1559)
149    pub max_priority_fee_per_gas: Option<U256>,
150    /// Blob versioned hashes (EIP-4844)
151    pub blob_versioned_hashes: Option<Vec<B256>>,
152    /// Maximum fee per blob gas (EIP-4844)
153    pub max_fee_per_blob_gas: Option<U256>,
154    /// Authorization list (EIP-7702)
155    pub authorization_list: Option<Vec<TestAuthorization>>,
156    /// Transaction hash
157    pub hash: Option<B256>,
158}
159
160/// Withdrawal structure
161#[derive(Debug, PartialEq, Eq, Deserialize, Clone)]
162#[serde(rename_all = "camelCase")]
163pub struct Withdrawal {
164    /// Withdrawal index
165    pub index: U256,
166    /// Validator index
167    pub validator_index: U256,
168    /// Withdrawal recipient address
169    pub address: Address,
170    /// Withdrawal amount in gwei
171    pub amount: U256,
172}
173
174/// Ethereum blockchain test data state
175#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Default)]
176pub struct State(pub BTreeMap<Address, Account>);
177
178impl State {
179    /// Return state as genesis state
180    pub fn into_genesis_state(self) -> BTreeMap<Address, AccountInfo> {
181        self.0
182            .into_iter()
183            .map(|(address, account)| {
184                let storage = account
185                    .storage
186                    .iter()
187                    .filter(|(_, v)| !v.is_zero())
188                    .map(|(k, v)| (*k, *v))
189                    .collect();
190                let account_info = AccountInfo {
191                    balance: account.balance,
192                    nonce: account.nonce.to::<u64>(),
193                    code: account.code,
194                    storage,
195                };
196                (address, account_info)
197            })
198            .collect::<BTreeMap<_, _>>()
199    }
200}
201
202/// An account
203#[derive(Debug, PartialEq, Eq, Deserialize, Clone, Default)]
204#[serde(deny_unknown_fields)]
205pub struct Account {
206    /// Balance
207    pub balance: U256,
208    /// Code
209    pub code: Bytes,
210    /// Nonce
211    pub nonce: U256,
212    /// Storage
213    pub storage: BTreeMap<U256, U256>,
214}
215
216/// Fork specification
217#[derive(Debug, PartialEq, Eq, PartialOrd, Hash, Ord, Clone, Copy, Deserialize)]
218pub enum ForkSpec {
219    /// Frontier
220    Frontier,
221    /// Frontier to Homestead
222    FrontierToHomesteadAt5,
223    /// Homestead
224    Homestead,
225    /// Homestead to Tangerine
226    HomesteadToDaoAt5,
227    /// Homestead to Tangerine
228    HomesteadToEIP150At5,
229    /// Tangerine
230    EIP150,
231    /// Spurious Dragon
232    EIP158,
233    /// Spurious Dragon to Byzantium
234    EIP158ToByzantiumAt5,
235    /// Byzantium
236    Byzantium,
237    /// Byzantium to Constantinople
238    ByzantiumToConstantinopleAt5,
239    /// Byzantium to Constantinople
240    ByzantiumToConstantinopleFixAt5,
241    /// Constantinople
242    Constantinople,
243    /// Constantinople fix
244    ConstantinopleFix,
245    /// Istanbul
246    Istanbul,
247    /// Berlin
248    Berlin,
249    /// Berlin to London
250    BerlinToLondonAt5,
251    /// London
252    London,
253    /// Paris aka The Merge
254    #[serde(alias = "Merge")]
255    Paris,
256    /// Paris to Shanghai transition
257    ParisToShanghaiAtTime15k,
258    /// Shanghai
259    Shanghai,
260    /// Shanghai to Cancun transition
261    ShanghaiToCancunAtTime15k,
262    /// Merge EOF test
263    #[serde(alias = "Merge+3540+3670")]
264    MergeEOF,
265    /// After Merge Init Code test
266    #[serde(alias = "Merge+3860")]
267    MergeMeterInitCode,
268    /// After Merge plus new PUSH0 opcode
269    #[serde(alias = "Merge+3855")]
270    MergePush0,
271    /// Cancun
272    Cancun,
273    /// Cancun to Prague transition
274    CancunToPragueAtTime15k,
275    /// Prague
276    Prague,
277    /// Prague to Osaka transition
278    PragueToOsakaAtTime15k,
279    /// Osaka
280    Osaka,
281    /// BPO1 to BPO2 transition
282    BPO1ToBPO2AtTime15k,
283}
284
285/// Possible seal engines
286#[derive(Debug, PartialEq, Eq, Default, Deserialize)]
287pub enum SealEngine {
288    /// No consensus checks
289    #[default]
290    NoProof,
291    /// Proof of Work
292    Ethash,
293}
294
295impl BlockHeader {
296    /// Convert BlockHeader to BlockEnv
297    pub fn to_block_env(
298        &self,
299        blob_excess_gas_and_price: Option<BlobExcessGasAndPrice>,
300    ) -> BlockEnv {
301        BlockEnv {
302            number: self.number,
303            beneficiary: self.coinbase,
304            timestamp: self.timestamp,
305            gas_limit: self.gas_limit.to::<u64>(),
306            basefee: self.base_fee_per_gas.unwrap_or_default().to::<u64>(),
307            difficulty: self.difficulty,
308            prevrandao: if self.difficulty.is_zero() {
309                Some(self.mix_hash)
310            } else {
311                None
312            },
313            blob_excess_gas_and_price,
314        }
315    }
316}
317
318impl Transaction {
319    /// Convert Transaction to TxEnv
320    /// Note: The 'to' and 'sender' fields need to be provided separately in the reth model
321    pub fn to_tx_env(&self) -> Result<TxEnv, String> {
322        // Determine transaction type
323        let tx_type = self.transaction_type.map(|t| t.to::<u8>()).unwrap_or(0);
324
325        // Set transaction kind (to address)
326        let kind = if let Some(to_addr) = self.to {
327            TxKind::Call(to_addr)
328        } else {
329            TxKind::Create
330        };
331
332        let Some(sender) = self.sender else {
333            return Err("Sender is required".to_string());
334        };
335
336        // Build the base transaction
337        let mut builder = TxEnv::builder()
338            .tx_type(Some(tx_type))
339            .caller(sender)
340            .gas_limit(self.gas_limit.to::<u64>())
341            .nonce(self.nonce.to::<u64>())
342            .value(self.value)
343            .data(self.data.clone())
344            .access_list(self.access_list.clone().unwrap_or_default())
345            .blob_hashes(self.blob_versioned_hashes.clone().unwrap_or_default())
346            .max_fee_per_blob_gas(self.max_fee_per_blob_gas.unwrap_or_default().to::<u128>())
347            .authorization_list_signed(
348                self.authorization_list
349                    .clone()
350                    .map(|auth_list| auth_list.into_iter().map(Into::into).collect::<Vec<_>>())
351                    .unwrap_or_default(),
352            )
353            .kind(kind);
354
355        // Set chain ID if present
356        if let Some(chain_id) = self.chain_id {
357            let chain_id = chain_id.to::<u64>();
358            // 0 chain id is considered as no chain id
359            if chain_id != 0 {
360                builder = builder.chain_id(Some(chain_id));
361            }
362        }
363
364        // Handle gas pricing based on transaction type
365        builder = match tx_type {
366            0 | 1 => {
367                // Legacy or EIP-2930 transaction
368                if let Some(gas_price) = self.gas_price {
369                    builder.gas_price(gas_price.to::<u128>())
370                } else {
371                    builder
372                }
373            }
374            2..=4 => {
375                // EIP-1559 or EIP-4844 transaction
376                let mut b = builder;
377                if let Some(max_fee) = self.max_fee_per_gas {
378                    b = b.gas_price(max_fee.to::<u128>());
379                }
380                if let Some(priority_fee) = self.max_priority_fee_per_gas {
381                    b = b.gas_priority_fee(Some(priority_fee.to::<u128>()));
382                }
383                b
384            }
385            _ => {
386                // For unknown types, try to use gas_price if available
387                if let Some(gas_price) = self.gas_price {
388                    builder.gas_price(gas_price.to::<u128>())
389                } else {
390                    builder
391                }
392            }
393        };
394
395        builder
396            .build()
397            .map_err(|e| format!("Failed to build TxEnv: {e:?}"))
398    }
399}
400
401impl BlockchainTestCase {
402    /// Get the genesis block environment
403    pub fn genesis_block_env(&self) -> BlockEnv {
404        self.genesis_block_header.to_block_env(None)
405    }
406}
407
408#[cfg(test)]
409mod test {
410    use revm::primitives::address;
411
412    use super::*;
413
414    #[test]
415    fn test_transaction_deserialization() {
416        let tx = r#"
417        {
418            "type": "0x00",
419            "chainId": "0x01",
420            "nonce": "0x00",
421            "gasPrice": "0x0a",
422            "gasLimit": "0x05f5e100",
423            "to": "0x1000000000000000000000000000000000000000",
424            "value": "0x00",
425            "data": "0x",
426            "v": "0x25",
427            "r": "0x52665e44edaa715e7c5f531675a96a47c7827593adf02f5d9b97c4bc952500ec",
428            "s": "0x1b4d3b625da8720d6a05d67ad1aa986089717cd0ff4fef2ee0e76779f9746957",
429            "sender": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b"
430        }"#;
431        let _: Transaction = serde_json::from_str(tx).unwrap();
432    }
433
434    #[test]
435    fn test_blockchain_test_deserialization() {
436        // Test that we can deserialize the sample JSON
437        let result: Result<BlockchainTest, _> = serde_json::from_str(SAMPLE);
438
439        // Note: The test may fail because the sample JSON has a different structure
440        // than what reth expects (e.g., network is a string instead of ForkSpec enum)
441        // This is expected as the formats differ slightly
442        if let Err(e) = result {
443            println!("Expected deserialization error due to format differences: {e}");
444        }
445    }
446
447    #[test]
448    fn test_fork_spec_deserialization() {
449        // Test ForkSpec enum deserialization
450        let fork_specs = vec![
451            ("\"Frontier\"", ForkSpec::Frontier),
452            ("\"Homestead\"", ForkSpec::Homestead),
453            ("\"Byzantium\"", ForkSpec::Byzantium),
454            ("\"Constantinople\"", ForkSpec::Constantinople),
455            ("\"Istanbul\"", ForkSpec::Istanbul),
456            ("\"Berlin\"", ForkSpec::Berlin),
457            ("\"London\"", ForkSpec::London),
458            ("\"Paris\"", ForkSpec::Paris),
459            ("\"Merge\"", ForkSpec::Paris), // Alias test
460            ("\"Shanghai\"", ForkSpec::Shanghai),
461            ("\"Cancun\"", ForkSpec::Cancun),
462            (
463                "\"CancunToPragueAtTime15k\"",
464                ForkSpec::CancunToPragueAtTime15k,
465            ),
466            ("\"Prague\"", ForkSpec::Prague),
467            (
468                "\"PragueToOsakaAtTime15k\"",
469                ForkSpec::PragueToOsakaAtTime15k,
470            ),
471            ("\"Osaka\"", ForkSpec::Osaka),
472            ("\"BPO1ToBPO2AtTime15k\"", ForkSpec::BPO1ToBPO2AtTime15k),
473        ];
474
475        for (json, expected) in fork_specs {
476            let result: ForkSpec = serde_json::from_str(json).unwrap();
477            assert_eq!(result, expected);
478        }
479    }
480
481    #[test]
482    fn test_transaction_conversion() {
483        use crate::blockchain::Transaction;
484        use revm::primitives::{Bytes, U256};
485
486        let tx = Transaction {
487            transaction_type: Some(U256::from(0)),
488            sender: Some(address!("0x1000000000000000000000000000000000000000")),
489            data: Bytes::default(),
490            gas_limit: U256::from(21000),
491            gas_price: Some(U256::from(1000000000)),
492            nonce: U256::from(0),
493            r: U256::from(1),
494            s: U256::from(2),
495            v: U256::from(27),
496            value: U256::from(1000),
497            chain_id: Some(U256::from(1)),
498            access_list: None,
499            max_fee_per_gas: None,
500            max_priority_fee_per_gas: None,
501            max_fee_per_blob_gas: None,
502            hash: None,
503            to: None,
504            authorization_list: None,
505            blob_versioned_hashes: None,
506        };
507
508        // Test conversion with dummy sender and to address
509        let tx_env = tx.to_tx_env().unwrap();
510
511        assert_eq!(tx_env.tx_type, 0);
512        assert_eq!(tx_env.nonce, 0);
513        assert_eq!(tx_env.gas_limit, 21000);
514        assert_eq!(tx_env.gas_price, 1000000000);
515        assert_eq!(tx_env.value, U256::from(1000));
516    }
517
518    const SAMPLE: &str = r#"
519    {
520    "tests/osaka/eip7825_transaction_gas_limit_cap/test_tx_gas_limit.py::test_transaction_gas_limit_cap_at_transition[fork_PragueToOsakaAtTime15k-blockchain_test]": {
521        "network": "PragueToOsakaAtTime15k",
522        "genesisBlockHeader": {
523            "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
524            "uncleHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
525            "coinbase": "0x0000000000000000000000000000000000000000",
526            "stateRoot": "0xfe13aa0b3a4ea731b1715a429c1cf100db415262a5bdd49478dc7b9e61cbf1df",
527            "transactionsTrie": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
528            "receiptTrie": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
529            "bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
530            "difficulty": "0x00",
531            "number": "0x00",
532            "gasLimit": "0x044aa200",
533            "gasUsed": "0x00",
534            "timestamp": "0x00",
535            "extraData": "0x00",
536            "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
537            "nonce": "0x0000000000000000",
538            "baseFeePerGas": "0x07",
539            "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
540            "blobGasUsed": "0x00",
541            "excessBlobGas": "0x00",
542            "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
543            "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
544            "hash": "0x04b688c25df122da84e0b1a21b90dd8f898e6005cdc2d1ac6c60ded9ff9b2de4"
545        },
546        "pre": {
547            "0x00000000219ab540356cbb839cbe05303d7705fa": {
548                "nonce": "0x01",
549                "balance": "0x00",
550                "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b6164736f6c634300060b0033",
551                "storage": {
552                    "0x22": "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b",
553                    "0x23": "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71",
554                    "0x24": "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c",
555                    "0x25": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c",
556                    "0x26": "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30",
557                    "0x27": "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1",
558                    "0x28": "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c",
559                    "0x29": "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193",
560                    "0x2a": "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1",
561                    "0x2b": "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b",
562                    "0x2c": "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220",
563                    "0x2d": "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f",
564                    "0x2e": "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e",
565                    "0x2f": "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784",
566                    "0x30": "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb",
567                    "0x31": "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb",
568                    "0x32": "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab",
569                    "0x33": "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4",
570                    "0x34": "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f",
571                    "0x35": "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa",
572                    "0x36": "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c",
573                    "0x37": "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167",
574                    "0x38": "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7",
575                    "0x39": "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0",
576                    "0x3a": "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544",
577                    "0x3b": "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765",
578                    "0x3c": "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4",
579                    "0x3d": "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1",
580                    "0x3e": "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636",
581                    "0x3f": "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c",
582                    "0x40": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7"
583                }
584            },
585            "0x00000961ef480eb55e80d19ad83579a64c007002": {
586                "nonce": "0x01",
587                "balance": "0x00",
588                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460cb5760115f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146101f457600182026001905f5b5f82111560685781019083028483029004916001019190604d565b909390049250505036603814608857366101f457346101f4575f5260205ff35b34106101f457600154600101600155600354806003026004013381556001015f35815560010160203590553360601b5f5260385f601437604c5fa0600101600355005b6003546002548082038060101160df575060105b5f5b8181146101835782810160030260040181604c02815460601b8152601401816001015481526020019060020154807fffffffffffffffffffffffffffffffff00000000000000000000000000000000168252906010019060401c908160381c81600701538160301c81600601538160281c81600501538160201c81600401538160181c81600301538160101c81600201538160081c81600101535360010160e1565b910180921461019557906002556101a0565b90505f6002555f6003555b5f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14156101cd57505f5b6001546002828201116101e25750505f6101e8565b01600290035b5f555f600155604c025ff35b5f5ffd",
589                "storage": {}
590            },
591            "0x0000bbddc7ce488642fb579f8b00f3a590007251": {
592                "nonce": "0x01",
593                "balance": "0x00",
594                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460d35760115f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461019a57600182026001905f5b5f82111560685781019083028483029004916001019190604d565b9093900492505050366060146088573661019a573461019a575f5260205ff35b341061019a57600154600101600155600354806004026004013381556001015f358155600101602035815560010160403590553360601b5f5260605f60143760745fa0600101600355005b6003546002548082038060021160e7575060025b5f5b8181146101295782810160040260040181607402815460601b815260140181600101548152602001816002015481526020019060030154905260010160e9565b910180921461013b5790600255610146565b90505f6002555f6003555b5f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff141561017357505f5b6001546001828201116101885750505f61018e565b01600190035b5f555f6001556074025ff35b5f5ffd",
595                "storage": {}
596            },
597            "0x0000f90827f1c53a10cb7a02335b175320002935": {
598                "nonce": "0x01",
599                "balance": "0x00",
600                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604657602036036042575f35600143038111604257611fff81430311604257611fff9006545f5260205ff35b5f5ffd5b5f35611fff60014303065500",
601                "storage": {}
602            },
603            "0x000f3df6d732807ef1319fb7b8bb8522d0beac02": {
604                "nonce": "0x01",
605                "balance": "0x00",
606                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500",
607                "storage": {}
608            },
609            "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": {
610                "nonce": "0x00",
611                "balance": "0x3635c9adc5dea00000",
612                "code": "0x",
613                "storage": {}
614            },
615            "0x0000000000000000000000000000000000001000": {
616                "nonce": "0x01",
617                "balance": "0x00",
618                "code": "0x60016000540160005500",
619                "storage": {}
620            }
621        },
622        "postState": {
623            "0x00000000219ab540356cbb839cbe05303d7705fa": {
624                "nonce": "0x01",
625                "balance": "0x00",
626                "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b6164736f6c634300060b0033",
627                "storage": {
628                    "0x22": "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b",
629                    "0x23": "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71",
630                    "0x24": "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c",
631                    "0x25": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c",
632                    "0x26": "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30",
633                    "0x27": "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1",
634                    "0x28": "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c",
635                    "0x29": "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193",
636                    "0x2a": "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1",
637                    "0x2b": "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b",
638                    "0x2c": "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220",
639                    "0x2d": "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f",
640                    "0x2e": "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e",
641                    "0x2f": "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784",
642                    "0x30": "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb",
643                    "0x31": "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb",
644                    "0x32": "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab",
645                    "0x33": "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4",
646                    "0x34": "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f",
647                    "0x35": "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa",
648                    "0x36": "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c",
649                    "0x37": "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167",
650                    "0x38": "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7",
651                    "0x39": "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0",
652                    "0x3a": "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544",
653                    "0x3b": "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765",
654                    "0x3c": "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4",
655                    "0x3d": "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1",
656                    "0x3e": "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636",
657                    "0x3f": "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c",
658                    "0x40": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7"
659                }
660            },
661            "0x00000961ef480eb55e80d19ad83579a64c007002": {
662                "nonce": "0x01",
663                "balance": "0x00",
664                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460cb5760115f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146101f457600182026001905f5b5f82111560685781019083028483029004916001019190604d565b909390049250505036603814608857366101f457346101f4575f5260205ff35b34106101f457600154600101600155600354806003026004013381556001015f35815560010160203590553360601b5f5260385f601437604c5fa0600101600355005b6003546002548082038060101160df575060105b5f5b8181146101835782810160030260040181604c02815460601b8152601401816001015481526020019060020154807fffffffffffffffffffffffffffffffff00000000000000000000000000000000168252906010019060401c908160381c81600701538160301c81600601538160281c81600501538160201c81600401538160181c81600301538160101c81600201538160081c81600101535360010160e1565b910180921461019557906002556101a0565b90505f6002555f6003555b5f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14156101cd57505f5b6001546002828201116101e25750505f6101e8565b01600290035b5f555f600155604c025ff35b5f5ffd",
665                "storage": {}
666            },
667            "0x0000bbddc7ce488642fb579f8b00f3a590007251": {
668                "nonce": "0x01",
669                "balance": "0x00",
670                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460d35760115f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461019a57600182026001905f5b5f82111560685781019083028483029004916001019190604d565b9093900492505050366060146088573661019a573461019a575f5260205ff35b341061019a57600154600101600155600354806004026004013381556001015f358155600101602035815560010160403590553360601b5f5260605f60143760745fa0600101600355005b6003546002548082038060021160e7575060025b5f5b8181146101295782810160040260040181607402815460601b815260140181600101548152602001816002015481526020019060030154905260010160e9565b910180921461013b5790600255610146565b90505f6002555f6003555b5f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff141561017357505f5b6001546001828201116101885750505f61018e565b01600190035b5f555f6001556074025ff35b5f5ffd",
671                "storage": {}
672            },
673            "0x0000f90827f1c53a10cb7a02335b175320002935": {
674                "nonce": "0x01",
675                "balance": "0x00",
676                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604657602036036042575f35600143038111604257611fff81430311604257611fff9006545f5260205ff35b5f5ffd5b5f35611fff60014303065500",
677                "storage": {
678                    "0x00": "0x04b688c25df122da84e0b1a21b90dd8f898e6005cdc2d1ac6c60ded9ff9b2de4"
679                }
680            },
681            "0x000f3df6d732807ef1319fb7b8bb8522d0beac02": {
682                "nonce": "0x01",
683                "balance": "0x00",
684                "code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500",
685                "storage": {
686                    "0x1a98": "0x3a97"
687                }
688            },
689            "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": {
690                "nonce": "0x01",
691                "balance": "0x3635c9adc5de996bf0",
692                "code": "0x",
693                "storage": {}
694            },
695            "0x0000000000000000000000000000000000001000": {
696                "nonce": "0x01",
697                "balance": "0x00",
698                "code": "0x60016000540160005500",
699                "storage": {
700                    "0x00": "0x01"
701                }
702            },
703            "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba": {
704                "nonce": "0x00",
705                "balance": "0x01f938",
706                "code": "0x",
707                "storage": {}
708            }
709        },
710        "lastblockhash": "0xd4c4adfc3e91b0f8855851d598b43c9aa24e46dc03463a1e6e39154a3b9baf11",
711        "config": {
712            "network": "PragueToOsakaAtTime15k",
713            "chainid": "0x01",
714            "blobSchedule": {
715                "Cancun": {
716                    "target": "0x03",
717                    "max": "0x06",
718                    "baseFeeUpdateFraction": "0x32f0ed"
719                },
720                "Prague": {
721                    "target": "0x06",
722                    "max": "0x09",
723                    "baseFeeUpdateFraction": "0x4c6964"
724                },
725                "Osaka": {
726                    "target": "0x06",
727                    "max": "0x09",
728                    "baseFeeUpdateFraction": "0x4c6964"
729                }
730            }
731        },
732        "genesisRLP": "0xf9025df90257a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0fe13aa0b3a4ea731b1715a429c1cf100db415262a5bdd49478dc7b9e61cbf1dfa056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808084044aa200808000a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c0c0c0",
733        "blocks": [
734            {
735                "blockHeader": {
736                    "parentHash": "0x04b688c25df122da84e0b1a21b90dd8f898e6005cdc2d1ac6c60ded9ff9b2de4",
737                    "uncleHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
738                    "coinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
739                    "stateRoot": "0xc1f2dd64894ad795674b904a05d8b1e25e44c1bcab551f891561505cf9d23ec0",
740                    "transactionsTrie": "0x62a7a0c935742f0a198a50f095a7936080f099512e3c0f55cf245251e52b8956",
741                    "receiptTrie": "0x06f890d54ec65d8650b6c73eefd1fbc39f78b5b25f4e1ec10885c9f29f84ee98",
742                    "bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
743                    "difficulty": "0x00",
744                    "number": "0x01",
745                    "gasLimit": "0x044aa200",
746                    "gasUsed": "0xa868",
747                    "timestamp": "0x3a97",
748                    "extraData": "0x",
749                    "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
750                    "nonce": "0x0000000000000000",
751                    "baseFeePerGas": "0x07",
752                    "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
753                    "blobGasUsed": "0x00",
754                    "excessBlobGas": "0x00",
755                    "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
756                    "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
757                    "hash": "0xd4c4adfc3e91b0f8855851d598b43c9aa24e46dc03463a1e6e39154a3b9baf11"
758                },
759                "transactions": [
760                    {
761                        "type": "0x00",
762                        "chainId": "0x01",
763                        "nonce": "0x00",
764                        "gasPrice": "0x0a",
765                        "gasLimit": "0x01c9c381",
766                        "to": "0x0000000000000000000000000000000000001000",
767                        "value": "0x00",
768                        "data": "0x",
769                        "v": "0x26",
770                        "r": "0xf6fc2259158f1ab63eef05e3a8c55ca90621f289349ed04f0bdb90190aea976d",
771                        "s": "0x1298f50281fe143647f01741fb7e68f0dc82e47a05fe5a9b6193c1270c5e3658",
772                        "sender": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b"
773                    }
774                ],
775                "uncleHeaders": [],
776                "withdrawals": [],
777                "rlp": "0xf902c5f9025ba004b688c25df122da84e0b1a21b90dd8f898e6005cdc2d1ac6c60ded9ff9b2de4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c1f2dd64894ad795674b904a05d8b1e25e44c1bcab551f891561505cf9d23ec0a062a7a0c935742f0a198a50f095a7936080f099512e3c0f55cf245251e52b8956a006f890d54ec65d8650b6c73eefd1fbc39f78b5b25f4e1ec10885c9f29f84ee98b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800184044aa20082a868823a9780a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f863f861800a8401c9c381940000000000000000000000000000000000001000808026a0f6fc2259158f1ab63eef05e3a8c55ca90621f289349ed04f0bdb90190aea976da01298f50281fe143647f01741fb7e68f0dc82e47a05fe5a9b6193c1270c5e3658c0c0",
778                "blocknumber": "1"
779            },
780            {
781                "rlp": "0xf902c3f90259a0d4c4adfc3e91b0f8855851d598b43c9aa24e46dc03463a1e6e39154a3b9baf11a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa050671d216437ec3e13a03ff464ed91146fd61165e8adc1622e58d9be953ae4a5a04657b722e50dc4184f522f842bee4abeae676efe01b43d96ca1ca68695982cfda056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800284044aa20080823a9880a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f863f861010a8401c9c381940000000000000000000000000000000000001000808025a032fd9f592d89b3468bcee7034fab624e546d8efb4f27d62a53e4f7b1382430cca06563508d39899cc529f5d0686a530ac145d68393c858f08edaada21f17e704b7c0c0",
782                "expectException": "TransactionException.GAS_LIMIT_EXCEEDS_MAXIMUM",
783                "rlp_decoded": {
784                    "blockHeader": {
785                        "parentHash": "0xd4c4adfc3e91b0f8855851d598b43c9aa24e46dc03463a1e6e39154a3b9baf11",
786                        "uncleHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
787                        "coinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
788                        "stateRoot": "0x50671d216437ec3e13a03ff464ed91146fd61165e8adc1622e58d9be953ae4a5",
789                        "transactionsTrie": "0x4657b722e50dc4184f522f842bee4abeae676efe01b43d96ca1ca68695982cfd",
790                        "receiptTrie": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
791                        "bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
792                        "difficulty": "0x00",
793                        "number": "0x02",
794                        "gasLimit": "0x044aa200",
795                        "gasUsed": "0x00",
796                        "timestamp": "0x3a98",
797                        "extraData": "0x",
798                        "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
799                        "nonce": "0x0000000000000000",
800                        "baseFeePerGas": "0x07",
801                        "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
802                        "blobGasUsed": "0x00",
803                        "excessBlobGas": "0x00",
804                        "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
805                        "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
806                        "hash": "0x64bf114af5b2312b734d3f7a94f15858210602292527a869c05e4f3083585385"
807                    },
808                    "transactions": [
809                        {
810                            "type": "0x00",
811                            "chainId": "0x01",
812                            "nonce": "0x01",
813                            "gasPrice": "0x0a",
814                            "gasLimit": "0x01c9c381",
815                            "to": "0x0000000000000000000000000000000000001000",
816                            "value": "0x00",
817                            "data": "0x",
818                            "v": "0x25",
819                            "r": "0x32fd9f592d89b3468bcee7034fab624e546d8efb4f27d62a53e4f7b1382430cc",
820                            "s": "0x6563508d39899cc529f5d0686a530ac145d68393c858f08edaada21f17e704b7",
821                            "sender": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b"
822                        }
823                    ],
824                    "uncleHeaders": [],
825                    "withdrawals": [],
826                    "blocknumber": "2"
827                }
828            }
829        ],
830        "sealEngine": "NoProof",
831        "_info": {
832            "hash": "0xa19f6207b969ec0c5baa2aa6218e6410818c163eb88be6b39e61955ed4cc50c5",
833            "comment": "`execution-spec-tests` generated test",
834            "filling-transition-tool": "ethereum-spec-evm-resolver 0.0.5",
835            "description": "Test transaction gas limit cap behavior at the Osaka transition.\n\n    Before timestamp 15000: No gas limit cap (transactions with gas > 30M are valid)\n    At/after timestamp 15000: Gas limit cap of 30M is enforced",
836            "url": "https://github.com/ethereum/execution-spec-tests/blob/fusaka-devnet-2@v1.2.0/tests/osaka/eip7825_transaction_gas_limit_cap/test_tx_gas_limit.py#L118",
837            "fixture-format": "blockchain_test",
838            "reference-spec": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7825.md",
839            "reference-spec-version": "47cbfed315988c0bd4d10002c110ae402504cd94",
840            "eels-resolution": {
841                "git-url": "https://github.com/spencer-tb/execution-specs.git",
842                "branch": "forks/osaka",
843                "commit": "bc829598ff1923f9215a6a407ef74621077fd3bb"
844            }
845        }
846    }
847}
848    "#;
849}