cfx_rpc_cfx_api/
txpool.rs

1// Copyright 2020 Conflux Foundation. All rights reserved.
2// Conflux is free software and distributed under GNU General Public License.
3// See http://www.gnu.org/licenses/
4
5use cfx_rpc_cfx_types::{
6    AccountPendingInfo, AccountPendingTransactions, RpcAddress,
7    Transaction as RpcTransaction, TxPoolPendingNonceRange, TxPoolStatus,
8    TxWithPoolInfo,
9};
10use cfx_types::{H256, U256, U64};
11use jsonrpsee::{core::RpcResult as JsonRpcResult, proc_macros::rpc};
12
13/// Transaction pool RPCs
14#[rpc(server, namespace = "txpool")]
15pub trait TxPool {
16    #[method(name = "status")]
17    fn txpool_status(&self) -> JsonRpcResult<TxPoolStatus>;
18
19    #[method(name = "nextNonce")]
20    fn txpool_next_nonce(&self, address: RpcAddress) -> JsonRpcResult<U256>;
21
22    #[method(name = "transactionByAddressAndNonce")]
23    fn txpool_transaction_by_address_and_nonce(
24        &self, address: RpcAddress, nonce: U256,
25    ) -> JsonRpcResult<Option<RpcTransaction>>;
26
27    #[method(name = "pendingNonceRange")]
28    fn txpool_pending_nonce_range(
29        &self, address: RpcAddress,
30    ) -> JsonRpcResult<TxPoolPendingNonceRange>;
31
32    #[method(name = "txWithPoolInfo")]
33    fn txpool_tx_with_pool_info(
34        &self, hash: H256,
35    ) -> JsonRpcResult<TxWithPoolInfo>;
36
37    /// Get transaction pending info by account address
38    #[method(name = "accountPendingInfo")]
39    fn account_pending_info(
40        &self, address: RpcAddress,
41    ) -> JsonRpcResult<Option<AccountPendingInfo>>;
42
43    /// Get transaction pending info by account address
44    #[method(name = "accountPendingTransactions")]
45    fn account_pending_transactions(
46        &self, address: RpcAddress, maybe_start_nonce: Option<U256>,
47        maybe_limit: Option<U64>,
48    ) -> JsonRpcResult<AccountPendingTransactions>;
49}