Skip to content

Commit b6a749c

Browse files
committed
wip
1 parent 7f85ef4 commit b6a749c

File tree

4 files changed

+101
-41
lines changed

4 files changed

+101
-41
lines changed

crates/node/src/full/pending/provider.rs

Lines changed: 97 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,57 +2,120 @@ use std::fmt::Debug;
22

33
use katana_gateway_types::TxTryFromError;
44
use katana_primitives::block::{GasPrices, PartialHeader, PendingBlock};
5-
use katana_primitives::transaction::TxWithHash;
5+
use katana_primitives::transaction::{TxHash, TxWithHash};
66
use katana_primitives::Felt;
77
use katana_provider::api::state::{StateFactoryProvider, StateProvider};
8-
use katana_rpc::starknet::PendingBlockProvider;
8+
use katana_rpc::starknet::{PendingBlockProvider, StarknetApiResult};
9+
use katana_rpc_types::PreConfirmedBlockWithTxs;
910
use num_traits::ToPrimitive;
1011
use starknet::core::types::ResourcePrice;
1112

1213
use crate::full::pending::PreconfStateFactory;
1314

1415
impl<P: StateFactoryProvider + Debug> PendingBlockProvider for PreconfStateFactory<P> {
15-
fn pending_block(&self) -> Option<PendingBlock> {
16-
if let Some(preconf_block) = self.block() {
17-
Some(PendingBlock {
18-
header: PartialHeader {
19-
l1_da_mode: preconf_block.l1_da_mode,
20-
l1_gas_prices: to_gas_prices(preconf_block.l1_gas_price),
21-
l2_gas_prices: to_gas_prices(preconf_block.l2_gas_price),
22-
l1_data_gas_prices: to_gas_prices(preconf_block.l1_data_gas_price),
23-
sequencer_address: preconf_block.sequencer_address,
24-
starknet_version: preconf_block.starknet_version.try_into().unwrap(),
25-
timestamp: preconf_block.timestamp,
26-
number: 0,
27-
parent_hash: Felt::ZERO,
28-
},
29-
transactions: preconf_block
30-
.transactions
31-
.clone()
32-
.into_iter()
33-
.map(TxWithHash::try_from)
34-
.collect::<Result<Vec<_>, TxTryFromError>>()
35-
.unwrap(),
36-
})
16+
fn get_pending_block_with_txs(
17+
&self,
18+
) -> StarknetApiResult<Option<katana_rpc_types::PreConfirmedBlockWithTxs>> {
19+
if let Some(block) = self.block() {
20+
let transactions = block
21+
.transactions
22+
.clone()
23+
.into_iter()
24+
.map(TxWithHash::try_from)
25+
.collect::<Result<Vec<_>, TxTryFromError>>()
26+
.unwrap();
27+
28+
Ok(Some(katana_rpc_types::PreConfirmedBlockWithTxs {
29+
transactions,
30+
block_number: 0,
31+
l1_da_mode: block.l1_da_mode,
32+
l1_gas_price: to_gas_prices(block.l1_gas_price),
33+
l2_gas_price: to_gas_prices(block.l2_gas_price),
34+
l1_data_gas_price: to_gas_prices(block.l1_data_gas_price),
35+
sequencer_address: block.sequencer_address,
36+
starknet_version: block.starknet_version,
37+
timestamp: block.timestamp,
38+
}))
39+
} else {
40+
Ok(None)
41+
}
42+
}
43+
44+
fn get_pending_block_with_receipts(
45+
&self,
46+
) -> StarknetApiResult<Option<katana_rpc_types::PreConfirmedBlockWithReceipts>> {
47+
if let Some(block) = self.block() {
48+
Ok(Some(katana_rpc_types::PreConfirmedBlockWithReceipts {
49+
transactions: Vec::new(),
50+
block_number: 0,
51+
l1_da_mode: block.l1_da_mode,
52+
l1_gas_price: to_gas_prices(block.l1_gas_price),
53+
l2_gas_price: to_gas_prices(block.l2_gas_price),
54+
l1_data_gas_price: to_gas_prices(block.l1_data_gas_price),
55+
sequencer_address: block.sequencer_address,
56+
starknet_version: block.starknet_version,
57+
timestamp: block.timestamp,
58+
}))
59+
} else {
60+
Ok(None)
61+
}
62+
}
63+
64+
fn get_pending_block_with_tx_hashes(
65+
&self,
66+
) -> StarknetApiResult<Option<katana_rpc_types::PreConfirmedBlockWithTxHashes>> {
67+
if let Some(block) = self.block() {
68+
let transactions = block
69+
.transactions
70+
.clone()
71+
.into_iter()
72+
.map(|tx| tx.transaction_hash)
73+
.collect::<Vec<TxHash>>();
74+
75+
Ok(Some(katana_rpc_types::PreConfirmedBlockWithTxHashes {
76+
transactions,
77+
block_number: 0,
78+
l1_da_mode: block.l1_da_mode,
79+
l1_gas_price: to_gas_prices(block.l1_gas_price),
80+
l2_gas_price: to_gas_prices(block.l2_gas_price),
81+
l1_data_gas_price: to_gas_prices(block.l1_data_gas_price),
82+
sequencer_address: block.sequencer_address,
83+
starknet_version: block.starknet_version,
84+
timestamp: block.timestamp,
85+
}))
3786
} else {
38-
None
87+
Ok(None)
3988
}
4089
}
4190

42-
fn pending_state_update(&self) -> Option<katana_primitives::state::StateUpdates> {
43-
self.state_updates()
91+
fn get_pending_receipt(
92+
&self,
93+
hash: TxHash,
94+
) -> StarknetApiResult<Option<katana_rpc_types::TxReceiptWithBlockInfo>> {
95+
Ok(None)
96+
}
97+
98+
fn get_pending_state_update(
99+
&self,
100+
) -> StarknetApiResult<Option<katana_rpc_types::PreConfirmedStateUpdate>> {
101+
Ok(None)
102+
}
103+
104+
fn get_pending_transaction(
105+
&self,
106+
hash: TxHash,
107+
) -> StarknetApiResult<Option<katana_rpc_types::RpcTxWithHash>> {
108+
Ok(None)
44109
}
45110

46-
fn pending_transactions(
111+
fn get_pending_transaction_by_index(
47112
&self,
48-
) -> Vec<(
49-
katana_primitives::transaction::TxWithHash,
50-
Option<katana_primitives::receipt::Receipt>,
51-
)> {
52-
todo!()
113+
hash: TxHash,
114+
) -> StarknetApiResult<Option<katana_rpc_types::RpcTxWithHash>> {
115+
Ok(None)
53116
}
54117

55-
fn pending_state(&self) -> Option<Box<dyn StateProvider>> {
118+
fn pending_state(&self) -> StarknetApiResult<Option<Box<dyn StateProvider>>> {
56119
Some(Box::new(self.state()))
57120
}
58121
}

crates/node/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// #![cfg_attr(not(test), warn(unused_crate_dependencies))]
1+
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
22

33
pub mod full;
44

crates/rpc/rpc/src/starknet/mod.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use katana_primitives::contract::{ContractAddress, Nonce, StorageKey, StorageVal
1717
use katana_primitives::env::BlockEnv;
1818
use katana_primitives::event::MaybeForkedContinuationToken;
1919
use katana_primitives::transaction::{ExecutableTxWithHash, TxHash, TxNumber};
20-
use katana_primitives::version::CURRENT_STARKNET_VERSION;
2120
use katana_primitives::Felt;
2221
use katana_provider::api::block::{BlockHashProvider, BlockIdReader, BlockNumberProvider};
2322
use katana_provider::api::contract::ContractClassProvider;
@@ -48,14 +47,11 @@ use katana_rpc_types::trie::{
4847
ClassesProof, ContractLeafData, ContractStorageKeys, ContractStorageProofs, ContractsProof,
4948
GetStorageProofResponse, GlobalRoots, Nodes,
5049
};
51-
use katana_rpc_types::{
52-
FeeEstimate, PreConfirmedBlockWithReceipts, PreConfirmedBlockWithTxs, TxStatus,
53-
};
50+
use katana_rpc_types::{FeeEstimate, TxStatus};
5451
use katana_rpc_types_builder::{BlockBuilder, ReceiptBuilder};
5552
use katana_tasks::{Result as TaskResult, TaskSpawner};
5653

5754
use crate::permit::Permits;
58-
use crate::starknet::pending::PendingBlockProvider2;
5955
use crate::utils::events::{Cursor, EventBlockId};
6056
use crate::{utils, DEFAULT_ESTIMATE_FEE_MAX_CONCURRENT_REQUESTS};
6157

@@ -74,7 +70,7 @@ pub use config::StarknetApiConfig;
7470
use forking::ForkedClient;
7571
pub use pending::PendingBlockProvider;
7672

77-
type StarknetApiResult<T> = Result<T, StarknetApiError>;
73+
pub type StarknetApiResult<T> = Result<T, StarknetApiError>;
7874

7975
/// Handler for the Starknet JSON-RPC server.
8076
///

crates/rpc/rpc/src/starknet/pending.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use katana_primitives::da::L1DataAvailabilityMode;
77
use katana_primitives::execution::TypedTransactionExecutionInfo;
88
use katana_primitives::transaction::{TxHash, TxNumber};
99
use katana_primitives::version::CURRENT_STARKNET_VERSION;
10+
use katana_primitives::{block::PartialHeader, transaction::TxNumber};
1011
use katana_provider::api::state::StateProvider;
1112
use katana_rpc_types::{
1213
FinalityStatus, PreConfirmedBlockWithReceipts, PreConfirmedBlockWithTxHashes,

0 commit comments

Comments
 (0)