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