Skip to content
This repository was archived by the owner on Jan 16, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/node/engine/src/attributes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ impl AttributesMatch {
// base fee params.
Some((0, 0)) => {
let BaseFeeParams { max_change_denominator, elasticity_multiplier } =
config.chain_op_config.as_canyon_base_fee_params();
config.chain_op_config.post_canyon_params();

(elasticity_multiplier, max_change_denominator)
}
Expand Down
4 changes: 2 additions & 2 deletions crates/proof/executor/src/builder/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -155,12 +155,12 @@ where
_ if config.is_canyon_active(payload_timestamp) => {
// If the payload attribute timestamp is past canyon activation,
// use the canyon base fee params from the rollup config.
Ok((config.chain_op_config.as_canyon_base_fee_params(), 0))
Ok((config.chain_op_config.post_canyon_params(), 0))
}
_ => {
// If the next payload attribute timestamp is prior to canyon activation,
// use the default base fee params from the rollup config.
Ok((config.chain_op_config.as_base_fee_params(), 0))
Ok((config.chain_op_config.pre_canyon_params(), 0))
}
}
}
Expand Down
42 changes: 21 additions & 21 deletions crates/proof/executor/src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ pub(crate) fn encode_holocene_eip_1559_params(
) -> ExecutorResult<Bytes> {
Ok(encode_holocene_extra_data(
attributes.eip_1559_params.ok_or(ExecutorError::MissingEIP1559Params)?,
config.chain_op_config.as_base_fee_params(),
config.chain_op_config.post_canyon_params(),
)?)
}

Expand All @@ -92,7 +92,7 @@ pub(crate) fn encode_jovian_eip_1559_params(
) -> ExecutorResult<Bytes> {
Ok(encode_jovian_extra_data(
attributes.eip_1559_params.ok_or(ExecutorError::MissingEIP1559Params)?,
config.chain_op_config.as_base_fee_params(),
config.chain_op_config.post_canyon_params(),
attributes.min_base_fee.ok_or(ExecutorError::InvalidExtraData(
Eip1559ValidationError::Decode(EIP1559ParamError::MinBaseFeeNotSet),
))?,
Expand All @@ -106,7 +106,7 @@ mod test {
decode_jovian_eip_1559_params_block_header, encode_holocene_eip_1559_params,
};
use alloy_consensus::Header;
use alloy_primitives::{B64, b64, hex};
use alloy_primitives::{B64, b64, bytes};
use alloy_rpc_types_engine::PayloadAttributes;
use kona_genesis::{BaseFeeConfig, RollupConfig};
use op_alloy_rpc_types_engine::OpPayloadAttributes;
Expand All @@ -130,8 +130,8 @@ mod test {

#[test]
fn test_decode_holocene_eip_1559_params() {
let params = hex!("00BEEFBABE0BADC0DE");
let mock_header = Header { extra_data: params.to_vec().into(), ..Default::default() };
let params = bytes!("00BEEFBABE0BADC0DE");
let mock_header = Header { extra_data: params, ..Default::default() };
let params = decode_holocene_eip_1559_params_block_header(&mock_header).unwrap();

assert_eq!(params.elasticity_multiplier, 0x0BAD_C0DE);
Expand All @@ -140,8 +140,8 @@ mod test {

#[test]
fn test_decode_jovian_eip_1559_params() {
let params = hex!("01BEEFBABE0BADC0DE00000000DEADBEEF");
let mock_header = Header { extra_data: params.to_vec().into(), ..Default::default() };
let params = bytes!("01BEEFBABE0BADC0DE00000000DEADBEEF");
let mock_header = Header { extra_data: params, ..Default::default() };
let (params, base_fee) = decode_jovian_eip_1559_params_block_header(&mock_header).unwrap();

assert_eq!(params.elasticity_multiplier, 0x0BAD_C0DE);
Expand All @@ -151,32 +151,32 @@ mod test {

#[test]
fn test_decode_holocene_eip_1559_params_invalid_version() {
let params = hex!("01BEEFBABE0BADC0DE");
let mock_header = Header { extra_data: params.to_vec().into(), ..Default::default() };
let params = bytes!("01BEEFBABE0BADC0DE");
let mock_header = Header { extra_data: params, ..Default::default() };
assert!(decode_holocene_eip_1559_params_block_header(&mock_header).is_err());
}

#[test]
fn test_decode_holocene_eip_1559_params_invalid_denominator() {
let params = hex!("00000000000BADC0DE");
let mock_header = Header { extra_data: params.to_vec().into(), ..Default::default() };
let params = bytes!("00000000000BADC0DE");
let mock_header = Header { extra_data: params, ..Default::default() };
assert!(decode_holocene_eip_1559_params_block_header(&mock_header).is_err());
}

#[test]
fn test_decode_holocene_eip_1559_params_invalid_length() {
let params = hex!("00");
let mock_header = Header { extra_data: params.to_vec().into(), ..Default::default() };
let params = bytes!("00");
let mock_header = Header { extra_data: params, ..Default::default() };
assert!(decode_holocene_eip_1559_params_block_header(&mock_header).is_err());
}

#[test]
fn test_encode_holocene_eip_1559_params_missing() {
let cfg = RollupConfig {
chain_op_config: BaseFeeConfig {
eip1559_denominator: 32,
eip1559_denominator: 50,
eip1559_elasticity: 64,
eip1559_denominator_canyon: 32,
eip1559_denominator_canyon: 250,
},
..Default::default()
};
Expand All @@ -189,35 +189,35 @@ mod test {
fn test_encode_holocene_eip_1559_params_default() {
let cfg = RollupConfig {
chain_op_config: BaseFeeConfig {
eip1559_denominator: 32,
eip1559_denominator: 50,
eip1559_elasticity: 64,
eip1559_denominator_canyon: 32,
eip1559_denominator_canyon: 250,
},
..Default::default()
};
let attrs = mock_payload(Some(B64::ZERO));

assert_eq!(
encode_holocene_eip_1559_params(&cfg, &attrs).unwrap(),
hex!("000000002000000040").to_vec()
bytes!("00000000fa00000040")
);
}

#[test]
fn test_encode_holocene_eip_1559_params() {
let cfg = RollupConfig {
chain_op_config: BaseFeeConfig {
eip1559_denominator: 32,
eip1559_denominator: 50,
eip1559_elasticity: 64,
eip1559_denominator_canyon: 32,
eip1559_denominator_canyon: 250,
},
..Default::default()
};
let attrs = mock_payload(Some(b64!("0000004000000060")));

assert_eq!(
encode_holocene_eip_1559_params(&cfg, &attrs).unwrap(),
hex!("000000004000000060").to_vec()
bytes!("000000004000000060")
);
}
}
4 changes: 2 additions & 2 deletions crates/protocol/genesis/src/chain/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,15 @@ impl ChainConfig {
pub fn base_fee_params(&self) -> BaseFeeParams {
self.optimism
.as_ref()
.map(|op| op.as_base_fee_params())
.map(|op| op.pre_canyon_params())
.unwrap_or_else(|| base_fee_params(self.chain_id))
}

/// Returns the canyon base fee params for the chain.
pub fn canyon_base_fee_params(&self) -> BaseFeeParams {
self.optimism
.as_ref()
.map(|op| op.as_canyon_base_fee_params())
.map(|op| op.post_canyon_params())
.unwrap_or_else(|| base_fee_params_canyon(self.chain_id))
}

Expand Down
8 changes: 4 additions & 4 deletions crates/protocol/genesis/src/params.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,16 +186,16 @@ impl BaseFeeConfig {
}
}

/// Returns the inner [BaseFeeParams].
pub const fn as_base_fee_params(&self) -> BaseFeeParams {
/// Returns the [BaseFeeParams] before Canyon hardfork.
pub const fn pre_canyon_params(&self) -> BaseFeeParams {
BaseFeeParams {
max_change_denominator: self.eip1559_denominator as u128,
elasticity_multiplier: self.eip1559_elasticity as u128,
}
}

/// Returns the [BaseFeeParams] for the canyon hardfork.
pub const fn as_canyon_base_fee_params(&self) -> BaseFeeParams {
/// Returns the [BaseFeeParams] since Canyon hardfork.
pub const fn post_canyon_params(&self) -> BaseFeeParams {
BaseFeeParams {
max_change_denominator: self.eip1559_denominator_canyon as u128,
elasticity_multiplier: self.eip1559_elasticity as u128,
Expand Down
Loading