Skip to content
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
26 changes: 26 additions & 0 deletions crates/apollo_dashboard/resources/dev_grafana.json
Original file line number Diff line number Diff line change
Expand Up @@ -2609,6 +2609,32 @@
"histogram_quantile(0.95,label_replace(sum by (le) (rate(mempool_queueing_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"update_gas_price\"}[5m])), \"label_name\", \"0.95 mempool_queueing_times_secs\", \"le\", \".*\"))"
],
"extra_params": {}
},
{
"title": "validate_transaction (client-side)",
"description": "client-side infra metrics for request type validate_transaction",
"type": "timeseries",
"exprs": [
"histogram_quantile(0.50,label_replace(sum by (le) (rate(mempool_local_response_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.50 mempool_local_response_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.95,label_replace(sum by (le) (rate(mempool_local_response_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.95 mempool_local_response_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.50,label_replace(sum by (le) (rate(mempool_remote_response_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.50 mempool_remote_response_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.95,label_replace(sum by (le) (rate(mempool_remote_response_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.95 mempool_remote_response_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.50,label_replace(sum by (le) (rate(mempool_remote_client_communication_failure_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.50 mempool_remote_client_communication_failure_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.95,label_replace(sum by (le) (rate(mempool_remote_client_communication_failure_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.95 mempool_remote_client_communication_failure_times_secs\", \"le\", \".*\"))"
],
"extra_params": {}
},
{
"title": "validate_transaction (server-side)",
"description": "server-side infra metrics for request type validate_transaction",
"type": "timeseries",
"exprs": [
"histogram_quantile(0.50,label_replace(sum by (le) (rate(mempool_processing_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.50 mempool_processing_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.95,label_replace(sum by (le) (rate(mempool_processing_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.95 mempool_processing_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.50,label_replace(sum by (le) (rate(mempool_queueing_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.50 mempool_queueing_times_secs\", \"le\", \".*\"))",
"histogram_quantile(0.95,label_replace(sum by (le) (rate(mempool_queueing_times_secs_bucket{cluster=~\"$cluster\", namespace=~\"$namespace\", request_variant=\"validate_transaction\"}[5m])), \"label_name\", \"0.95 mempool_queueing_times_secs\", \"le\", \".*\"))"
],
"extra_params": {}
}
],
"collapsed": true
Expand Down
15 changes: 14 additions & 1 deletion crates/apollo_mempool/src/communication.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,12 @@ use apollo_mempool_types::communication::{
MempoolResponse,
};
use apollo_mempool_types::errors::MempoolError;
use apollo_mempool_types::mempool_types::{CommitBlockArgs, MempoolResult, MempoolSnapshot};
use apollo_mempool_types::mempool_types::{
CommitBlockArgs,
MempoolResult,
MempoolSnapshot,
ValidationArgs,
};
use apollo_network_types::network_types::BroadcastedMessageMetadata;
use apollo_time::time::DefaultClock;
use async_trait::async_trait;
Expand Down Expand Up @@ -104,6 +109,11 @@ impl MempoolCommunicationWrapper {
Ok(())
}

fn validate_tx(&mut self, args: ValidationArgs) -> MempoolResult<()> {
self.mempool.validate_tx(args)?;
Ok(())
}

fn commit_block(&mut self, args: CommitBlockArgs) -> MempoolResult<()> {
self.mempool.commit_block(args);
Ok(())
Expand Down Expand Up @@ -136,6 +146,9 @@ impl ComponentRequestHandler<MempoolRequest, MempoolResponse> for MempoolCommuni
// Update the dynamic config before handling the request.
self.update_dynamic_config().await;
match request {
MempoolRequest::ValidateTransaction(args) => {
MempoolResponse::ValidateTransaction(self.validate_tx(args))
}
MempoolRequest::AddTransaction(args) => {
MempoolResponse::AddTransaction(self.add_tx(args).await)
}
Expand Down
7 changes: 7 additions & 0 deletions crates/apollo_mempool/src/mempool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ use apollo_mempool_types::mempool_types::{
MempoolResult,
MempoolSnapshot,
MempoolStateSnapshot,
ValidationArgs,
};
use apollo_time::time::{Clock, DateTime};
use indexmap::IndexSet;
Expand Down Expand Up @@ -335,6 +336,12 @@ impl Mempool {
.collect())
}

/// Perform validation of an incoming transaction.
pub fn validate_tx(&mut self, _args: ValidationArgs) -> MempoolResult<()> {
// TODO(Lev): Implement validation of an incoming transaction.
Ok(())
}

/// Adds a new transaction to the mempool.
#[instrument(
skip(self, args),
Expand Down
17 changes: 16 additions & 1 deletion crates/apollo_mempool_types/src/communication.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ use strum_macros::{AsRefStr, EnumDiscriminants, EnumIter, IntoStaticStr};
use thiserror::Error;

use crate::errors::MempoolError;
use crate::mempool_types::{AddTransactionArgs, CommitBlockArgs, MempoolSnapshot};
use crate::mempool_types::{AddTransactionArgs, CommitBlockArgs, MempoolSnapshot, ValidationArgs};

pub type LocalMempoolClient = LocalComponentClient<MempoolRequest, MempoolResponse>;
pub type RemoteMempoolClient = RemoteComponentClient<MempoolRequest, MempoolResponse>;
Expand All @@ -45,6 +45,7 @@ pub trait MempoolClient: Send + Sync {
// TODO(AlonH): Add Option<BroadcastedMessageMetadata> as an argument for add_transaction
// TODO(AlonH): Rename tx to transaction
async fn add_tx(&self, args: AddTransactionArgsWrapper) -> MempoolClientResult<()>;
async fn validate_tx(&self, args: ValidationArgs) -> MempoolClientResult<()>;
async fn commit_block(&self, args: CommitBlockArgs) -> MempoolClientResult<()>;
async fn get_txs(&self, n_txs: usize) -> MempoolClientResult<Vec<InternalRpcTransaction>>;
async fn account_tx_in_pool_or_recent_block(
Expand All @@ -63,6 +64,7 @@ pub trait MempoolClient: Send + Sync {
)]
pub enum MempoolRequest {
AddTransaction(AddTransactionArgsWrapper),
ValidateTransaction(ValidationArgs),
CommitBlock(CommitBlockArgs),
GetTransactions(usize),
AccountTxInPoolOrRecentBlock(ContractAddress),
Expand All @@ -79,6 +81,7 @@ impl PrioritizedRequest for MempoolRequest {
RequestPriority::High
}
MempoolRequest::AddTransaction(_)
| MempoolRequest::ValidateTransaction(_)
| MempoolRequest::AccountTxInPoolOrRecentBlock(_)
| MempoolRequest::UpdateGasPrice(_)
| MempoolRequest::GetMempoolSnapshot() => RequestPriority::Normal,
Expand All @@ -89,6 +92,7 @@ impl PrioritizedRequest for MempoolRequest {
#[derive(Clone, Serialize, Deserialize, AsRefStr)]
pub enum MempoolResponse {
AddTransaction(MempoolResult<()>),
ValidateTransaction(MempoolResult<()>),
CommitBlock(MempoolResult<()>),
GetTransactions(MempoolResult<Vec<InternalRpcTransaction>>),
AccountTxInPoolOrRecentBlock(MempoolResult<bool>),
Expand Down Expand Up @@ -121,6 +125,17 @@ where
)
}

async fn validate_tx(&self, args: ValidationArgs) -> MempoolClientResult<()> {
let request = MempoolRequest::ValidateTransaction(args);
handle_all_response_variants!(
MempoolResponse,
ValidateTransaction,
MempoolClientError,
MempoolError,
Direct
)
}

async fn commit_block(&self, args: CommitBlockArgs) -> MempoolClientResult<()> {
let request = MempoolRequest::CommitBlock(args);
handle_all_response_variants!(
Expand Down
11 changes: 11 additions & 0 deletions crates/apollo_mempool_types/src/mempool_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize};
use starknet_api::block::GasPrice;
use starknet_api::core::{ContractAddress, Nonce};
use starknet_api::rpc_transaction::InternalRpcTransaction;
use starknet_api::transaction::fields::Tip;
use starknet_api::transaction::TransactionHash;
use strum::VariantNames;

Expand Down Expand Up @@ -39,6 +40,16 @@ impl AddTransactionArgs {
}
}

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct ValidationArgs {
pub address: ContractAddress,
pub account_nonce: Nonce,
pub tx_hash: TransactionHash,
pub tx_nonce: Nonce,
pub tip: Tip,
pub max_l2_gas_price: GasPrice,
}

#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct CommitBlockArgs {
pub address_to_nonce: HashMap<ContractAddress, Nonce>,
Expand Down