eest_types/state/
env.rs

1use cfx_types::{Address, H256, U256};
2use serde::Deserialize;
3
4/// Environment variables
5#[derive(Debug, PartialEq, Eq, Deserialize)]
6#[serde(rename_all = "camelCase", deny_unknown_fields)]
7pub struct Env {
8    pub current_coinbase: Address,
9    #[serde(default)]
10    pub current_difficulty: U256,
11    pub current_gas_limit: U256,
12    pub current_number: U256,
13    pub current_timestamp: U256,
14    pub current_base_fee: Option<U256>,
15    pub previous_hash: Option<H256>,
16
17    pub current_random: Option<H256>,
18    pub current_beacon_root: Option<H256>,
19    pub current_withdrawals_root: Option<H256>,
20
21    pub parent_blob_gas_used: Option<U256>,
22    pub parent_excess_blob_gas: Option<U256>,
23    pub parent_target_blobs_per_block: Option<U256>,
24    pub current_excess_blob_gas: Option<U256>,
25}
26
27#[cfg(test)]
28mod tests {
29    use super::*;
30
31    #[test]
32    fn deserialize_env() {
33        let json = r#"
34        {
35            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
36            "currentGasLimit": "0x016345785d8a0000",
37            "currentNumber": "0x01",
38            "currentTimestamp": "0x03e8",
39            "currentRandom": "0x0000000000000000000000000000000000000000000000000000000000000000",
40            "currentDifficulty": "0x00",
41            "currentBaseFee": "0x07",
42            "currentExcessBlobGas": "0x00"
43        }
44        "#;
45
46        let env: Env = serde_json::from_str(json).unwrap();
47        println!("{:?}", env);
48    }
49}