mina_node/rpc_effectful/
rpc_effectful_action.rs

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