Skip to content

Commit 8e116cc

Browse files
committed
wip
1 parent e35b307 commit 8e116cc

File tree

3 files changed

+60
-72
lines changed

3 files changed

+60
-72
lines changed

crates/node/sequencer/src/lib.rs

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ use std::future::IntoFuture;
77
use std::sync::Arc;
88

99
use anyhow::{bail, Context, Result};
10-
#[cfg(feature = "cartridge")]
11-
use cartridge::rpc::{layer::PaymasterLayer, Paymaster};
1210
use config::rpc::RpcModuleKind;
1311
use config::Config;
1412
use http::header::CONTENT_TYPE;
@@ -52,10 +50,12 @@ use katana_rpc_api::tee::TeeApiServer;
5250
use katana_rpc_client::starknet::Client as StarknetClient;
5351
#[cfg(feature = "cartridge")]
5452
use katana_rpc_server::cartridge::{CartridgeApi, CartridgeConfig};
55-
use katana_rpc_server::cors::Cors;
5653
use katana_rpc_server::dev::DevApi;
57-
use katana_rpc_server::logger::RpcLoggerLayer;
58-
use katana_rpc_server::metrics::RpcServerMetricsLayer;
54+
#[cfg(feature = "cartridge")]
55+
use katana_rpc_server::middleware::cartridge::ControllerDeploymentLayer;
56+
use katana_rpc_server::middleware::cors::Cors;
57+
use katana_rpc_server::middleware::logger::RpcLoggerLayer;
58+
use katana_rpc_server::middleware::metrics::RpcServerMetricsLayer;
5959
#[cfg(feature = "paymaster")]
6060
use katana_rpc_server::paymaster::PaymasterProxy;
6161
use katana_rpc_server::starknet::{StarknetApi, StarknetApiConfig};
@@ -75,16 +75,16 @@ use crate::exit::NodeStoppedFuture;
7575

7676
/// The concrete type of the RPC middleware stack used by the node.
7777
#[cfg(feature = "cartridge")]
78-
type NodeRpcMiddleware<P> = Stack<
79-
Either<PaymasterLayer<P>, Identity>,
78+
type NodeRpcMiddleware<Pool, PP, PF> = Stack<
79+
Either<ControllerDeploymentLayer<Pool, PP, PF>, Identity>,
8080
Stack<RpcLoggerLayer, Stack<RpcServerMetricsLayer, Identity>>,
8181
>;
8282

8383
#[cfg(not(feature = "cartridge"))]
8484
type NodeRpcMiddleware = Stack<RpcLoggerLayer, Stack<RpcServerMetricsLayer, Identity>>;
8585

8686
#[cfg(feature = "cartridge")]
87-
pub type NodeRpcServer<P> = RpcServer<NodeRpcMiddleware<P>>;
87+
pub type NodeRpcServer<Pool, PP, PF> = RpcServer<NodeRpcMiddleware<Pool, PP, PF>>;
8888

8989
#[cfg(not(feature = "cartridge"))]
9090
pub type NodeRpcServer = RpcServer<NodeRpcMiddleware>;
@@ -254,14 +254,60 @@ where
254254
rpc_modules.merge(proxy.into_rpc())?;
255255
};
256256

257+
// --- build starknet api
258+
259+
let starknet_api_cfg = StarknetApiConfig {
260+
max_event_page_size: config.rpc.max_event_page_size,
261+
max_proof_keys: config.rpc.max_proof_keys,
262+
max_call_gas: config.rpc.max_call_gas,
263+
max_concurrent_estimate_fee_requests: config.rpc.max_concurrent_estimate_fee_requests,
264+
simulation_flags: execution_flags,
265+
versioned_constant_overrides,
266+
};
267+
268+
let chain_spec = backend.chain_spec.clone();
269+
270+
let starknet_api = StarknetApi::new(
271+
chain_spec.clone(),
272+
pool.clone(),
273+
task_spawner.clone(),
274+
block_producer.clone(),
275+
gas_oracle.clone(),
276+
starknet_api_cfg,
277+
provider.clone(),
278+
);
279+
280+
if config.rpc.apis.contains(&RpcModuleKind::Starknet) {
281+
#[cfg(feature = "explorer")]
282+
if config.rpc.explorer {
283+
rpc_modules.merge(StarknetApiExtServer::into_rpc(starknet_api.clone()))?;
284+
}
285+
286+
rpc_modules.merge(StarknetApiServer::into_rpc(starknet_api.clone()))?;
287+
rpc_modules.merge(StarknetWriteApiServer::into_rpc(starknet_api.clone()))?;
288+
rpc_modules.merge(StarknetTraceApiServer::into_rpc(starknet_api.clone()))?;
289+
}
290+
291+
if config.rpc.apis.contains(&RpcModuleKind::Starknet) {
292+
rpc_modules.merge(KatanaApiServer::into_rpc(starknet_api.clone()))?;
293+
}
294+
295+
if config.rpc.apis.contains(&RpcModuleKind::Dev) {
296+
let api = DevApi::new(backend.clone(), block_producer.clone());
297+
rpc_modules.merge(DevApiServer::into_rpc(api))?;
298+
}
299+
300+
// --- build cartridge api (plus middleware)
301+
257302
#[cfg(feature = "cartridge")]
258303
let controller_deployment_layer = if let Some(cfg) = &config.paymaster {
259304
if let Some(cartridge_api_cfg) = &cfg.cartridge_api {
305+
use anyhow::ensure;
260306
use katana_rpc_client::HttpClient;
261307
use katana_rpc_server::cartridge::VrfService;
262308
use katana_rpc_server::middleware::cartridge::ControllerDeploymentLayer;
263309

264-
anyhow::ensure!(
310+
ensure!(
265311
config.rpc.apis.contains(&RpcModuleKind::Cartridge),
266312
"Cartridge API should be enabled when paymaster is set"
267313
);
@@ -289,9 +335,6 @@ where
289335
paymaster_url: cfg.url.clone(),
290336
paymaster_api_key: cfg.api_key.clone(),
291337
api_url: cartridge_api_cfg.cartridge_api_url.clone(),
292-
controller_deployer_address: cartridge_api_cfg.controller_deployer_address,
293-
controller_deployer_private_key: cartridge_api_cfg
294-
.controller_deployer_private_key,
295338
#[cfg(feature = "vrf")]
296339
vrf: vrf.clone(),
297340
};
@@ -323,49 +366,6 @@ where
323366
None
324367
};
325368

326-
// --- build starknet api
327-
328-
let starknet_api_cfg = StarknetApiConfig {
329-
max_event_page_size: config.rpc.max_event_page_size,
330-
max_proof_keys: config.rpc.max_proof_keys,
331-
max_call_gas: config.rpc.max_call_gas,
332-
max_concurrent_estimate_fee_requests: config.rpc.max_concurrent_estimate_fee_requests,
333-
simulation_flags: execution_flags,
334-
versioned_constant_overrides,
335-
};
336-
337-
let chain_spec = backend.chain_spec.clone();
338-
339-
let starknet_api = StarknetApi::new(
340-
chain_spec.clone(),
341-
pool.clone(),
342-
task_spawner.clone(),
343-
block_producer.clone(),
344-
gas_oracle.clone(),
345-
starknet_api_cfg,
346-
provider.clone(),
347-
);
348-
349-
if config.rpc.apis.contains(&RpcModuleKind::Starknet) {
350-
#[cfg(feature = "explorer")]
351-
if config.rpc.explorer {
352-
rpc_modules.merge(StarknetApiExtServer::into_rpc(starknet_api.clone()))?;
353-
}
354-
355-
rpc_modules.merge(StarknetApiServer::into_rpc(starknet_api.clone()))?;
356-
rpc_modules.merge(StarknetWriteApiServer::into_rpc(starknet_api.clone()))?;
357-
rpc_modules.merge(StarknetTraceApiServer::into_rpc(starknet_api.clone()))?;
358-
}
359-
360-
if config.rpc.apis.contains(&RpcModuleKind::Starknet) {
361-
rpc_modules.merge(KatanaApiServer::into_rpc(starknet_api.clone()))?;
362-
}
363-
364-
if config.rpc.apis.contains(&RpcModuleKind::Dev) {
365-
let api = DevApi::new(backend.clone(), block_producer.clone());
366-
rpc_modules.merge(DevApiServer::into_rpc(api))?;
367-
}
368-
369369
// --- build tee api (if configured)
370370
#[cfg(feature = "tee")]
371371
if config.rpc.apis.contains(&RpcModuleKind::Tee) {

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ pub struct CartridgeConfig {
7474
pub api_url: Url,
7575
pub paymaster_url: Url,
7676
pub paymaster_api_key: Option<String>,
77-
pub controller_deployer_address: ContractAddress,
78-
pub controller_deployer_private_key: Felt,
7977
#[cfg(feature = "vrf")]
8078
pub vrf: Option<vrf::VrfServiceConfig>,
8179
}
@@ -88,10 +86,6 @@ pub struct CartridgeApi<PF: ProviderFactory> {
8886
pool: TxPool,
8987
api_client: cartridge::CartridgeApiClient,
9088
paymaster_client: HttpClient,
91-
/// The paymaster account address used for controller deployment.
92-
controller_deployer_address: ContractAddress,
93-
/// The paymaster account private key.
94-
controller_deployer_private_key: Felt,
9589
#[cfg(feature = "vrf")]
9690
vrf_service: Option<VrfService>,
9791
}
@@ -108,8 +102,6 @@ where
108102
pool: self.pool.clone(),
109103
api_client: self.api_client.clone(),
110104
paymaster_client: self.paymaster_client.clone(),
111-
controller_deployer_address: self.controller_deployer_address,
112-
controller_deployer_private_key: self.controller_deployer_private_key,
113105
#[cfg(feature = "vrf")]
114106
vrf_service: self.vrf_service.clone(),
115107
}
@@ -154,8 +146,6 @@ where
154146
pool,
155147
api_client,
156148
paymaster_client,
157-
controller_deployer_address: config.controller_deployer_address,
158-
controller_deployer_private_key: config.controller_deployer_private_key,
159149
#[cfg(feature = "vrf")]
160150
vrf_service,
161151
})

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,9 @@ const CARTRIDGE_ADD_EXECUTE_FROM_OUTSIDE: &str = "cartridge_addExecuteFromOutsid
3737
const CARTRIDGE_ADD_EXECUTE_FROM_OUTSIDE_TX: &str = "cartridge_addExecuteOutsideTransaction";
3838

3939
#[derive(Debug)]
40-
pub struct ControllerDeploymentLayer<Pool, PoolTx, PP, PF>
40+
pub struct ControllerDeploymentLayer<Pool, PP, PF>
4141
where
42-
Pool: TransactionPool<Transaction = PoolTx> + 'static,
43-
PoolTx: From<BroadcastedTxWithChainId>,
42+
Pool: TransactionPool + 'static,
4443
PP: PendingBlockProvider,
4544
PF: ProviderFactory,
4645
<PF as ProviderFactory>::Provider: ProviderRO,
@@ -53,10 +52,9 @@ where
5352
vrf_service: Option<VrfService>,
5453
}
5554

56-
impl<Pool, PoolTx, PP, PF> ControllerDeploymentLayer<Pool, PoolTx, PP, PF>
55+
impl<Pool, PP, PF> ControllerDeploymentLayer<Pool, PP, PF>
5756
where
58-
Pool: TransactionPool<Transaction = PoolTx> + 'static,
59-
PoolTx: From<BroadcastedTxWithChainId>,
57+
Pool: TransactionPool + 'static,
6058
PP: PendingBlockProvider,
6159
PF: ProviderFactory,
6260
<PF as ProviderFactory>::Provider: ProviderRO,
@@ -80,7 +78,7 @@ where
8078
}
8179
}
8280

83-
impl<S, Pool, PoolTx, PP, PF> Layer<S> for ControllerDeploymentLayer<Pool, PoolTx, PP, PF>
81+
impl<S, Pool, PoolTx, PP, PF> Layer<S> for ControllerDeploymentLayer<Pool, PP, PF>
8482
where
8583
Pool: TransactionPool<Transaction = PoolTx> + 'static,
8684
PoolTx: From<BroadcastedTxWithChainId>,

0 commit comments

Comments
 (0)