@@ -425,9 +425,17 @@ module Snark_pool = struct
425425
426426 type t = (proof_envelope , partial , unit ) batcher [@@ deriving sexp ]
427427
428- let verify (t : t ) (p : proof_envelope ) : bool Deferred.Or_error.t =
429- let open Deferred.Or_error.Let_syntax in
430- match % map verify t p with Ok () -> true | Error _ -> false
428+ let verify (t : t ) (p : proof_envelope ) :
429+ (unit , [> `Crash of Error. t | `Invalid of Verifier. invalid ]) result
430+ Deferred. t =
431+ let % map.Deferred verification_result = verify t p in
432+ match verification_result with
433+ | Ok (Ok () ) ->
434+ Ok ()
435+ | Ok (Error invalid ) ->
436+ Error (`Invalid invalid)
437+ | Error e ->
438+ Error (`Crash e)
431439
432440 let create ~proof_cache_db ~logger verifier : t =
433441 create
@@ -474,13 +482,16 @@ module Snark_pool = struct
474482 end
475483
476484 let verify' (t : t ) ps =
477- let open Deferred.Or_error. Let_syntax in
485+ let open Deferred.Let_syntax in
478486 let % map invalid =
479- Deferred.Or_error.List. filter_map ps ~f: (fun p ->
480- match % map verify t p with true -> None | false -> Some p )
487+ Deferred.List. filter_map ps ~f: (fun p ->
488+ match % map verify t p with
489+ | Ok () ->
490+ None
491+ | Error e ->
492+ Some (Work_key. of_proof_envelope p, e) )
481493 in
482- `Invalid
483- (Work_key.Set. of_list (List. map invalid ~f: Work_key. of_proof_envelope))
494+ `Invalid (Work_key.Map. of_alist_exn invalid)
484495
485496 let % test_module " With valid and invalid proofs" =
486497 ( module struct
@@ -539,9 +550,11 @@ module Snark_pool = struct
539550 let run_test proof_lists =
540551 let batcher = create ~proof_cache_db ~logger verifier in
541552 Deferred.List. iter proof_lists ~f: (fun (invalid_proofs , proof_list ) ->
542- let % map r = verify' batcher proof_list in
543- let (`Invalid ps) = Or_error. ok_exn r in
544- assert (Work_key.Set. equal ps invalid_proofs) )
553+ let % map (`Invalid pfs_and_reasons) = verify' batcher proof_list in
554+ assert (
555+ Work_key.Set. equal
556+ (Work_key.Map. key_set pfs_and_reasons)
557+ invalid_proofs ) )
545558
546559 let gen ~(valid_count : [ `Any | `Count of int ] )
547560 ~(invalid_count : [ `Any | `Count of int ] ) =
0 commit comments