diff --git a/crates/apollo_consensus_orchestrator/src/build_proposal.rs b/crates/apollo_consensus_orchestrator/src/build_proposal.rs index f9ea905e0e4..1dc180f4494 100644 --- a/crates/apollo_consensus_orchestrator/src/build_proposal.rs +++ b/crates/apollo_consensus_orchestrator/src/build_proposal.rs @@ -176,6 +176,7 @@ async fn initiate_build(args: &mut ProposalBuildArguments) -> BuildProposalResul starknet_version: starknet_api::block::StarknetVersion::LATEST, // TODO(Asmaa): Put the real value once we have it. version_constant_commitment: Default::default(), + fee_proposal_fri: None, }; let retrospective_block_hash = wait_for_retrospective_block_hash( diff --git a/crates/apollo_consensus_orchestrator/src/test_utils.rs b/crates/apollo_consensus_orchestrator/src/test_utils.rs index 230ad27624a..d1931deb078 100644 --- a/crates/apollo_consensus_orchestrator/src/test_utils.rs +++ b/crates/apollo_consensus_orchestrator/src/test_utils.rs @@ -411,6 +411,7 @@ pub(crate) fn proposal_init(height: BlockNumber, round: u32) -> ProposalInit { l1_data_gas_price_wei, starknet_version: starknet_api::block::StarknetVersion::LATEST, version_constant_commitment: Default::default(), + fee_proposal_fri: None, } } diff --git a/crates/apollo_consensus_orchestrator/src/utils_test.rs b/crates/apollo_consensus_orchestrator/src/utils_test.rs index cdef2874a3b..08aba6c152a 100644 --- a/crates/apollo_consensus_orchestrator/src/utils_test.rs +++ b/crates/apollo_consensus_orchestrator/src/utils_test.rs @@ -47,6 +47,7 @@ async fn get_proposal_init(args: &ProposalBuildArguments) -> ProposalInit { l1_data_gas_price_fri: l1_prices_fri.l1_data_gas_price, starknet_version: starknet_api::block::StarknetVersion::LATEST, version_constant_commitment: Default::default(), + fee_proposal_fri: None, } } diff --git a/crates/apollo_protobuf/src/consensus.rs b/crates/apollo_protobuf/src/consensus.rs index 3fe8980d35f..d3452588717 100644 --- a/crates/apollo_protobuf/src/consensus.rs +++ b/crates/apollo_protobuf/src/consensus.rs @@ -122,6 +122,9 @@ pub struct ProposalInit { pub starknet_version: starknet_api::block::StarknetVersion, /// Version constant commitment. pub version_constant_commitment: StarkHash, + /// SNIP-35: proposer's oracle-derived recommended fee. Present iff + /// `starknet_version >= V0_14_3`. + pub fee_proposal_fri: Option, } /// A temporary constant to use as a validator ID. Zero is not a valid contract address. @@ -156,6 +159,7 @@ impl Default for ProposalInit { l1_data_gas_price_wei: Default::default(), starknet_version: starknet_api::block::StarknetVersion::LATEST, version_constant_commitment: Default::default(), + fee_proposal_fri: Default::default(), } } } diff --git a/crates/apollo_protobuf/src/converters/consensus.rs b/crates/apollo_protobuf/src/converters/consensus.rs index 3be56bd8880..8fa551074fb 100644 --- a/crates/apollo_protobuf/src/converters/consensus.rs +++ b/crates/apollo_protobuf/src/converters/consensus.rs @@ -226,6 +226,7 @@ impl TryFrom for ProposalInit { .version_constant_commitment .ok_or(missing("version_constant_commitment"))? .try_into()?; + let fee_proposal_fri = value.fee_proposal_fri.map(|raw| GasPrice(raw.into())); Ok(ProposalInit { height, round, @@ -241,6 +242,7 @@ impl TryFrom for ProposalInit { l1_data_gas_price_wei, starknet_version, version_constant_commitment, + fee_proposal_fri, }) } } @@ -262,6 +264,7 @@ impl From for protobuf::ProposalInit { l1_data_gas_price_wei: Some(value.l1_data_gas_price_wei.0.into()), starknet_version: value.starknet_version.to_string(), version_constant_commitment: Some(value.version_constant_commitment.into()), + fee_proposal_fri: value.fee_proposal_fri.map(|gp| gp.0.into()), } } } diff --git a/crates/apollo_protobuf/src/converters/test_instances.rs b/crates/apollo_protobuf/src/converters/test_instances.rs index dd89d552ecc..8703a049df2 100644 --- a/crates/apollo_protobuf/src/converters/test_instances.rs +++ b/crates/apollo_protobuf/src/converters/test_instances.rs @@ -80,6 +80,7 @@ auto_impl_get_test_instance! { pub l1_data_gas_price_wei: GasPrice, pub starknet_version: StarknetVersion, pub version_constant_commitment: StarkHash, + pub fee_proposal_fri: Option, } pub enum ProposalPart { Init(ProposalInit) = 0, diff --git a/crates/apollo_protobuf/src/proto/p2p/proto/consensus/consensus.proto b/crates/apollo_protobuf/src/proto/p2p/proto/consensus/consensus.proto index fa81b10d35f..bc834f0cfc0 100644 --- a/crates/apollo_protobuf/src/proto/p2p/proto/consensus/consensus.proto +++ b/crates/apollo_protobuf/src/proto/p2p/proto/consensus/consensus.proto @@ -59,6 +59,8 @@ message ProposalInit { Uint128 l1_data_gas_price_wei = 12; string starknet_version = 13; Hash version_constant_commitment = 14; + // SNIP-35: proposer's recommended fee for future blocks. Present iff Starknet version >= V0_14_3. + optional Uint128 fee_proposal_fri = 15; } message TransactionBatch { diff --git a/crates/apollo_protobuf/src/protobuf/protoc_output.rs b/crates/apollo_protobuf/src/protobuf/protoc_output.rs index 25f5516d0b8..c2c1a2e9679 100644 --- a/crates/apollo_protobuf/src/protobuf/protoc_output.rs +++ b/crates/apollo_protobuf/src/protobuf/protoc_output.rs @@ -479,6 +479,9 @@ pub struct ProposalInit { pub starknet_version: ::prost::alloc::string::String, #[prost(message, optional, tag = "14")] pub version_constant_commitment: ::core::option::Option, + /// SNIP-35: proposer's recommended fee for future blocks. Present iff Starknet version >= V0_14_3. + #[prost(message, optional, tag = "15")] + pub fee_proposal_fri: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)]