node/rpc_effectful/
rpc_effectful_action.rs

1use crate::{
2    external_snark_worker::{ExternalSnarkWorker, SnarkWorkId},
3    p2p::connection::P2pConnectionResponse,
4    rpc::{
5        discovery::RpcDiscoveryRoutingTable, AccountQuery, ActionStatsQuery, RpcBestChainResponse,
6        RpcConsensusTimeGetResponse, RpcGenesisBlockResponse, RpcGetBlockResponse,
7        RpcLedgerAccountDelegatorsGetResponse, RpcLedgerStatusGetResponse, RpcPeerInfo,
8        RpcPooledUserCommandsResponse, RpcPooledZkappCommandsResponse,
9        RpcScanStateSummaryScanStateJob, RpcSnarkPoolCompletedJobsResponse,
10        RpcSnarkPoolPendingJobsGetResponse, RpcSnarkerConfig, RpcTransactionInjectFailure,
11        RpcTransactionInjectRejected, RpcTransactionInjectSuccess, SyncStatsQuery,
12    },
13};
14use ledger::{
15    scan_state::transaction_logic::{valid::UserCommand, zkapp_command::WithHash},
16    Account,
17};
18use mina_core::{consensus::ConsensusConstants, requests::RpcId, snark::SnarkJobId, ActionEvent};
19use mina_p2p_messages::v2::{self, MinaBaseUserCommandStableV2};
20use p2p::bootstrap::P2pNetworkKadBootstrapStats;
21use serde::{Deserialize, Serialize};
22
23#[derive(Serialize, Deserialize, Debug, Clone, ActionEvent)]
24pub enum RpcEffectfulAction {
25    GlobalStateGet {
26        rpc_id: RpcId,
27        filter: Option<String>,
28    },
29    StatusGet {
30        rpc_id: RpcId,
31    },
32    HeartbeatGet {
33        rpc_id: RpcId,
34    },
35    ActionStatsGet {
36        rpc_id: RpcId,
37        query: ActionStatsQuery,
38    },
39    SyncStatsGet {
40        rpc_id: RpcId,
41        query: SyncStatsQuery,
42    },
43    BlockProducerStatsGet {
44        rpc_id: RpcId,
45    },
46
47    MessageProgressGet {
48        rpc_id: RpcId,
49    },
50    PeersGet {
51        rpc_id: RpcId,
52        peers: Vec<RpcPeerInfo>,
53    },
54    P2pConnectionOutgoingError {
55        rpc_id: RpcId,
56        error: String,
57    },
58    P2pConnectionOutgoingSuccess {
59        rpc_id: RpcId,
60    },
61    P2pConnectionIncomingRespond {
62        rpc_id: RpcId,
63        response: P2pConnectionResponse,
64    },
65    P2pConnectionIncomingError {
66        rpc_id: RpcId,
67        error: String,
68    },
69    P2pConnectionIncomingSuccess {
70        rpc_id: RpcId,
71    },
72    ScanStateSummaryGetSuccess {
73        rpc_id: RpcId,
74        scan_state: Result<Vec<Vec<RpcScanStateSummaryScanStateJob>>, String>,
75    },
76    SnarkPoolAvailableJobsGet {
77        rpc_id: RpcId,
78    },
79    SnarkPoolJobGet {
80        job_id: SnarkWorkId,
81        rpc_id: RpcId,
82    },
83    SnarkPoolCompletedJobsGet {
84        rpc_id: RpcId,
85        jobs: RpcSnarkPoolCompletedJobsResponse,
86    },
87    SnarkPoolPendingJobsGet {
88        rpc_id: RpcId,
89        jobs: RpcSnarkPoolPendingJobsGetResponse,
90    },
91    SnarkerConfigGet {
92        rpc_id: RpcId,
93        config: Option<RpcSnarkerConfig>,
94    },
95    SnarkerJobCommit {
96        rpc_id: RpcId,
97        job_id: SnarkJobId,
98    },
99    SnarkerJobSpec {
100        rpc_id: RpcId,
101        job_id: SnarkJobId,
102    },
103    SnarkerWorkersGet {
104        rpc_id: RpcId,
105        snark_worker: ExternalSnarkWorker,
106    },
107    HealthCheck {
108        rpc_id: RpcId,
109        has_peers: Result<(), String>,
110    },
111    ReadinessCheck {
112        rpc_id: RpcId,
113    },
114    DiscoveryRoutingTable {
115        rpc_id: RpcId,
116        response: Option<RpcDiscoveryRoutingTable>,
117    },
118    DiscoveryBoostrapStats {
119        rpc_id: RpcId,
120        response: Option<P2pNetworkKadBootstrapStats>,
121    },
122    TransactionPool {
123        rpc_id: RpcId,
124        response: Vec<WithHash<UserCommand, v2::TransactionHash>>,
125    },
126    LedgerAccountsGetSuccess {
127        rpc_id: RpcId,
128        accounts: Vec<Account>,
129        account_query: AccountQuery,
130    },
131    TransactionInjectSuccess {
132        rpc_id: RpcId,
133        response: RpcTransactionInjectSuccess,
134    },
135    TransactionInjectRejected {
136        rpc_id: RpcId,
137        response: RpcTransactionInjectRejected,
138    },
139    TransactionInjectFailure {
140        rpc_id: RpcId,
141        errors: RpcTransactionInjectFailure,
142    },
143    TransitionFrontierUserCommandsGet {
144        rpc_id: RpcId,
145        commands: Vec<MinaBaseUserCommandStableV2>,
146    },
147    BestChain {
148        rpc_id: RpcId,
149        best_chain: RpcBestChainResponse,
150    },
151    ConsensusConstantsGet {
152        rpc_id: RpcId,
153        response: ConsensusConstants,
154    },
155    TransactionStatusGet {
156        rpc_id: RpcId,
157        tx: MinaBaseUserCommandStableV2,
158    },
159    BlockGet {
160        rpc_id: RpcId,
161        block: RpcGetBlockResponse,
162    },
163    PooledUserCommands {
164        rpc_id: RpcId,
165        user_commands: RpcPooledUserCommandsResponse,
166    },
167    PooledZkappCommands {
168        rpc_id: RpcId,
169        zkapp_commands: RpcPooledZkappCommandsResponse,
170    },
171    GenesisBlock {
172        rpc_id: RpcId,
173        genesis_block: RpcGenesisBlockResponse,
174    },
175    ConsensusTimeGet {
176        rpc_id: RpcId,
177        consensus_time: RpcConsensusTimeGetResponse,
178    },
179    LedgerStatusGetSuccess {
180        rpc_id: RpcId,
181        response: RpcLedgerStatusGetResponse,
182    },
183    LedgerAccountDelegatorsGetSuccess {
184        rpc_id: RpcId,
185        response: RpcLedgerAccountDelegatorsGetResponse,
186    },
187}
188
189impl redux::EnablingCondition<crate::State> for RpcEffectfulAction {
190    fn is_enabled(&self, _state: &crate::State, _time: redux::Timestamp) -> bool {
191        true
192    }
193}