File tree Expand file tree Collapse file tree 1 file changed +28
-11
lines changed
src/lib/transaction_snark Expand file tree Collapse file tree 1 file changed +28
-11
lines changed Original file line number Diff line number Diff line change @@ -3536,17 +3536,34 @@ module Make_str (A : Wire_types.Concrete) = struct
3536
3536
init_stack pending_coinbase_stack_state handler
3537
3537
3538
3538
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))
3550
3567
3551
3568
let verify ~key =
3552
3569
verify_impl
You can’t perform that action at this time.
0 commit comments