Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(papyrus_protobuf): add BlockInfo to proto #3878

Merged
merged 1 commit into from
Feb 4, 2025
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
13 changes: 13 additions & 0 deletions crates/papyrus_protobuf/src/consensus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use prost::DecodeError;
use starknet_api::block::{BlockHash, BlockNumber};
use starknet_api::consensus_transaction::ConsensusTransaction;
use starknet_api::core::ContractAddress;
use starknet_api::data_availability::L1DataAvailabilityMode;

use crate::converters::ProtobufConversionError;

Expand Down Expand Up @@ -56,6 +57,18 @@ pub struct ProposalInit {
pub proposer: ContractAddress,
}

#[derive(Clone, Debug, PartialEq)]
pub struct BlockInfo {
pub height: BlockNumber,
pub timestamp: u64,
pub builder: ContractAddress,
pub l1_da_mode: L1DataAvailabilityMode,
pub l2_gas_price_fri: u128,
pub l1_gas_price_wei: u128,
pub l1_data_gas_price_wei: u128,
pub eth_to_strk_rate: u64,
}

/// A temporary constant to use as a validator ID. Zero is not a valid contract address.
// TODO(Matan): Remove this once we have a proper validator set.
pub const DEFAULT_VALIDATOR_ID: u64 = 100;
Expand Down
57 changes: 57 additions & 0 deletions crates/papyrus_protobuf/src/converters/consensus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ use starknet_api::block::{BlockHash, BlockNumber};
use starknet_api::consensus_transaction::ConsensusTransaction;
use starknet_api::hash::StarkHash;

use super::common::{enum_int_to_l1_data_availability_mode, l1_data_availability_mode_to_enum_int};
use crate::consensus::{
BlockInfo,
IntoFromProto,
ProposalFin,
ProposalInit,
Expand Down Expand Up @@ -211,6 +213,61 @@ impl From<TransactionBatch> for protobuf::TransactionBatch {

auto_impl_into_and_try_from_vec_u8!(TransactionBatch, protobuf::TransactionBatch);

impl TryFrom<protobuf::BlockInfo> for BlockInfo {
type Error = ProtobufConversionError;
fn try_from(value: protobuf::BlockInfo) -> Result<Self, Self::Error> {
let height = value.height;
let timestamp = value.timestamp;
let builder = value
.builder
.ok_or(ProtobufConversionError::MissingField { field_description: "builder" })?
.try_into()?;
let l1_da_mode = enum_int_to_l1_data_availability_mode(value.l1_da_mode)?;
let l2_gas_price_fri = value
.l2_gas_price_fri
.ok_or(ProtobufConversionError::MissingField { field_description: "l2_gas_price_fri" })?
.into();
let l1_gas_price_wei = value
.l1_gas_price_wei
.ok_or(ProtobufConversionError::MissingField { field_description: "l1_gas_price_wei" })?
.into();
let l1_data_gas_price_wei = value
.l1_data_gas_price_wei
.ok_or(ProtobufConversionError::MissingField {
field_description: "l1_data_gas_price_wei",
})?
.into();
let eth_to_strk_rate = value.eth_to_strk_rate;
Ok(BlockInfo {
height: BlockNumber(height),
timestamp,
builder,
l1_da_mode,
l2_gas_price_fri,
l1_gas_price_wei,
l1_data_gas_price_wei,
eth_to_strk_rate,
})
}
}

impl From<BlockInfo> for protobuf::BlockInfo {
fn from(value: BlockInfo) -> Self {
protobuf::BlockInfo {
height: value.height.0,
timestamp: value.timestamp,
builder: Some(value.builder.into()),
l1_da_mode: l1_data_availability_mode_to_enum_int(value.l1_da_mode),
l1_gas_price_wei: Some(value.l1_gas_price_wei.into()),
l1_data_gas_price_wei: Some(value.l1_data_gas_price_wei.into()),
l2_gas_price_fri: Some(value.l2_gas_price_fri.into()),
eth_to_strk_rate: value.eth_to_strk_rate,
}
}
}

auto_impl_into_and_try_from_vec_u8!(BlockInfo, protobuf::BlockInfo);

impl TryFrom<protobuf::ProposalFin> for ProposalFin {
type Error = ProtobufConversionError;
fn try_from(value: protobuf::ProposalFin) -> Result<Self, Self::Error> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,17 @@ message ProposalInit {
Address proposer = 4;
}

message BlockInfo {
uint64 height = 1;
uint64 timestamp = 2;
Address builder = 3;
L1DataAvailabilityMode l1_da_mode = 4;
Uint128 l2_gas_price_fri = 5;
Uint128 l1_gas_price_wei = 6;
Uint128 l1_data_gas_price_wei = 7;
uint64 eth_to_strk_rate = 8;
}

message TransactionBatch {
repeated ConsensusTransaction transactions = 1;
}
Expand Down
Loading