• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

MinaProtocol / mina / 2863

05 Nov 2024 06:20PM UTC coverage: 30.754% (-16.6%) from 47.311%
2863

push

buildkite

web-flow
Merge pull request #16296 from MinaProtocol/dkijania/more_multi_jobs

more multi jobs in CI

20276 of 65930 relevant lines covered (30.75%)

8631.7 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

33.33
/src/lib/pickles/wrap_wire_proof.ml
1
open Core_kernel
10✔
2
open Pickles_types
3
module Columns = Nat.N15
4
module Columns_vec = Vector.Vector_15
5
module Coefficients = Nat.N15
6
module Coefficients_vec = Vector.Vector_15
7
module Quotient_polynomial = Nat.N7
8
module Quotient_polynomial_vec = Vector.Vector_7
9
module Permuts_minus_1 = Nat.N6
10
module Permuts_minus_1_vec = Vector.Vector_6
11

12
[@@@warning "-4"]
13

14
module Commitments = struct
15
  [%%versioned
16
  module Stable = struct
17
    module V1 = struct
18
      type t =
20✔
19
            Mina_wire_types.Pickles.Concrete_.Wrap_wire_proof.Commitments.V1.t =
20
        { w_comm :
×
21
            (Backend.Tick.Field.Stable.V1.t * Backend.Tick.Field.Stable.V1.t)
×
22
            Columns_vec.Stable.V1.t
×
23
        ; z_comm :
×
24
            Backend.Tick.Field.Stable.V1.t * Backend.Tick.Field.Stable.V1.t
×
25
        ; t_comm :
×
26
            (Backend.Tick.Field.Stable.V1.t * Backend.Tick.Field.Stable.V1.t)
×
27
            Quotient_polynomial_vec.Stable.V1.t
×
28
        }
29
      [@@deriving compare, sexp, yojson, hash, equal]
50✔
30

31
      [@@@warning "+4"]
32

33
      let to_latest = Fn.id
34
    end
35
  end]
36

37
  let to_kimchi ({ w_comm; z_comm; t_comm } : t) :
38
      Backend.Tock.Curve.Affine.t Plonk_types.Messages.t =
39
    { w_comm = Vector.map ~f:(fun x -> [| x |]) w_comm
×
40
    ; z_comm = [| z_comm |]
41
    ; t_comm = Array.map ~f:(fun x -> x) (Vector.to_array t_comm)
×
42
    ; lookup = None
43
    }
44

45
  let of_kimchi
46
      ({ w_comm; z_comm; t_comm; lookup = _ } :
47
        Backend.Tock.Curve.Affine.t Plonk_types.Messages.t ) : t =
48
    { w_comm = Vector.map ~f:(fun x -> x.(0)) w_comm
11✔
49
    ; z_comm = z_comm.(0)
50
    ; t_comm = Vector.of_array_and_length_exn t_comm Quotient_polynomial.n
11✔
51
    }
52
end
53

54
[@@@warning "-4"]
55

56
module Evaluations = struct
57
  [%%versioned
58
  module Stable = struct
59
    module V1 = struct
60
      type t =
20✔
61
            Mina_wire_types.Pickles.Concrete_.Wrap_wire_proof.Evaluations.V1.t =
62
        { w :
315✔
63
            (Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t)
×
64
            Columns_vec.Stable.V1.t
×
65
        ; coefficients :
×
66
            (Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t)
×
67
            Columns_vec.Stable.V1.t
×
68
        ; z : Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t
×
69
        ; s :
315✔
70
            (Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t)
×
71
            Permuts_minus_1_vec.Stable.V1.t
×
72
        ; generic_selector :
×
73
            Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t
×
74
        ; poseidon_selector :
×
75
            Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t
×
76
        ; complete_add_selector :
×
77
            Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t
×
78
        ; mul_selector :
×
79
            Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t
×
80
        ; emul_selector :
×
81
            Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t
×
82
        ; endomul_scalar_selector :
×
83
            Backend.Tock.Field.Stable.V1.t * Backend.Tock.Field.Stable.V1.t
×
84
        }
85
      [@@deriving compare, sexp, yojson, hash, equal]
50✔
86

87
      [@@@warning "+4"]
88

89
      let to_latest = Fn.id
90
    end
91
  end]
92

93
  let to_kimchi
94
      ({ w
95
       ; coefficients
96
       ; z
97
       ; s
98
       ; generic_selector
99
       ; poseidon_selector
100
       ; complete_add_selector
101
       ; mul_selector
102
       ; emul_selector
103
       ; endomul_scalar_selector
104
       } :
105
        t ) :
106
      (Backend.Tock.Field.t array * Backend.Tock.Field.t array)
107
      Plonk_types.Evals.t =
108
    let conv (x, y) = ([| x |], [| y |]) in
×
109
    { w = Vector.map ~f:conv w
×
110
    ; coefficients = Vector.map ~f:conv coefficients
×
111
    ; z = conv z
×
112
    ; s = Vector.map ~f:conv s
×
113
    ; generic_selector = conv generic_selector
×
114
    ; poseidon_selector = conv poseidon_selector
×
115
    ; complete_add_selector = conv complete_add_selector
×
116
    ; mul_selector = conv mul_selector
×
117
    ; emul_selector = conv emul_selector
×
118
    ; endomul_scalar_selector = conv endomul_scalar_selector
×
119
    ; range_check0_selector = None
120
    ; range_check1_selector = None
121
    ; foreign_field_add_selector = None
122
    ; foreign_field_mul_selector = None
123
    ; xor_selector = None
124
    ; rot_selector = None
125
    ; lookup_aggregation = None
126
    ; lookup_table = None
127
    ; lookup_sorted = [ None; None; None; None; None ]
128
    ; runtime_lookup_table = None
129
    ; runtime_lookup_table_selector = None
130
    ; xor_lookup_selector = None
131
    ; lookup_gate_lookup_selector = None
132
    ; range_check_lookup_selector = None
133
    ; foreign_field_mul_lookup_selector = None
134
    }
135

136
  let of_kimchi
137
      ({ w
138
       ; coefficients
139
       ; z
140
       ; s
141
       ; generic_selector
142
       ; poseidon_selector
143
       ; complete_add_selector
144
       ; mul_selector
145
       ; emul_selector
146
       ; endomul_scalar_selector
147
       ; range_check0_selector = _
148
       ; range_check1_selector = _
149
       ; foreign_field_add_selector = _
150
       ; foreign_field_mul_selector = _
151
       ; xor_selector = _
152
       ; rot_selector = _
153
       ; lookup_aggregation = _
154
       ; lookup_table = _
155
       ; lookup_sorted = _
156
       ; runtime_lookup_table = _
157
       ; runtime_lookup_table_selector = _
158
       ; xor_lookup_selector = _
159
       ; lookup_gate_lookup_selector = _
160
       ; range_check_lookup_selector = _
161
       ; foreign_field_mul_lookup_selector = _
162
       } :
163
        (Backend.Tock.Field.t array * Backend.Tock.Field.t array)
164
        Plonk_types.Evals.t ) : t =
165
    let conv (x, y) = (x.(0), y.(0)) in
11✔
166
    { w = Vector.map ~f:conv w
11✔
167
    ; coefficients = Vector.map ~f:conv coefficients
11✔
168
    ; z = conv z
11✔
169
    ; s = Vector.map ~f:conv s
11✔
170
    ; generic_selector = conv generic_selector
11✔
171
    ; poseidon_selector = conv poseidon_selector
11✔
172
    ; complete_add_selector = conv complete_add_selector
11✔
173
    ; mul_selector = conv mul_selector
11✔
174
    ; emul_selector = conv emul_selector
11✔
175
    ; endomul_scalar_selector = conv endomul_scalar_selector
11✔
176
    }
177
end
178

179
[@@@warning "-4"]
180

181
[%%versioned
182
module Stable = struct
183
  module V1 = struct
184
    type t = Mina_wire_types.Pickles.Concrete_.Wrap_wire_proof.V1.t =
20✔
185
      { commitments : Commitments.Stable.V1.t
×
186
      ; evaluations : Evaluations.Stable.V1.t
×
187
      ; ft_eval1 : Backend.Tock.Field.Stable.V1.t
×
188
      ; bulletproof :
×
189
          ( Backend.Tick.Field.Stable.V1.t * Backend.Tick.Field.Stable.V1.t
×
190
          , Backend.Tock.Field.Stable.V1.t )
×
191
          Plonk_types.Openings.Bulletproof.Stable.V1.t
×
192
            (* TODO-URGENT: Validate bulletproof length on the rust side *)
193
      }
194
    [@@deriving compare, sexp, yojson, hash, equal]
50✔
195

196
    [@@@warning "+4"]
197

198
    let to_latest = Fn.id
199
  end
200
end]
201

202
let to_kimchi_proof ({ commitments; bulletproof; evaluations; ft_eval1 } : t) :
203
    Backend.Tock.Proof.t =
204
  { messages = Commitments.to_kimchi commitments
×
205
  ; openings =
206
      { proof = bulletproof
207
      ; evals = Evaluations.to_kimchi evaluations
×
208
      ; ft_eval1
209
      }
210
  }
211

212
let of_kimchi_proof
213
    ({ messages; openings = { proof; evals; ft_eval1 } } : Backend.Tock.Proof.t)
214
    : t =
215
  { commitments = Commitments.of_kimchi messages
11✔
216
  ; bulletproof = proof
217
  ; evaluations = Evaluations.of_kimchi evals
11✔
218
  ; ft_eval1
219
  }
20✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc