Skip to content

Commit

Permalink
feat(starknet_l1_provider): add the trait interface for L1 gas price …
Browse files Browse the repository at this point in the history
…provider
  • Loading branch information
guy-starkware committed Feb 5, 2025
1 parent 9b00b48 commit 73e55cf
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 0 deletions.
8 changes: 8 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ members = [
"crates/starknet_http_server",
"crates/starknet_infra_utils",
"crates/starknet_integration_tests",
"crates/starknet_l1_gas_price",
"crates/starknet_l1_provider",
"crates/starknet_l1_provider_types",
"crates/starknet_mempool",
Expand Down
13 changes: 13 additions & 0 deletions crates/starknet_l1_gas_price/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[package]
name = "starknet_l1_gas_price"
version.workspace = true
edition.workspace = true
repository.workspace = true
license.workspace = true

[dependencies]
starknet_api.workspace = true
thiserror.workspace = true

[lints]
workspace = true
31 changes: 31 additions & 0 deletions crates/starknet_l1_gas_price/src/l1_gas_price_provider.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
use starknet_api::block::{BlockNumber, BlockTimestamp};
use thiserror::Error;

// TODO(guyn): both these constants need to go into VersionedConstants.
pub const MEAN_NUMBER_OF_BLOCKS: u64 = 300;
pub const LAG_MARGIN_SECONDS: u64 = 60;

// TODO(guyn, Gilad): consider moving this to starknet_l1_provider_types/lib.rs?
// This is an interface that allows sharing the provider with the scraper across threads.
pub trait L1GasPriceProviderClient: Send + Sync {
fn add_price_info(
&self,
height: BlockNumber,
timestamp: BlockTimestamp,
gas_price: u128,
data_gas_price: u128,
) -> Result<(), L1GasPriceProviderError>;

fn get_price_info(
&self,
timestamp: BlockTimestamp,
) -> Result<(u128, u128), L1GasPriceProviderError>;
}

#[derive(Clone, Debug, Error)]
pub enum L1GasPriceProviderError {
#[error("Failed to add price info: {0}")]
AddPriceInfoError(String),
#[error("Failed to get price info: {0}")]
GetPriceInfoError(String),
}
1 change: 1 addition & 0 deletions crates/starknet_l1_gas_price/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub mod l1_gas_price_provider;

0 comments on commit 73e55cf

Please sign in to comment.