mina_tree/scan_state/transaction_logic/zkapp_command/
valid.rs1use mina_curves::pasta::Fp;
2
3use super::{
4 verifiable::{self, create},
5 AccountId, TransactionStatus, VerificationKeyWire,
6};
7
8#[derive(Clone, Debug, PartialEq)]
9pub struct ZkAppCommand {
10 pub zkapp_command: super::ZkAppCommand,
11}
12
13impl ZkAppCommand {
14 pub fn forget(self) -> super::ZkAppCommand {
15 self.zkapp_command
16 }
17 pub fn forget_ref(&self) -> &super::ZkAppCommand {
18 &self.zkapp_command
19 }
20}
21
22pub fn of_verifiable(cmd: verifiable::ZkAppCommand) -> ZkAppCommand {
24 ZkAppCommand {
25 zkapp_command: super::ZkAppCommand::of_verifiable(cmd),
26 }
27}
28
29pub fn to_valid(
31 zkapp_command: super::ZkAppCommand,
32 status: &TransactionStatus,
33 find_vk: impl Fn(Fp, &AccountId) -> Result<VerificationKeyWire, String>,
34) -> Result<ZkAppCommand, String> {
35 create(&zkapp_command, status.is_failed(), find_vk).map(of_verifiable)
36}