Skip to content

Commit 6aa03a9

Browse files
committed
PR suggestions
1 parent d23a655 commit 6aa03a9

File tree

4 files changed

+76
-67
lines changed

4 files changed

+76
-67
lines changed

src/lib/uptime_service/uptime_service.ml

Lines changed: 25 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -200,35 +200,32 @@ let read_all_proofs_for_work_single_spec =
200200
~f_proof:Ledger_proof.Cached.read_proof_from_disk
201201
~f_witness:Transaction_witness.read_all_proofs_from_disk
202202

203-
let extract_terminal_zk_segment ~(m : (module Transaction_snark.S)) ~witness
204-
~input ~zkapp_command ~staged_ledger_hash =
203+
let extract_terminal_zk_segment ~(m : (module Transaction_snark.S))
204+
~(witness : Transaction_witness.t) ~input ~zkapp_command ~staged_ledger_hash
205+
=
205206
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
207+
let witness = Transaction_witness.read_all_proofs_from_disk witness in
213208
let%bind.Result final_segment =
214-
Work_partitioner.make_zkapp_segments ~m ~input ~witness ~zkapp_command
209+
Work_partitioner.Snark_worker_shared.extract_zkapp_segment_works ~m ~input
210+
~witness ~zkapp_command
215211
|> Result.map_error
216212
~f:
217213
Work_partitioner.Snark_worker_shared.Failed_to_generate_inputs
218214
.error_of_t
219-
|> Result.map ~f:(Mina_stdlib.Nonempty_list.find ~f:p)
215+
|> Result.map ~f:(function x ->
216+
Work_partitioner.Snark_worker_shared.Zkapp_command_inputs
217+
.read_all_proofs_from_disk x
218+
|> Mina_stdlib.Nonempty_list.find ~f:(function _, _, s ->
219+
Ledger_hash.(s.target.second_pass_ledger = staged_ledger_hash) ) )
220220
in
221221
match final_segment with
222-
| Some (Snark_work_lib.Spec.Sub_zkapp.Stable.V1.Segment _ as res) ->
223-
Ok res
222+
| Some (witness, spec, statement) ->
223+
Ok (witness, statement, spec)
224224
| _ ->
225225
Error
226226
( Error.of_string
227227
@@ sprintf "Failed to find zkapp segment with target hash %s"
228228
(Ledger_hash0.to_base58_check staged_ledger_hash) )
229-
| _ ->
230-
Error
231-
(Error.of_string "Expected last zkapp segment to be segment, not merge")
232229

233230
let send_block_and_transaction_snark ~logger ~constraint_constants ~interruptor
234231
~url ~snark_worker ~transition_frontier ~peer_id
@@ -357,22 +354,22 @@ let send_block_and_transaction_snark ~logger ~constraint_constants ~interruptor
357354
send_uptime_data ~logger ~interruptor ~submitter_keypair ~url
358355
~state_hash ~produced:false block_data
359356
| Some single_spec -> (
357+
let module T = Transaction_snark.Make (struct
358+
let signature_kind = signature_kind
359+
360+
let constraint_constants = constraint_constants
361+
362+
let proof_level = Genesis_constants.Proof_level.Full
363+
end) in
360364
let s =
361365
match single_spec with
362366
| Transition (input, witness) -> (
363367
match witness.transaction with
364368
| Command (Zkapp_command zkapp_command) ->
365-
let module T = Transaction_snark.Make (struct
366-
let signature_kind = signature_kind
367-
368-
let constraint_constants = constraint_constants
369-
370-
let proof_level = Genesis_constants.Proof_level.Full
371-
end) in
372369
let%map.Result final_segment =
373370
extract_terminal_zk_segment
374371
~m:(module T)
375-
~input ~witness ~zkapp_command ~staged_ledger_hash
372+
~witness ~input ~zkapp_command ~staged_ledger_hash
376373
in
377374
`Zk_app final_segment
378375
| Command (Signed_command _) | Fee_transfer _ | Coinbase _
@@ -384,24 +381,15 @@ let send_block_and_transaction_snark ~logger ~constraint_constants ~interruptor
384381
in
385382
let work =
386383
match s with
387-
| Ok (`Zk_app final_segment) ->
388-
let job =
389-
Snark_work_lib.With_job_meta.
390-
{ spec = final_segment
391-
; job_id = failwith "" (*TODO*)
392-
; sok_message = message
393-
}
394-
in
384+
| Ok (`Zk_app (witness, statement, spec)) ->
395385
make_interruptible
396386
@@ Uptime_snark_worker.perform_partitioned snark_worker
397-
(Snark_work_lib.Spec.Partitioned.Poly
398-
.Sub_zkapp_command
399-
job )
387+
(witness, statement, spec)
400388
| Ok (`Transaction single_spec) ->
401389
make_interruptible
402-
(Uptime_snark_worker.perform_single snark_worker
390+
@@ Uptime_snark_worker.perform_single snark_worker
403391
( message
404-
, read_all_proofs_for_work_single_spec single_spec ) )
392+
, read_all_proofs_for_work_single_spec single_spec )
405393
| Error error ->
406394
Interruptible.return (Error error)
407395
in

src/lib/uptime_service/uptime_snark_worker.ml

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ open struct
88
module Impl = Snark_worker.Impl
99
end
1010

11+
(*
12+
13+
statement:
14+
witness:
15+
spec:
16+
Ledger_proof.t Deferred.t
17+
18+
19+
*)
20+
1121
module Worker = struct
1222
module T = struct
1323
module F = Rpc_parallel.Function
@@ -28,7 +38,9 @@ module Worker = struct
2838
F.t
2939
; perform_partitioned :
3040
( 'w
31-
, Snark_work_lib.Spec.Partitioned.Stable.Latest.t
41+
, Transaction_witness.Zkapp_command_segment_witness.Stable.Latest.t
42+
* Mina_state.Snarked_ledger_state.With_sok.t
43+
* Transaction_snark.Zkapp_command_segment.Basic.t
3244
, (Ledger_proof.t * Time.Span.t) Or_error.t )
3345
F.t
3446
}
@@ -48,11 +60,28 @@ module Worker = struct
4860
let perform_single (state : Worker_state.t) (message, single_spec) =
4961
Impl.perform_single ~message state single_spec
5062

51-
let perform_partitioned (state : Worker_state.t) spec =
52-
let%map.Deferred.Or_error { Proof_carrying_data.proof; data } =
53-
Impl.perform_partitioned ~state ~spec
54-
in
55-
(proof, data)
63+
let perform_partitioned (state : Worker_state.t) (witness, statement, spec)
64+
=
65+
match state.proof_level_snark with
66+
| Full (module S) ->
67+
let witness =
68+
Transaction_witness.Zkapp_command_segment_witness
69+
.write_all_proofs_to_disk ~signature_kind:state.signature_kind
70+
~proof_cache_db:state.proof_cache_db witness
71+
in
72+
73+
Snark_worker.Impl.measure_runtime ~logger:state.logger
74+
~spec_json:
75+
( lazy
76+
( "zkapp_segment_spec"
77+
, Transaction_snark.Zkapp_command_segment.Basic.Stable.Latest
78+
.to_yojson spec ) )
79+
(fun () ->
80+
S.of_zkapp_command_segment_exn ~statement ~witness ~spec
81+
|> Deferred.map ~f:(fun a -> Result.Ok a) )
82+
| _ ->
83+
Deferred.Or_error.error_string
84+
"Unexpected prover mode in uptime snark worker"
5685

5786
let functions =
5887
let f (i, o, f) =
@@ -71,7 +100,12 @@ module Worker = struct
71100
; perform_partitioned =
72101
f
73102
( [%bin_type_class:
74-
Snark_work_lib.Spec.Partitioned.Stable.Latest.t]
103+
Transaction_witness.Zkapp_command_segment_witness.Stable
104+
.Latest
105+
.t
106+
* Mina_state.Snarked_ledger_state.With_sok.Stable.Latest.t
107+
* Transaction_snark.Zkapp_command_segment.Basic.Stable.Latest
108+
.t]
75109
, [%bin_type_class:
76110
(Ledger_proof.Stable.Latest.t * Time.Span.t) Or_error.t]
77111
, perform_partitioned )

src/lib/work_partitioner/work_partitioner.ml

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@ let schedule_from_any_pending_zkapp_command ~(partitioner : t) :
131131

132132
let convert_zkapp_command_from_selector ~partitioner ~job ~pairing
133133
unscheduled_segments =
134+
let unscheduled_segments =
135+
Snark_worker_shared.Zkapp_command_inputs.read_all_proofs_from_disk
136+
unscheduled_segments
137+
|> Mina_stdlib.Nonempty_list.map ~f:(fun (witness, spec, statement) ->
138+
Work.Spec.Sub_zkapp.Stable.Latest.Segment
139+
{ statement; witness; spec } )
140+
in
134141
let pending_zkapp_command, first_segment, first_range =
135142
Pending_zkapp_command.create_and_yield_segment ~job ~unscheduled_segments
136143
in
@@ -140,18 +147,6 @@ let convert_zkapp_command_from_selector ~partitioner ~job ~pairing
140147
register_pending_zkapp_command_job ~id:pairing ~partitioner ~range:first_range
141148
~sub_zkapp_spec:first_segment ~pending:pending_zkapp_command
142149

143-
let make_zkapp_segments ~(m : (module Transaction_snark.S))
144-
~(zkapp_command : Mina_base.Zkapp_command.t) ~witness ~input =
145-
let witness = Transaction_witness.read_all_proofs_from_disk witness in
146-
Snark_worker_shared.extract_zkapp_segment_works ~m ~input ~witness
147-
~zkapp_command
148-
|> Result.map ~f:(function unscheduled_segments ->
149-
Snark_worker_shared.Zkapp_command_inputs.read_all_proofs_from_disk
150-
unscheduled_segments
151-
|> Mina_stdlib.Nonempty_list.map ~f:(fun (witness, spec, statement) ->
152-
Work.Spec.Sub_zkapp.Stable.Latest.Segment
153-
{ statement; witness; spec } ) )
154-
155150
let convert_single_work_from_selector ~(partitioner : t)
156151
~(single_spec : Work.Spec.Single.t) ~sok_message ~pairing :
157152
(Work.Spec.Partitioned.Stable.Latest.t, _) Result.t =
@@ -165,8 +160,9 @@ let convert_single_work_from_selector ~(partitioner : t)
165160
(* TODO: we have read from disk followed by write to disk in shared
166161
function followed by read from disk again. Should consider refactor
167162
this. *)
168-
make_zkapp_segments ~m:partitioner.transaction_snark ~input ~witness
169-
~zkapp_command
163+
let witness = Transaction_witness.read_all_proofs_from_disk witness in
164+
Snark_worker_shared.extract_zkapp_segment_works
165+
~m:partitioner.transaction_snark ~input ~witness ~zkapp_command
170166
|> Result.map
171167
~f:
172168
(convert_zkapp_command_from_selector ~partitioner ~job ~pairing)

src/lib/work_partitioner/work_partitioner.mli

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,3 @@ val submit_partitioned_work :
7676
result:Snark_work_lib.Result.Partitioned.Stable.V1.t
7777
-> partitioner:t
7878
-> submit_result
79-
80-
val make_zkapp_segments :
81-
m:(module Transaction_snark.S)
82-
-> zkapp_command:Mina_base.Zkapp_command.t
83-
-> witness:Transaction_witness.t
84-
-> input:Mina_state.Snarked_ledger_state.t
85-
-> ( Snark_work_lib.Spec.Sub_zkapp.Stable.V1.t Mina_stdlib.Nonempty_list.t
86-
, Snark_worker_shared.Failed_to_generate_inputs.t )
87-
result

0 commit comments

Comments
 (0)