Skip to content

Commit 9e0cb54

Browse files
authored
Merge pull request #17891 from MinaProtocol/georgeee/sigkind-in-mina_lib
Introduce sigkind in mina_lib
2 parents b3d145d + 0a7b717 commit 9e0cb54

File tree

8 files changed

+51
-29
lines changed

8 files changed

+51
-29
lines changed

src/lib/mina_graphql/mina_graphql.ml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ module Mutations = struct
397397
, string )
398398
result
399399
Io.t =
400-
let signature_kind = Mina_signature_kind.t_DEPRECATED in
400+
let signature_kind = Mina_lib.signature_kind mina in
401401
(* instead of adding the zkapp_command to the transaction pool, as we would for an actual zkapp,
402402
apply the zkapp using an ephemeral ledger
403403
*)
@@ -1172,7 +1172,7 @@ module Mutations = struct
11721172
~memo:(Signed_command_memo.create_from_string_exn memo)
11731173
~body
11741174
in
1175-
let signature_kind = Mina_signature_kind.t_DEPRECATED in
1175+
let signature_kind = Mina_lib.signature_kind mina in
11761176
let signature =
11771177
Ok (Signed_command.sign_payload ~signature_kind sender payload)
11781178
in
@@ -1656,9 +1656,8 @@ module Queries = struct
16561656
open Schema
16571657

16581658
(* helper for pooledUserCommands, pooledZkappCommands *)
1659-
let get_commands ~proof_cache_db ~resource_pool ~pk_opt ~hashes_opt ~txns_opt
1660-
=
1661-
let signature_kind = Mina_signature_kind.t_DEPRECATED in
1659+
let get_commands ~signature_kind ~proof_cache_db ~resource_pool ~pk_opt
1660+
~hashes_opt ~txns_opt =
16621661
match (pk_opt, hashes_opt, txns_opt) with
16631662
| None, None, None ->
16641663
Network_pool.Transaction_pool.Resource_pool.get_all resource_pool
@@ -1766,6 +1765,7 @@ module Queries = struct
17661765
in
17671766
let cmds =
17681767
get_commands
1768+
~signature_kind:(Mina_lib.signature_kind mina)
17691769
~proof_cache_db:(Mina_lib.proof_cache_db mina)
17701770
~resource_pool ~pk_opt ~hashes_opt ~txns_opt
17711771
in
@@ -1806,6 +1806,7 @@ module Queries = struct
18061806
in
18071807
let cmds =
18081808
get_commands
1809+
~signature_kind:(Mina_lib.signature_kind mina)
18091810
~proof_cache_db:(Mina_lib.proof_cache_db mina)
18101811
~resource_pool ~pk_opt ~hashes_opt ~txns_opt
18111812
in
@@ -2538,7 +2539,7 @@ module Queries = struct
25382539
(from, to_, amount, fee, valid_until, memo, nonce_opt)
25392540
signature ->
25402541
let open Deferred.Result.Let_syntax in
2541-
let signature_kind = Mina_signature_kind.t_DEPRECATED in
2542+
let signature_kind = Mina_lib.signature_kind mina in
25422543
let genesis_constants =
25432544
(Mina_lib.config mina).precomputed_values.genesis_constants
25442545
in
@@ -2741,8 +2742,8 @@ module Queries = struct
27412742
~doc:"The signature kind that this daemon instance is using"
27422743
~typ:(non_null string)
27432744
~args:Arg.[]
2744-
~resolve:(fun _ () ->
2745-
match Mina_signature_kind.t_DEPRECATED with
2745+
~resolve:(fun { ctx = mina; _ } () ->
2746+
match Mina_lib.signature_kind mina with
27462747
| Mainnet ->
27472748
"mainnet"
27482749
| Testnet ->

src/lib/mina_lib/mina_lib.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ type t =
122122
; vrf_evaluation_state : Block_producer.Vrf_evaluation_state.t
123123
; commit_id : string
124124
; proof_cache_db : Proof_cache_tag.cache_db
125+
; signature_kind : Mina_signature_kind.t
125126
}
126127
[@@deriving fields]
127128

@@ -1840,7 +1841,7 @@ let create ~commit_id ?wallets (config : Config.t) =
18401841
~proof_level:config.precomputed_values.proof_level
18411842
~pids:config.pids ~conf_dir:(Some config.conf_dir)
18421843
~blockchain_verification_key
1843-
~transaction_verification_key ()
1844+
~transaction_verification_key ~signature_kind ()
18441845
in
18451846
let%map () = set_itn_data (module Verifier) verifier in
18461847
verifier ) )
@@ -2579,6 +2580,7 @@ let create ~commit_id ?wallets (config : Config.t) =
25792580
; vrf_evaluation_state = Block_producer.Vrf_evaluation_state.create ()
25802581
; commit_id
25812582
; proof_cache_db
2583+
; signature_kind
25822584
} ) )
25832585

25842586
let net { components = { net; _ }; _ } = net

src/lib/mina_lib/mina_lib.mli

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,3 +332,5 @@ end
332332
val zkapp_cmd_limit : t -> int option ref
333333

334334
val proof_cache_db : t -> Proof_cache_tag.cache_db
335+
336+
val signature_kind : t -> Mina_signature_kind.t

src/lib/verifier/common.ml

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ let invalid_to_error (invalid : invalid) : Error.t =
3434
| `Invalid_proof err ->
3535
Error.tag ~tag:"Invalid_proof" err
3636

37-
let check_signed_command c =
38-
let signature_kind = Mina_signature_kind.t_DEPRECATED in
37+
let check_signed_command ~signature_kind c =
3938
if not (Signed_command.check_valid_keys c) then
4039
Result.Error (`Invalid_keys (Signed_command.public_keys c))
4140
else
@@ -79,9 +78,8 @@ let collect_vk_assumptions zkapp_command =
7978
.to_zkapp_command_with_hashes_list
8079
|> List.fold_result ~f:collect_vk_assumption' ~init:[]
8180

82-
let check_signatures_of_zkapp_command (zkapp_command : _ Zkapp_command.Poly.t) :
83-
(unit, invalid) Result.t =
84-
let signature_kind = Mina_signature_kind.t_DEPRECATED in
81+
let check_signatures_of_zkapp_command ~signature_kind
82+
(zkapp_command : _ Zkapp_command.Poly.t) : (unit, invalid) Result.t =
8583
let account_updates_hash =
8684
Zkapp_command.Call_forest.hash
8785
zkapp_command.Zkapp_command.Poly.account_updates
@@ -131,17 +129,22 @@ let check_signatures_of_zkapp_command (zkapp_command : _ Zkapp_command.Poly.t) :
131129
(`Mismatched_authorization_kind
132130
[ Account_id.public_key @@ Account_update.account_id p ] ) )
133131

134-
let check : _ With_status.t -> ([ `Assuming of _ list ], invalid) Result.t =
135-
function
132+
let check ~signature_kind (cmd : _ With_status.t) :
133+
([ `Assuming of _ list ], invalid) Result.t =
134+
match cmd with
136135
| { With_status.data = User_command.Signed_command c; status = _ } ->
137-
check_signed_command c
136+
check_signed_command ~signature_kind c
138137
| { With_status.data = Zkapp_command verifiable; status = Failed _ } ->
139138
let command = Zkapp_command.of_verifiable verifiable in
140-
let%map.Result () = check_signatures_of_zkapp_command command in
139+
let%map.Result () =
140+
check_signatures_of_zkapp_command ~signature_kind command
141+
in
141142
`Assuming []
142143
| { With_status.data = Zkapp_command verifiable; status = Applied } ->
143144
let command = Zkapp_command.of_verifiable verifiable in
144-
let%bind.Result () = check_signatures_of_zkapp_command command in
145+
let%bind.Result () =
146+
check_signatures_of_zkapp_command ~signature_kind command
147+
in
145148
let%map.Result assuming = collect_vk_assumptions verifiable in
146149
`Assuming assuming
147150

src/lib/verifier/dummy.ml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type t =
1212
; verify_transaction_snarks :
1313
(Ledger_proof.t * Mina_base.Sok_message.t) list
1414
-> unit Or_error.t Or_error.t Deferred.t
15+
; signature_kind : Mina_signature_kind.t
1516
}
1617

1718
type invalid = Common.invalid [@@deriving bin_io_unversioned, to_yojson]
@@ -22,7 +23,7 @@ type ledger_proof = Ledger_proof.t
2223

2324
let create ~logger:_ ?enable_internal_tracing:_ ?internal_trace_filename:_
2425
~proof_level ~pids:_ ~conf_dir:_ ~commit_id:_ ~blockchain_verification_key
25-
~transaction_verification_key () =
26+
~transaction_verification_key ~signature_kind () =
2627
let verify_blockchain_snarks chains =
2728
match proof_level with
2829
| Genesis_constants.Proof_level.Full ->
@@ -72,6 +73,7 @@ let create ~logger:_ ?enable_internal_tracing:_ ?internal_trace_filename:_
7273
; blockchain_verification_key
7374
; transaction_verification_key
7475
; verify_transaction_snarks
76+
; signature_kind
7577
}
7678

7779
let verify_blockchain_snarks { verify_blockchain_snarks; _ } chains =
@@ -80,7 +82,7 @@ let verify_blockchain_snarks { verify_blockchain_snarks; _ } chains =
8082
(* N.B.: Valid_assuming is never returned, in fact; we assert a return type
8183
containing Valid_assuming to match the expected type
8284
*)
83-
let verify_commands { proof_level; _ }
85+
let verify_commands { proof_level; signature_kind; _ }
8486
(cs : User_command.Verifiable.t With_status.t list) :
8587
[ `Valid of Mina_base.User_command.Valid.t
8688
| `Valid_assuming of
@@ -108,15 +110,19 @@ let verify_commands { proof_level; _ }
108110
| Ok (`Assuming _) ->
109111
valid cmd
110112
in
111-
let f cmd = convert_check_res cmd (Common.check cmd) in
113+
let f cmd = convert_check_res cmd (Common.check ~signature_kind cmd) in
112114
List.map cs ~f |> Deferred.Or_error.return
113115
| Full ->
114116
let read_proof (vk, stmt, proof) =
115117
(vk, stmt, Proof_cache_tag.read_proof_from_disk proof)
116118
in
117119
let read_proofs (`Assuming ls) = `Assuming (List.map ~f:read_proof ls) in
118120
let results =
119-
List.map cs ~f:(Fn.compose (Result.map ~f:read_proofs) Common.check)
121+
List.map cs
122+
~f:
123+
(Fn.compose
124+
(Result.map ~f:read_proofs)
125+
(Common.check ~signature_kind) )
120126
in
121127
let to_verify =
122128
List.concat_map

src/lib/verifier/prod.ml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ let invalid_to_error = Common.invalid_to_error
1313
type ledger_proof = Ledger_proof.t
1414

1515
module Processor = struct
16-
let verify_commands
16+
let verify_commands ~signature_kind
1717
(cs : User_command.Verifiable.Serializable.t With_status.t list) =
18-
let results = List.map cs ~f:Common.check in
18+
let results = List.map cs ~f:(Common.check ~signature_kind) in
1919
let to_verify =
2020
List.concat_map
2121
~f:(function Ok (`Assuming xs) -> xs | Error _ -> [])
@@ -72,6 +72,7 @@ module Worker_state = struct
7272
; commit_id : string
7373
; blockchain_verification_key : Pickles.Verification_key.Stable.Latest.t
7474
; transaction_verification_key : Pickles.Verification_key.Stable.Latest.t
75+
; signature_kind : Mina_signature_kind.t
7576
}
7677
[@@deriving bin_io_unversioned]
7778

@@ -83,6 +84,7 @@ module Worker_state = struct
8384
; commit_id
8485
; blockchain_verification_key
8586
; transaction_verification_key
87+
; signature_kind
8688
; _
8789
} : t Deferred.t =
8890
match proof_level with
@@ -96,7 +98,7 @@ module Worker_state = struct
9698
Internal_tracing.Context_call.with_call_id
9799
@@ fun () ->
98100
[%log internal] "Verifier_verify_commands" ;
99-
let%map result = Processor.verify_commands cs in
101+
let%map result = Processor.verify_commands ~signature_kind cs in
100102
[%log internal] "Verifier_verify_commands_done" ;
101103
result
102104

@@ -157,7 +159,8 @@ module Worker_state = struct
157159
Deferred.return
158160
@@ ( module struct
159161
let verify_commands tagged_commands =
160-
List.map tagged_commands ~f:(Fn.compose f Common.check)
162+
List.map tagged_commands
163+
~f:(Fn.compose f (Common.check ~signature_kind))
161164
|> Deferred.return
162165

163166
let verify_blockchain_snarks _ = Deferred.return (Ok ())
@@ -292,6 +295,7 @@ module Worker = struct
292295
; commit_id
293296
; blockchain_verification_key
294297
; transaction_verification_key
298+
; signature_kind
295299
} =
296300
if Option.is_some conf_dir then (
297301
let max_size = 256 * 1024 * 512 in
@@ -327,6 +331,7 @@ module Worker = struct
327331
; commit_id
328332
; blockchain_verification_key
329333
; transaction_verification_key
334+
; signature_kind
330335
}
331336

332337
let init_connection_state ~connection:_ ~worker_state:_ () = Deferred.unit
@@ -347,7 +352,7 @@ type t = { worker : worker Ivar.t ref; logger : Logger.t }
347352
(* TODO: investigate why conf_dir wasn't being used *)
348353
let create ~logger ?(enable_internal_tracing = false) ?internal_trace_filename
349354
~proof_level ~pids ~conf_dir ~commit_id ~blockchain_verification_key
350-
~transaction_verification_key () : t Deferred.t =
355+
~transaction_verification_key ~signature_kind () : t Deferred.t =
351356
let on_failure err =
352357
[%log error] "Verifier process failed with error $err"
353358
~metadata:[ ("err", Error_json.error_to_yojson err) ] ;
@@ -387,6 +392,7 @@ let create ~logger ?(enable_internal_tracing = false) ?internal_trace_filename
387392
; commit_id
388393
; blockchain_verification_key
389394
; transaction_verification_key
395+
; signature_kind
390396
} )
391397
|> Deferred.Result.map_error ~f:Error.of_exn
392398
in

src/lib/verifier/verifier.ml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,12 @@ module For_tests = struct
4545
?(pids = Child_processes.Termination.create_pid_table ())
4646
?(conf_dir = None) ?(commit_id = "not specified for unit tests") () =
4747
let open Async.Deferred.Let_syntax in
48+
let signature_kind = Mina_signature_kind.Testnet in
4849
let%bind ( `Blockchain blockchain_verification_key
4950
, `Transaction transaction_verification_key ) =
5051
get_verification_keys_eagerly ~constraint_constants ~proof_level
5152
in
5253
create ~logger ?enable_internal_tracing ?internal_trace_filename
5354
~proof_level ~pids ~conf_dir ~commit_id ~blockchain_verification_key
54-
~transaction_verification_key ()
55+
~transaction_verification_key ~signature_kind ()
5556
end

src/lib/verifier/verifier_intf.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ module type S = sig
6767
-> commit_id:string
6868
-> blockchain_verification_key:Pickles.Verification_key.t
6969
-> transaction_verification_key:Pickles.Verification_key.t
70+
-> signature_kind:Mina_signature_kind.t
7071
-> unit
7172
-> t Deferred.t
7273
end

0 commit comments

Comments
 (0)