@@ -202,26 +202,30 @@ let read_all_proofs_for_work_single_spec =
202202
203203let extract_terminal_zk_segment ~(m : (module Transaction_snark.S) ) ~witness
204204 ~input ~zkapp_command ~staged_ledger_hash =
205+ let staged_ledger_hash = Staged_ledger_hash. ledger_hash staged_ledger_hash in
206+ let p x =
207+ match x with
208+ | Snark_work_lib.Spec.Sub_zkapp.Stable.V1. Segment s ->
209+ Ledger_hash. (s.statement.target.second_pass_ledger = staged_ledger_hash)
210+ | _ ->
211+ false
212+ in
205213 let % bind.Result final_segment =
206214 Work_partitioner. make_zkapp_segments ~m ~input ~witness ~zkapp_command
207215 |> Result. map_error
208216 ~f:
209217 Work_partitioner.Snark_worker_shared. Failed_to_generate_inputs
210218 .error_of_t
211- |> Result. map ~f: Mina_stdlib.Nonempty_list. last
219+ |> Result. map ~f: ( Mina_stdlib.Nonempty_list. find ~f: p)
212220 in
213221 match final_segment with
214- | Snark_work_lib.Spec.Sub_zkapp.Stable.V1. Segment s as res ->
215- let expected = Staged_ledger_hash. ledger_hash staged_ledger_hash in
216- if Ledger_hash. (s.statement.target.second_pass_ledger = expected) then
217- Ok res
218- else
219- Error
220- ( Error. of_string
221- @@ sprintf " Mismatch segment target hash, expected %s, got %s"
222- (Ledger_hash0. to_base58_check expected)
223- (Ledger_hash0. to_base58_check
224- s.statement.target.second_pass_ledger ) )
222+ | Some (Snark_work_lib.Spec.Sub_zkapp.Stable.V1. Segment _ as res ) ->
223+ Ok res
224+ | _ ->
225+ Error
226+ ( Error. of_string
227+ @@ sprintf " Failed to find zkapp segment with target hash %s"
228+ (Ledger_hash0. to_base58_check staged_ledger_hash) )
225229 | _ ->
226230 Error
227231 (Error. of_string " Expected last zkapp segment to be segment, not merge" )
0 commit comments