Skip to content

Commit

Permalink
zkapp_test_transation
Browse files Browse the repository at this point in the history
  • Loading branch information
martyall committed Sep 18, 2024
1 parent c835473 commit 3935601
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 132 deletions.
134 changes: 83 additions & 51 deletions src/app/zkapp_test_transaction/lib/commands.ml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@ let get_second_pass_ledger_mask ~ledger ~constraint_constants ~global_slot
second_pass_ledger

let gen_proof ?(zkapp_account = None) (zkapp_command : Zkapp_command.t)
~(genesis_constants : Genesis_constants.t)
~(proof_level : Genesis_constants.Proof_level.t)
~(constraint_constants : Genesis_constants.Constraint_constants.t) =
~(config : Runtime_config.t) =
let genesis_constants = config.genesis_constants in
let { Runtime_config.Constraint.constraint_constants; proof_level } =
config.constraint_config
in
let ledger = Ledger.create ~depth:constraint_constants.ledger_depth () in
let _v =
let id =
Expand Down Expand Up @@ -146,8 +148,7 @@ let gen_proof ?(zkapp_account = None) (zkapp_command : Zkapp_command.t)
()

let generate_zkapp_txn (keypair : Signature_lib.Keypair.t) (ledger : Ledger.t)
~zkapp_kp ~(genesis_constants : Genesis_constants.t) ~proof_level
~constraint_constants =
~zkapp_kp ~(config : Runtime_config.t) =
let open Deferred.Let_syntax in
let receiver =
Quickcheck.random_value Signature_lib.Public_key.Compressed.gen
Expand All @@ -160,6 +161,10 @@ let generate_zkapp_txn (keypair : Signature_lib.Keypair.t) (ledger : Ledger.t)
; amount = Currency.Amount.of_mina_int_exn 10 (*10 Mina*)
}
in
let { Runtime_config.Constraint.constraint_constants; proof_level } =
config.constraint_config
in
let genesis_constants = config.genesis_constants in
let consensus_constants =
Consensus.Constants.create ~constraint_constants
~protocol_constants:genesis_constants.protocol
Expand Down Expand Up @@ -326,38 +331,32 @@ module Util = struct
end

let test_zkapp_with_genesis_ledger_main keyfile zkapp_keyfile config_file () =
let constraint_constants = Genesis_constants.Compiled.constraint_constants in
let genesis_constants = Genesis_constants.Compiled.genesis_constants in
let open Deferred.Let_syntax in
let%bind keypair = Util.fee_payer_keypair_of_file keyfile in
let%bind zkapp_kp = Util.snapp_keypair_of_file zkapp_keyfile in
let%bind ledger =
let%map config_json = Genesis_ledger_helper.load_config_json config_file in
let runtime_config =
Or_error.ok_exn config_json
|> Runtime_config.of_yojson |> Result.ok_or_failwith
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger ()
in
let ledger =
let accounts =
let config = Option.value_exn runtime_config.Runtime_config.ledger in
match config.base with
match config.ledger.base with
| Accounts accounts ->
lazy (Genesis_ledger_helper.Accounts.to_full accounts)
| _ ->
failwith "Invalid genesis ledger, does not contain the accounts"
in
let packed =
Genesis_ledger_helper.Ledger.packed_genesis_ledger_of_accounts
~depth:constraint_constants.ledger_depth accounts
~depth:config.constraint_config.constraint_constants.ledger_depth
accounts
in
Lazy.force (Genesis_ledger.Packed.t packed)
in
generate_zkapp_txn keypair ledger ~zkapp_kp ~constraint_constants
~proof_level:Full ~genesis_constants
generate_zkapp_txn keypair ledger ~zkapp_kp ~config

let create_zkapp_account ~debug ~sender ~sender_nonce ~fee ~fee_payer
~fee_payer_nonce ~zkapp_keyfile ~amount ~memo =
let constraint_constants = Genesis_constants.Compiled.constraint_constants in
let genesis_constants = Genesis_constants.Compiled.genesis_constants in
~fee_payer_nonce ~zkapp_keyfile ~amount ~memo ~config_file =
let open Deferred.Let_syntax in
let%bind sender_keypair = Util.keypair_of_file sender ~which:"Sender" in
let%bind fee_payer_keypair = Util.fee_payer_keypair_of_file fee_payer in
Expand All @@ -376,21 +375,21 @@ let create_zkapp_account ~debug ~sender ~sender_nonce ~fee ~fee_payer
; authorization_kind = Signature
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let constraint_constants = config.constraint_config.constraint_constants in
let%bind zkapp_command =
Transaction_snark.For_tests.deploy_snapp
~permissions:Permissions.user_default ~constraint_constants spec
in
let%map () =
if debug then
gen_proof ~genesis_constants ~constraint_constants ~proof_level:Full
zkapp_command
else return ()
in
let%map () = if debug then gen_proof ~config zkapp_command else return () in
zkapp_command

let upgrade_zkapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile
~constraint_constants ~genesis_constants ~verification_key ~zkapp_uri ~auth
=
let upgrade_zkapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile ~config_file
~verification_key ~zkapp_uri ~auth =
let open Deferred.Let_syntax in
let%bind keypair = Util.fee_payer_keypair_of_file keyfile in
let%bind zkapp_account_keypair = Util.snapp_keypair_of_file zkapp_keyfile in
Expand Down Expand Up @@ -423,6 +422,12 @@ let upgrade_zkapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile
; preconditions = None
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let constraint_constants = config.constraint_config.constraint_constants in
let%bind zkapp_command =
let `VK vk, `Prover prover =
Lazy.force @@ vk_and_prover ~constraint_constants
Expand All @@ -432,8 +437,7 @@ let upgrade_zkapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile
in
let%map () =
if debug then
gen_proof zkapp_command ~constraint_constants ~genesis_constants
~proof_level:Full
gen_proof zkapp_command ~config
~zkapp_account:
(Some
(Signature_lib.Public_key.compress zkapp_account_keypair.public_key)
Expand All @@ -443,7 +447,7 @@ let upgrade_zkapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile
zkapp_command

let transfer_funds ~debug ~sender ~sender_nonce ~fee ~fee_payer ~fee_payer_nonce
~memo ~receivers ~genesis_constants ~constraint_constants =
~memo ~receivers ~config_file =
let open Deferred.Let_syntax in
let%bind receivers = receivers in
let amount =
Expand All @@ -469,21 +473,24 @@ let transfer_funds ~debug ~sender ~sender_nonce ~fee ~fee_payer ~fee_payer_nonce
; preconditions = None
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let zkapp_command =
Transaction_snark.For_tests.multiple_transfers
~constraint_constants:
Genesis_constants.For_unit_tests.Constraint_constants.t spec
in
let%map () =
if debug then
gen_proof zkapp_command ~zkapp_account:None ~genesis_constants
~constraint_constants ~proof_level:Full
if debug then gen_proof zkapp_command ~zkapp_account:None ~config
else return ()
in
zkapp_command

let update_state ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile ~app_state
~genesis_constants ~constraint_constants =
~config_file =
let open Deferred.Let_syntax in
let%bind keypair = Util.fee_payer_keypair_of_file keyfile in
let%bind zkapp_keypair = Util.snapp_keypair_of_file zkapp_keyfile in
Expand All @@ -505,6 +512,12 @@ let update_state ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile ~app_state
; preconditions = None
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let constraint_constants = config.constraint_config.constraint_constants in
let%bind zkapp_command =
let `VK vk, `Prover prover =
Lazy.force @@ vk_and_prover ~constraint_constants
Expand All @@ -514,16 +527,15 @@ let update_state ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile ~app_state
in
let%map () =
if debug then
gen_proof zkapp_command ~genesis_constants ~constraint_constants
~proof_level:Full
gen_proof zkapp_command ~config
~zkapp_account:
(Some (Signature_lib.Public_key.compress zkapp_keypair.public_key))
else return ()
in
zkapp_command

let update_zkapp_uri ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile ~zkapp_uri
~auth ~constraint_constants ~genesis_constants =
~auth ~config_file =
let open Deferred.Let_syntax in
let%bind keypair = Util.fee_payer_keypair_of_file keyfile in
let%bind zkapp_account_keypair = Util.snapp_keypair_of_file snapp_keyfile in
Expand All @@ -545,6 +557,12 @@ let update_zkapp_uri ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile ~zkapp_uri
; preconditions = None
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let constraint_constants = config.constraint_config.constraint_constants in
let%bind zkapp_command =
let `VK vk, `Prover prover =
Lazy.force @@ vk_and_prover ~constraint_constants
Expand All @@ -554,8 +572,7 @@ let update_zkapp_uri ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile ~zkapp_uri
in
let%map () =
if debug then
gen_proof zkapp_command ~genesis_constants ~constraint_constants
~proof_level:Full
gen_proof zkapp_command ~config
~zkapp_account:
(Some
(Signature_lib.Public_key.compress zkapp_account_keypair.public_key)
Expand All @@ -565,7 +582,7 @@ let update_zkapp_uri ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile ~zkapp_uri
zkapp_command

let update_action_state ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile
~action_state ~genesis_constants ~constraint_constants =
~action_state ~config_file =
let open Deferred.Let_syntax in
let%bind keypair = Util.fee_payer_keypair_of_file keyfile in
let%bind zkapp_keypair = Util.snapp_keypair_of_file zkapp_keyfile in
Expand All @@ -587,6 +604,12 @@ let update_action_state ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile
; preconditions = None
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let constraint_constants = config.constraint_config.constraint_constants in
let%bind zkapp_command =
let `VK vk, `Prover prover =
Lazy.force @@ vk_and_prover ~constraint_constants
Expand All @@ -596,16 +619,15 @@ let update_action_state ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile
in
let%map () =
if debug then
gen_proof zkapp_command ~genesis_constants ~constraint_constants
~proof_level:Full
gen_proof zkapp_command ~config
~zkapp_account:
(Some (Signature_lib.Public_key.compress zkapp_keypair.public_key))
else return ()
in
zkapp_command

let update_token_symbol ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile
~token_symbol ~auth ~genesis_constants ~constraint_constants =
~token_symbol ~auth ~config_file =
let open Deferred.Let_syntax in
let%bind keypair = Util.fee_payer_keypair_of_file keyfile in
let%bind zkapp_account_keypair = Util.snapp_keypair_of_file snapp_keyfile in
Expand All @@ -627,6 +649,12 @@ let update_token_symbol ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile
; preconditions = None
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let constraint_constants = config.constraint_config.constraint_constants in
let%bind zkapp_command =
let `VK vk, `Prover prover =
Lazy.force @@ vk_and_prover ~constraint_constants
Expand All @@ -636,8 +664,7 @@ let update_token_symbol ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile
in
let%map () =
if debug then
gen_proof zkapp_command ~genesis_constants ~constraint_constants
~proof_level:Full
gen_proof zkapp_command ~config
~zkapp_account:
(Some
(Signature_lib.Public_key.compress zkapp_account_keypair.public_key)
Expand All @@ -647,7 +674,7 @@ let update_token_symbol ~debug ~keyfile ~fee ~nonce ~memo ~snapp_keyfile
zkapp_command

let update_snapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile ~snapp_update
~current_auth ~genesis_constants ~constraint_constants =
~current_auth ~config_file =
let open Deferred.Let_syntax in
let%bind keypair = Util.fee_payer_keypair_of_file keyfile in
let%bind zkapp_keypair = Util.snapp_keypair_of_file zkapp_keyfile in
Expand All @@ -668,6 +695,12 @@ let update_snapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile ~snapp_update
; preconditions = None
}
in
let%bind _, config =
let logger = Logger.create () in
Genesis_ledger_helper.Config_loader.load_config_exn ~config_file ~logger
~cli_proof_level:Full ()
in
let constraint_constants = config.constraint_config.constraint_constants in
let%bind zkapp_command =
let `VK vk, `Prover prover =
Lazy.force @@ vk_and_prover ~constraint_constants
Expand All @@ -678,8 +711,7 @@ let update_snapp ~debug ~keyfile ~fee ~nonce ~memo ~zkapp_keyfile ~snapp_update
(*Util.print_snapp_transaction zkapp_command ;*)
let%map () =
if debug then
gen_proof zkapp_command ~genesis_constants ~constraint_constants
~proof_level:Full
gen_proof zkapp_command ~config
~zkapp_account:
(Some (Signature_lib.Public_key.compress zkapp_keypair.public_key))
else return ()
Expand Down
Loading

0 comments on commit 3935601

Please sign in to comment.