Skip to main content

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