kabu_types_blockchain/
chain_parameters.rs1use 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}