Skip to content

Commit

Permalink
build(blockifier): receive l2_gas_price from python
Browse files Browse the repository at this point in the history
  • Loading branch information
aner-starkware committed Aug 15, 2024
1 parent e45b885 commit 8872156
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 8 deletions.
26 changes: 18 additions & 8 deletions crates/blockifier/src/blockifier/block.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::num::NonZeroU128;

use log::warn;
use starknet_api::block::{BlockHash, BlockNumber, BlockTimestamp};
use starknet_api::core::ContractAddress;
use starknet_api::state::StorageKey;
Expand Down Expand Up @@ -42,15 +43,24 @@ impl GasPrices {
strk_l1_gas_price: NonZeroU128,
eth_l1_data_gas_price: NonZeroU128,
strk_l1_data_gas_price: NonZeroU128,
eth_l2_gas_price: NonZeroU128,
strk_l2_gas_price: NonZeroU128,
) -> Self {
let eth_l2_gas_price = NonZeroU128::new(VersionedConstants::l1_to_l2_gas_price_conversion(
eth_l1_gas_price.into(),
))
.unwrap();
let strk_l2_gas_price = NonZeroU128::new(
VersionedConstants::l1_to_l2_gas_price_conversion(strk_l1_gas_price.into()),
)
.unwrap();
// TODO(Aner): fix backwards compatibility.
if eth_l2_gas_price
!= VersionedConstants::l1_to_l2_gas_price_conversion(eth_l1_gas_price.into())
.try_into()
.expect("L1 to L2 price conversion error (Rust side).")
{
warn!("eth_l2_gas_price does not match expected!")
}
if strk_l2_gas_price
!= VersionedConstants::l1_to_l2_gas_price_conversion(strk_l1_gas_price.into())
.try_into()
.expect("L1 to L2 price conversion error (Rust side).")
{
warn!("strk_l2_gas_price does not match expected!")
}
GasPrices {
eth_l1_gas_price,
strk_l1_gas_price,
Expand Down
4 changes: 4 additions & 0 deletions crates/blockifier/src/fee/fee_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@ fn test_discounted_gas_overdraft(
gas_price.try_into().unwrap(),
DEFAULT_ETH_L1_DATA_GAS_PRICE.try_into().unwrap(),
data_gas_price.try_into().unwrap(),
VersionedConstants::l1_to_l2_gas_price_conversion(DEFAULT_ETH_L1_GAS_PRICE)
.try_into()
.unwrap(),
VersionedConstants::l1_to_l2_gas_price_conversion(gas_price).try_into().unwrap(),
);

let account = FeatureContract::AccountWithoutValidations(CairoVersion::Cairo0);
Expand Down
6 changes: 6 additions & 0 deletions crates/blockifier/src/test_utils/struct_impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,12 @@ impl BlockInfo {
DEFAULT_STRK_L1_GAS_PRICE.try_into().unwrap(),
DEFAULT_ETH_L1_DATA_GAS_PRICE.try_into().unwrap(),
DEFAULT_STRK_L1_DATA_GAS_PRICE.try_into().unwrap(),
VersionedConstants::l1_to_l2_gas_price_conversion(DEFAULT_ETH_L1_GAS_PRICE)
.try_into()
.unwrap(),
VersionedConstants::l1_to_l2_gas_price_conversion(DEFAULT_STRK_L1_GAS_PRICE)
.try_into()
.unwrap(),
),
use_kzg_da: false,
}
Expand Down
2 changes: 2 additions & 0 deletions crates/gateway/src/rpc_objects.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ impl TryInto<BlockInfo> for BlockHeader {
parse_gas_price(self.l1_gas_price.price_in_fri)?,
parse_gas_price(self.l1_data_gas_price.price_in_wei)?,
parse_gas_price(self.l1_data_gas_price.price_in_fri)?,
NonZeroU128::MIN,
NonZeroU128::MIN,
),
use_kzg_da: matches!(self.l1_da_mode, L1DataAvailabilityMode::Blob),
})
Expand Down
24 changes: 24 additions & 0 deletions crates/native_blockifier/src/py_state_diff.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use blockifier::test_utils::{
DEFAULT_STRK_L1_DATA_GAS_PRICE,
DEFAULT_STRK_L1_GAS_PRICE,
};
use blockifier::versioned_constants::VersionedConstants;
use indexmap::IndexMap;
use pyo3::prelude::*;
use pyo3::FromPyObject;
Expand Down Expand Up @@ -140,6 +141,7 @@ pub struct PyBlockInfo {
pub block_timestamp: u64,
pub l1_gas_price: PyResourcePrice,
pub l1_data_gas_price: PyResourcePrice,
pub l2_gas_price: PyResourcePrice,
pub sequencer_address: PyFelt,
pub use_kzg_da: bool,
}
Expand All @@ -158,6 +160,14 @@ impl Default for PyBlockInfo {
price_in_wei: DEFAULT_ETH_L1_DATA_GAS_PRICE,
price_in_fri: DEFAULT_STRK_L1_DATA_GAS_PRICE,
},
l2_gas_price: PyResourcePrice {
price_in_wei: VersionedConstants::l1_to_l2_gas_price_conversion(
DEFAULT_ETH_L1_GAS_PRICE,
),
price_in_fri: VersionedConstants::l1_to_l2_gas_price_conversion(
DEFAULT_STRK_L1_GAS_PRICE,
),
},
sequencer_address: PyFelt::default(),
use_kzg_da: bool::default(),
}
Expand Down Expand Up @@ -201,6 +211,20 @@ impl TryFrom<PyBlockInfo> for BlockInfo {
),
)
})?,
block_info.l2_gas_price.price_in_wei.try_into().map_err(|_| {
NativeBlockifierInputError::InvalidNativeBlockifierInputError(
InvalidNativeBlockifierInputError::InvalidGasPriceWei(
block_info.l2_gas_price.price_in_wei,
),
)
})?,
block_info.l2_gas_price.price_in_fri.try_into().map_err(|_| {
NativeBlockifierInputError::InvalidNativeBlockifierInputError(
InvalidNativeBlockifierInputError::InvalidGasPriceFri(
block_info.l2_gas_price.price_in_fri,
),
)
})?,
),
use_kzg_da: block_info.use_kzg_da,
})
Expand Down
3 changes: 3 additions & 0 deletions crates/papyrus_execution/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,9 @@ fn create_block_context(
NonZeroU128::new(l1_gas_price.price_in_fri.0).unwrap_or(NonZeroU128::MIN),
NonZeroU128::new(l1_data_gas_price.price_in_wei.0).unwrap_or(NonZeroU128::MIN),
NonZeroU128::new(l1_data_gas_price.price_in_fri.0).unwrap_or(NonZeroU128::MIN),
// TODO(Aner - Shahak): fix to come from pending_data/block_header.
NonZeroU128::MIN,
NonZeroU128::MIN,
),
};
let chain_info = ChainInfo {
Expand Down

0 comments on commit 8872156

Please sign in to comment.