Skip to content

Commit 2462a0a

Browse files
committed
TXN Snark: show why sok message mismatch
1 parent 9e7d02a commit 2462a0a

File tree

1 file changed

+28
-11
lines changed

1 file changed

+28
-11
lines changed

src/lib/transaction_snark/transaction_snark.ml

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3536,17 +3536,34 @@ module Make_str (A : Wire_types.Concrete) = struct
35363536
init_stack pending_coinbase_stack_state handler
35373537

35383538
let verify_impl ~f ts =
3539-
if
3540-
List.for_all ts ~f:(fun ((p : Stable.Latest.t), m) ->
3541-
Sok_message.Digest.equal (Sok_message.digest m) p.data.sok_digest )
3542-
then
3543-
f
3544-
(List.map ts ~f:(fun ({ Proof_carrying_data.data; proof }, _) ->
3545-
(data, proof) ) )
3546-
else
3547-
Async.return
3548-
(Or_error.error_string
3549-
"Transaction_snark.verify: Mismatched sok_message" )
3539+
let rec error_msg_fold cur_err_msg ts =
3540+
match ts with
3541+
| [] ->
3542+
cur_err_msg
3543+
| ((p : Stable.Latest.t), m) :: rest ->
3544+
if Sok_message.Digest.equal (Sok_message.digest m) p.data.sok_digest
3545+
then error_msg_fold cur_err_msg rest
3546+
else
3547+
let new_err_msg =
3548+
Printf.sprintf
3549+
"%s\n\
3550+
Mismatched sok digest, expected sok digest: %s, got sok \
3551+
message: %s"
3552+
cur_err_msg
3553+
( Sok_message.Digest.Stable.Latest.to_yojson p.data.sok_digest
3554+
|> Yojson.Safe.to_string )
3555+
(Sok_message.Stable.Latest.to_yojson m |> Yojson.Safe.to_string)
3556+
in
3557+
error_msg_fold new_err_msg ts
3558+
in
3559+
match error_msg_fold "" ts with
3560+
| "" ->
3561+
f
3562+
(List.map ts ~f:(fun ({ Proof_carrying_data.data; proof }, _) ->
3563+
(data, proof) ) )
3564+
| error_msg ->
3565+
Async.return
3566+
(Or_error.error_string ("Transaction_snark.verify: " ^ error_msg))
35503567

35513568
let verify ~key =
35523569
verify_impl

0 commit comments

Comments
 (0)