Skip to content

Commit e5f8d73

Browse files
committed
wip
1 parent 5e05c31 commit e5f8d73

File tree

15 files changed

+297
-528
lines changed

15 files changed

+297
-528
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/core/src/service/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ use std::task::{Context, Poll};
44

55
use block_producer::BlockProductionError;
66
use futures::stream::StreamExt;
7-
use katana_pool::{PendingTransactions, PoolOrd, TransactionPool, TxPool};
7+
use katana_pool::api::{PendingTransactions, PoolOrd, TransactionPool};
8+
use katana_pool::TxPool;
89
use katana_primitives::transaction::ExecutableTxWithHash;
910
use katana_provider::{ProviderFactory, ProviderRO, ProviderRW};
1011
use tracing::{error, info};

crates/messaging/src/service.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ use std::time::Duration;
55

66
use futures::{Future, FutureExt, Stream};
77
use katana_chain_spec::ChainSpec;
8-
use katana_pool::{TransactionPool, TxPool};
8+
use katana_pool::api::TransactionPool;
9+
use katana_pool::TxPool;
910
use katana_primitives::chain::ChainId;
1011
use katana_primitives::transaction::{ExecutableTxWithHash, L1HandlerTx, TxHash};
1112
use tokio::time::{interval_at, Instant, Interval};

crates/pool/pool/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ pub mod ordering;
44
pub mod pool;
55
pub mod validation;
66

7-
pub use katana_pool_api::{PendingTransactions, PoolOrd, PoolTransaction, TransactionPool};
87
use katana_primitives::transaction::ExecutableTxWithHash;
98
use ordering::FiFo;
109
use pool::Pool;
@@ -13,6 +12,10 @@ use validation::stateful::TxValidator;
1312
/// Katana default transacstion pool type.
1413
pub type TxPool = Pool<ExecutableTxWithHash, TxValidator, FiFo<ExecutableTxWithHash>>;
1514

15+
pub mod api {
16+
pub use katana_pool_api::*;
17+
}
18+
1619
#[cfg(test)]
1720
mod tests {
1821

crates/rpc/rpc-server/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ katana-explorer = { workspace = true, features = [ "jsonrpsee" ], optional = tru
1414
katana-metrics.workspace = true
1515
katana-pool.workspace = true
1616
katana-primitives.workspace = true
17+
katana-paymaster.workspace = true
1718
katana-genesis = { workspace = true, optional = true }
1819
katana-provider = { workspace = true, features = [ "test-utils" ] }
1920
katana-rpc-api = { workspace = true, features = [ "client" ] }
@@ -36,6 +37,7 @@ tokio.workspace = true
3637
tower.workspace = true
3738
tower-http = { workspace = true, features = [ "cors", "trace" ] }
3839
tracing.workspace = true
40+
serde.workspace = true
3941

4042
cainome = { workspace = true, optional = true }
4143
cartridge = { workspace = true, optional = true }
@@ -71,7 +73,6 @@ jsonrpsee = { workspace = true, features = [ "client" ] }
7173
num-traits.workspace = true
7274
rand.workspace = true
7375
rstest.workspace = true
74-
serde.workspace = true
7576
serde_json.workspace = true
7677
similar-asserts.workspace = true
7778
starknet.workspace = true

crates/rpc/rpc-server/src/cartridge/mod.rs

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ use std::sync::Arc;
3232

3333
use anyhow::anyhow;
3434
use cainome::cairo_serde::CairoSerde;
35-
use cartridge::vrf::SignedOutsideExecution;
3635
use http::{HeaderMap, HeaderName, HeaderValue};
3736
use jsonrpsee::core::{async_trait, RpcResult};
3837
use jsonrpsee::http_client::{HttpClient, HttpClientBuilder};
3938
use katana_core::backend::Backend;
4039
use katana_core::service::block_producer::{BlockProducer, BlockProducerMode};
4140
use katana_genesis::constant::{DEFAULT_STRK_FEE_TOKEN_ADDRESS, DEFAULT_UDC_ADDRESS};
42-
use katana_pool::{TransactionPool, TxPool};
41+
use katana_pool::api::TransactionPool;
42+
use katana_pool::TxPool;
4343
use katana_primitives::chain::ChainId;
4444
use katana_primitives::contract::Nonce;
4545
use katana_primitives::execution::Call;
@@ -53,9 +53,7 @@ use katana_rpc_api::error::cartridge::CartridgeApiError;
5353
use katana_rpc_api::paymaster::PaymasterApiClient;
5454
use katana_rpc_types::broadcasted::AddInvokeTransactionResponse;
5555
use katana_rpc_types::cartridge::FeeSource;
56-
use katana_rpc_types::outside_execution::{
57-
OutsideExecution, OutsideExecutionV2, OutsideExecutionV3,
58-
};
56+
use katana_rpc_types::outside_execution::OutsideExecution;
5957
use katana_rpc_types::FunctionCall;
6058
use katana_tasks::{Result as TaskResult, TaskSpawner};
6159
use paymaster_rpc::{
@@ -218,7 +216,7 @@ where
218216
let mut calldata = outside_execution.as_felts();
219217
calldata.extend(signature);
220218

221-
let mut call = Call { contract_address, entry_point_selector, calldata };
219+
let mut call: Call = Call { contract_address, entry_point_selector, calldata };
222220
let mut user_address: Felt = contract_address.into();
223221

224222
#[cfg(feature = "vrf")]
@@ -231,7 +229,7 @@ where
231229
return Err(CartridgeApiError::VrfMissingFollowUpCall);
232230
}
233231

234-
if request_random_call.to != vrf_service.account_address() {
232+
if request_random_call.contract_address != vrf_service.account_address() {
235233
return Err(CartridgeApiError::VrfInvalidTarget);
236234
}
237235

@@ -247,7 +245,7 @@ where
247245
.await?;
248246

249247
user_address = result.address.into();
250-
call = build_execute_from_outside_call_from_vrf_result(&result);
248+
call = result.into();
251249
}
252250
}
253251

@@ -353,13 +351,8 @@ where
353351
pub fn encode_calls(calls: Vec<FunctionCall>) -> Vec<Felt> {
354352
let mut execute_calldata: Vec<Felt> = vec![calls.len().into()];
355353
for call in calls {
356-
execute_calldata.push(call.contract_address.into());
357-
execute_calldata.push(call.entry_point_selector);
358-
359-
execute_calldata.push(call.calldata.len().into());
360-
execute_calldata.extend_from_slice(&call.calldata);
354+
execute_calldata.extend(Call::cairo_serialize(&call));
361355
}
362-
363356
execute_calldata
364357
}
365358

@@ -462,20 +455,3 @@ pub async fn craft_deploy_cartridge_controller_tx(
462455
Ok(None)
463456
}
464457
}
465-
466-
pub fn build_execute_from_outside_call_from_vrf_result(result: &SignedOutsideExecution) -> Call {
467-
let (selector, calldata) = match &result.outside_execution {
468-
cartridge::vrf::VrfOutsideExecution::V2(v2) => {
469-
let mut calldata = OutsideExecutionV2::cairo_serialize(v2);
470-
calldata.extend(Vec::<Felt>::cairo_serialize(&result.signature));
471-
(selector!("execute_from_outside_v2"), calldata)
472-
}
473-
cartridge::vrf::VrfOutsideExecution::V3(v3) => {
474-
let mut calldata = OutsideExecutionV3::cairo_serialize(v3);
475-
calldata.extend(Vec::<Felt>::cairo_serialize(&result.signature));
476-
(selector!("execute_from_outside_v3"), calldata)
477-
}
478-
};
479-
480-
PaymasterCall { to: result.address, selector, calldata }
481-
}

crates/rpc/rpc-server/src/cartridge/vrf.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
//! VRF (Verifiable Random Function) service for Cartridge.
22
3-
use cartridge::vrf::client::SignedOutsideExecution;
4-
use cartridge::vrf::{RequestContext, SignedOutsideExecution, VrfOutsideExecution};
5-
use cartridge::VrfClient;
3+
use cartridge::vrf::{RequestContext, SignedOutsideExecution, VrfClient, VrfOutsideExecution};
64
use katana_primitives::chain::ChainId;
5+
use katana_primitives::execution::Call;
76
use katana_primitives::{ContractAddress, Felt};
87
use katana_rpc_api::error::cartridge::CartridgeApiError;
98
use katana_rpc_types::outside_execution::OutsideExecution;
@@ -17,7 +16,7 @@ pub struct VrfServiceConfig {
1716
pub vrf_contract: ContractAddress,
1817
}
1918

20-
#[derive(Clone)]
19+
#[derive(Debug, Clone)]
2120
pub struct VrfService {
2221
client: VrfClient,
2322
account_address: ContractAddress,
@@ -72,11 +71,11 @@ impl VrfService {
7271

7372
pub(super) fn get_request_random_call(
7473
outside_execution: &OutsideExecution,
75-
) -> Option<(katana_rpc_types::outside_execution::Call, usize)> {
76-
outside_execution
77-
.calls()
74+
) -> Option<(Call, usize)> {
75+
let calls = outside_execution.calls();
76+
calls
7877
.iter()
79-
.position(|call| call.selector == selector!("request_random"))
78+
.position(|call| call.entry_point_selector == selector!("request_random"))
8079
.map(|position| (calls[position].clone(), position))
8180
}
8281

crates/rpc/rpc-server/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ pub mod permit;
3232
pub mod starknet;
3333

3434
mod utils;
35-
use cors::Cors;
3635
use health::HealthCheck;
3736
pub use jsonrpsee::core::middleware::RpcServiceBuilder;
3837
pub use jsonrpsee::http_client::HttpClient;
3938
pub use katana_rpc_api as api;
39+
use middleware::cors::Cors;
4040

4141
/// The default maximum number of concurrent RPC connections.
4242
pub const DEFAULT_RPC_MAX_CONNECTIONS: u32 = 100;

0 commit comments

Comments
 (0)