kabu_types_blockchain/
chain_parameters.rs

1use alloy_eips::eip1559::BaseFeeParams;
2use alloy_rpc_types_eth::Header;
3
4#[derive(Clone, Debug)]
5pub struct ChainParameters {
6    pub chain_id: u64,
7    pub base_fee_params: BaseFeeParams,
8}
9
10impl ChainParameters {
11    pub fn ethereum() -> ChainParameters {
12        ChainParameters { chain_id: 1, base_fee_params: BaseFeeParams::ethereum() }
13    }
14
15    pub fn calc_next_block_base_fee(&self, gas_used: u64, gas_limit: u64, base_fee: u64) -> u64 {
16        self.base_fee_params.next_block_base_fee(gas_used, gas_limit, base_fee)
17    }
18
19    pub fn calc_next_block_base_fee_from_header(&self, header: &Header) -> u64 {
20        self.base_fee_params.next_block_base_fee(header.gas_used, header.gas_limit, header.base_fee_per_gas.unwrap_or_default())
21    }
22}
23
24impl Default for ChainParameters {
25    fn default() -> Self {
26        Self::ethereum()
27    }
28}
29impl From<u64> for ChainParameters {
30    fn from(chain_id: u64) -> Self {
31        match chain_id {
32            1 => ChainParameters::ethereum(),
33            _ => unimplemented!(),
34        }
35    }
36}