@odatano/contract-m402-vault 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,263 +1,86 @@
1
1
  {
2
- "version": { "major": 2, "minor": 0 },
2
+ "version": { "major": 3, "minor": 1 },
3
3
  "do_communications_commitment": true,
4
- "num_inputs": 3,
4
+ "inputs": [
5
+ { "name": "%serviceId.0", "type": "Scalar<BLS12-381>" },
6
+ { "name": "%serviceId.1", "type": "Scalar<BLS12-381>" },
7
+ { "name": "%amount.2", "type": "Scalar<BLS12-381>" }
8
+ ],
9
+ "outputs": [
10
+ ],
5
11
  "instructions": [
6
- { "op": "constrain_bits", "var": 0, "bits": 8 },
7
- { "op": "constrain_bits", "var": 1, "bits": 248 },
8
- { "op": "constrain_bits", "var": 2, "bits": 64 },
9
- { "op": "load_imm", "imm": "01" },
10
- { "op": "load_imm", "imm": "00" },
11
- { "op": "less_than", "a": 4, "b": 2, "bits": 64 },
12
- { "op": "assert", "cond": 5 },
13
- { "op": "load_imm", "imm": "30" },
14
- { "op": "declare_pub_input", "var": 6 },
15
- { "op": "pi_skip", "guard": 3, "count": 1 },
16
- { "op": "load_imm", "imm": "50" },
17
- { "op": "declare_pub_input", "var": 7 },
18
- { "op": "declare_pub_input", "var": 3 },
19
- { "op": "declare_pub_input", "var": 3 },
20
- { "op": "declare_pub_input", "var": 3 },
21
- { "op": "pi_skip", "guard": 3, "count": 4 },
22
- { "op": "load_imm", "imm": "10" },
23
- { "op": "load_imm", "imm": "20" },
24
- { "op": "declare_pub_input", "var": 8 },
25
- { "op": "declare_pub_input", "var": 3 },
26
- { "op": "declare_pub_input", "var": 3 },
27
- { "op": "declare_pub_input", "var": 9 },
28
- { "op": "declare_pub_input", "var": 0 },
29
- { "op": "declare_pub_input", "var": 1 },
30
- { "op": "pi_skip", "guard": 3, "count": 6 },
31
- { "op": "load_imm", "imm": "18" },
32
- { "op": "declare_pub_input", "var": 10 },
33
- { "op": "pi_skip", "guard": 3, "count": 1 },
34
- { "op": "public_input", "guard": null },
35
- { "op": "load_imm", "imm": "0D" },
36
- { "op": "declare_pub_input", "var": 12 },
37
- { "op": "declare_pub_input", "var": 3 },
38
- { "op": "declare_pub_input", "var": 3 },
39
- { "op": "declare_pub_input", "var": 11 },
40
- { "op": "pi_skip", "guard": 3, "count": 4 },
41
- { "op": "assert", "cond": 11 },
42
- { "op": "declare_pub_input", "var": 6 },
43
- { "op": "pi_skip", "guard": 3, "count": 1 },
44
- { "op": "declare_pub_input", "var": 7 },
45
- { "op": "declare_pub_input", "var": 3 },
46
- { "op": "declare_pub_input", "var": 3 },
47
- { "op": "declare_pub_input", "var": 3 },
48
- { "op": "pi_skip", "guard": 3, "count": 4 },
49
- { "op": "declare_pub_input", "var": 7 },
50
- { "op": "declare_pub_input", "var": 3 },
51
- { "op": "declare_pub_input", "var": 9 },
52
- { "op": "declare_pub_input", "var": 0 },
53
- { "op": "declare_pub_input", "var": 1 },
54
- { "op": "pi_skip", "guard": 3, "count": 5 },
55
- { "op": "public_input", "guard": null },
56
- { "op": "public_input", "guard": null },
57
- { "op": "load_imm", "imm": "0C" },
58
- { "op": "declare_pub_input", "var": 15 },
59
- { "op": "declare_pub_input", "var": 3 },
60
- { "op": "declare_pub_input", "var": 9 },
61
- { "op": "declare_pub_input", "var": 13 },
62
- { "op": "declare_pub_input", "var": 14 },
63
- { "op": "pi_skip", "guard": 3, "count": 5 },
64
- { "op": "declare_pub_input", "var": 6 },
65
- { "op": "pi_skip", "guard": 3, "count": 1 },
66
- { "op": "load_imm", "imm": "03" },
67
- { "op": "declare_pub_input", "var": 7 },
68
- { "op": "declare_pub_input", "var": 3 },
69
- { "op": "declare_pub_input", "var": 3 },
70
- { "op": "declare_pub_input", "var": 16 },
71
- { "op": "pi_skip", "guard": 3, "count": 4 },
72
- { "op": "declare_pub_input", "var": 8 },
73
- { "op": "declare_pub_input", "var": 3 },
74
- { "op": "declare_pub_input", "var": 3 },
75
- { "op": "declare_pub_input", "var": 9 },
76
- { "op": "declare_pub_input", "var": 13 },
77
- { "op": "declare_pub_input", "var": 14 },
78
- { "op": "pi_skip", "guard": 3, "count": 6 },
79
- { "op": "declare_pub_input", "var": 10 },
80
- { "op": "pi_skip", "guard": 3, "count": 1 },
81
- { "op": "public_input", "guard": null },
82
- { "op": "declare_pub_input", "var": 12 },
83
- { "op": "declare_pub_input", "var": 3 },
84
- { "op": "declare_pub_input", "var": 3 },
85
- { "op": "declare_pub_input", "var": 17 },
86
- { "op": "pi_skip", "guard": 3, "count": 4 },
87
- { "op": "assert", "cond": 17 },
88
- { "op": "declare_pub_input", "var": 6 },
89
- { "op": "pi_skip", "guard": 3, "count": 1 },
90
- { "op": "declare_pub_input", "var": 7 },
91
- { "op": "declare_pub_input", "var": 3 },
92
- { "op": "declare_pub_input", "var": 3 },
93
- { "op": "declare_pub_input", "var": 16 },
94
- { "op": "pi_skip", "guard": 3, "count": 4 },
95
- { "op": "declare_pub_input", "var": 7 },
96
- { "op": "declare_pub_input", "var": 3 },
97
- { "op": "declare_pub_input", "var": 9 },
98
- { "op": "declare_pub_input", "var": 13 },
99
- { "op": "declare_pub_input", "var": 14 },
100
- { "op": "pi_skip", "guard": 3, "count": 5 },
101
- { "op": "public_input", "guard": null },
102
- { "op": "load_imm", "imm": "08" },
103
- { "op": "declare_pub_input", "var": 15 },
104
- { "op": "declare_pub_input", "var": 3 },
105
- { "op": "declare_pub_input", "var": 19 },
106
- { "op": "declare_pub_input", "var": 18 },
107
- { "op": "pi_skip", "guard": 3, "count": 4 },
108
- { "op": "less_than", "a": 18, "b": 2, "bits": 64 },
109
- { "op": "cond_select", "bit": 20, "a": 4, "b": 3 },
110
- { "op": "assert", "cond": 21 },
111
- { "op": "load_imm", "imm": "40" },
112
- { "op": "declare_pub_input", "var": 22 },
113
- { "op": "pi_skip", "guard": 3, "count": 1 },
114
- { "op": "load_imm", "imm": "80" },
115
- { "op": "load_imm", "imm": "07" },
116
- { "op": "declare_pub_input", "var": 23 },
117
- { "op": "declare_pub_input", "var": 3 },
118
- { "op": "declare_pub_input", "var": 3 },
119
- { "op": "declare_pub_input", "var": 24 },
120
- { "op": "pi_skip", "guard": 3, "count": 4 },
121
- { "op": "declare_pub_input", "var": 8 },
122
- { "op": "declare_pub_input", "var": 3 },
123
- { "op": "declare_pub_input", "var": 16 },
124
- { "op": "declare_pub_input", "var": 3 },
125
- { "op": "declare_pub_input", "var": 9 },
126
- { "op": "declare_pub_input", "var": 9 },
127
- { "op": "declare_pub_input", "var": 3 },
128
- { "op": "declare_pub_input", "var": 4 },
129
- { "op": "declare_pub_input", "var": 4 },
130
- { "op": "declare_pub_input", "var": 4 },
131
- { "op": "declare_pub_input", "var": 4 },
132
- { "op": "pi_skip", "guard": 3, "count": 11 },
133
- { "op": "load_imm", "imm": "31" },
134
- { "op": "declare_pub_input", "var": 25 },
135
- { "op": "pi_skip", "guard": 3, "count": 1 },
136
- { "op": "declare_pub_input", "var": 25 },
137
- { "op": "pi_skip", "guard": 3, "count": 1 },
138
- { "op": "declare_pub_input", "var": 10 },
139
- { "op": "pi_skip", "guard": 3, "count": 1 },
140
- { "op": "declare_pub_input", "var": 8 },
141
- { "op": "declare_pub_input", "var": 3 },
142
- { "op": "declare_pub_input", "var": 3 },
143
- { "op": "declare_pub_input", "var": 8 },
144
- { "op": "declare_pub_input", "var": 2 },
145
- { "op": "pi_skip", "guard": 3, "count": 5 },
146
- { "op": "declare_pub_input", "var": 22 },
147
- { "op": "pi_skip", "guard": 3, "count": 1 },
148
- { "op": "declare_pub_input", "var": 19 },
149
- { "op": "pi_skip", "guard": 3, "count": 1 },
150
- { "op": "load_imm", "imm": "12" },
151
- { "op": "load_imm", "imm": "04" },
152
- { "op": "declare_pub_input", "var": 26 },
153
- { "op": "declare_pub_input", "var": 27 },
154
- { "op": "pi_skip", "guard": 3, "count": 2 },
155
- { "op": "load_imm", "imm": "32" },
156
- { "op": "declare_pub_input", "var": 28 },
157
- { "op": "pi_skip", "guard": 3, "count": 1 },
158
- { "op": "declare_pub_input", "var": 28 },
159
- { "op": "pi_skip", "guard": 3, "count": 1 },
160
- { "op": "load_imm", "imm": "60" },
161
- { "op": "load_imm", "imm": "-01" },
162
- { "op": "declare_pub_input", "var": 29 },
163
- { "op": "declare_pub_input", "var": 30 },
164
- { "op": "pi_skip", "guard": 3, "count": 2 },
165
- { "op": "load_imm", "imm": "14" },
166
- { "op": "declare_pub_input", "var": 31 },
167
- { "op": "pi_skip", "guard": 3, "count": 1 },
168
- { "op": "load_imm", "imm": "A2" },
169
- { "op": "declare_pub_input", "var": 32 },
170
- { "op": "pi_skip", "guard": 3, "count": 1 },
171
- { "op": "declare_pub_input", "var": 22 },
172
- { "op": "pi_skip", "guard": 3, "count": 1 },
173
- { "op": "declare_pub_input", "var": 22 },
174
- { "op": "pi_skip", "guard": 3, "count": 1 },
175
- { "op": "declare_pub_input", "var": 23 },
176
- { "op": "declare_pub_input", "var": 3 },
177
- { "op": "declare_pub_input", "var": 3 },
178
- { "op": "declare_pub_input", "var": 19 },
179
- { "op": "pi_skip", "guard": 3, "count": 4 },
180
- { "op": "load_imm", "imm": "06" },
181
- { "op": "declare_pub_input", "var": 8 },
182
- { "op": "declare_pub_input", "var": 3 },
183
- { "op": "declare_pub_input", "var": 33 },
184
- { "op": "declare_pub_input", "var": 3 },
185
- { "op": "declare_pub_input", "var": 9 },
186
- { "op": "declare_pub_input", "var": 9 },
187
- { "op": "declare_pub_input", "var": 3 },
188
- { "op": "declare_pub_input", "var": 9 },
189
- { "op": "declare_pub_input", "var": 9 },
190
- { "op": "declare_pub_input", "var": 3 },
191
- { "op": "declare_pub_input", "var": 4 },
192
- { "op": "declare_pub_input", "var": 4 },
193
- { "op": "declare_pub_input", "var": 4 },
194
- { "op": "declare_pub_input", "var": 4 },
195
- { "op": "declare_pub_input", "var": 4 },
196
- { "op": "declare_pub_input", "var": 4 },
197
- { "op": "declare_pub_input", "var": 4 },
198
- { "op": "declare_pub_input", "var": 13 },
199
- { "op": "declare_pub_input", "var": 14 },
200
- { "op": "pi_skip", "guard": 3, "count": 19 },
201
- { "op": "declare_pub_input", "var": 25 },
202
- { "op": "pi_skip", "guard": 3, "count": 1 },
203
- { "op": "declare_pub_input", "var": 25 },
204
- { "op": "pi_skip", "guard": 3, "count": 1 },
205
- { "op": "declare_pub_input", "var": 10 },
206
- { "op": "pi_skip", "guard": 3, "count": 1 },
207
- { "op": "declare_pub_input", "var": 8 },
208
- { "op": "declare_pub_input", "var": 3 },
209
- { "op": "declare_pub_input", "var": 3 },
210
- { "op": "declare_pub_input", "var": 8 },
211
- { "op": "declare_pub_input", "var": 2 },
212
- { "op": "pi_skip", "guard": 3, "count": 5 },
213
- { "op": "declare_pub_input", "var": 22 },
214
- { "op": "pi_skip", "guard": 3, "count": 1 },
215
- { "op": "declare_pub_input", "var": 19 },
216
- { "op": "pi_skip", "guard": 3, "count": 1 },
217
- { "op": "declare_pub_input", "var": 26 },
218
- { "op": "declare_pub_input", "var": 27 },
219
- { "op": "pi_skip", "guard": 3, "count": 2 },
220
- { "op": "declare_pub_input", "var": 28 },
221
- { "op": "pi_skip", "guard": 3, "count": 1 },
222
- { "op": "declare_pub_input", "var": 28 },
223
- { "op": "pi_skip", "guard": 3, "count": 1 },
224
- { "op": "declare_pub_input", "var": 29 },
225
- { "op": "declare_pub_input", "var": 30 },
226
- { "op": "pi_skip", "guard": 3, "count": 2 },
227
- { "op": "declare_pub_input", "var": 31 },
228
- { "op": "pi_skip", "guard": 3, "count": 1 },
229
- { "op": "declare_pub_input", "var": 32 },
230
- { "op": "pi_skip", "guard": 3, "count": 1 },
231
- { "op": "declare_pub_input", "var": 22 },
232
- { "op": "pi_skip", "guard": 3, "count": 1 },
233
- { "op": "assert", "cond": 21 },
234
- { "op": "neg", "a": 2 },
235
- { "op": "add", "a": 18, "b": 34 },
236
- { "op": "load_imm", "imm": "70" },
237
- { "op": "declare_pub_input", "var": 36 },
238
- { "op": "declare_pub_input", "var": 3 },
239
- { "op": "declare_pub_input", "var": 3 },
240
- { "op": "declare_pub_input", "var": 16 },
241
- { "op": "pi_skip", "guard": 3, "count": 4 },
242
- { "op": "declare_pub_input", "var": 8 },
243
- { "op": "declare_pub_input", "var": 3 },
244
- { "op": "declare_pub_input", "var": 3 },
245
- { "op": "declare_pub_input", "var": 9 },
246
- { "op": "declare_pub_input", "var": 13 },
247
- { "op": "declare_pub_input", "var": 14 },
248
- { "op": "pi_skip", "guard": 3, "count": 6 },
249
- { "op": "load_imm", "imm": "11" },
250
- { "op": "declare_pub_input", "var": 37 },
251
- { "op": "declare_pub_input", "var": 3 },
252
- { "op": "declare_pub_input", "var": 3 },
253
- { "op": "declare_pub_input", "var": 19 },
254
- { "op": "declare_pub_input", "var": 35 },
255
- { "op": "pi_skip", "guard": 3, "count": 5 },
256
- { "op": "load_imm", "imm": "91" },
257
- { "op": "declare_pub_input", "var": 38 },
258
- { "op": "pi_skip", "guard": 3, "count": 1 },
259
- { "op": "load_imm", "imm": "A1" },
260
- { "op": "declare_pub_input", "var": 39 },
261
- { "op": "pi_skip", "guard": 3, "count": 1 }
12
+ { "op": "constrain_bits", "val": "%serviceId.0", "bits": 8 },
13
+ { "op": "constrain_bits", "val": "%serviceId.1", "bits": 248 },
14
+ { "op": "constrain_bits", "val": "%amount.2", "bits": 64 },
15
+ { "op": "less_than", "output": "%t.3", "a": "0x00", "b": "%amount.2", "bits": 64 },
16
+ { "op": "assert", "cond": "%t.3" },
17
+ { "op": "public_input", "type": "Scalar<BLS12-381>", "output": "%t.4", "guard": null },
18
+ { "op": "impact", "guard": "0x01", "inputs": ["0x30"] },
19
+ { "op": "impact", "guard": "0x01", "inputs": ["0x50", "0x01", "0x01", "0x01"] },
20
+ { "op": "impact", "guard": "0x01", "inputs": ["0x10", "0x01", "0x01", "0x20", "%serviceId.0", "%serviceId.1"] },
21
+ { "op": "impact", "guard": "0x01", "inputs": ["0x18"] },
22
+ { "op": "impact", "guard": "0x01", "inputs": ["0x0d", "0x01", "0x01", "%t.4"] },
23
+ { "op": "assert", "cond": "%t.4" },
24
+ { "op": "public_input", "type": "Scalar<BLS12-381>", "output": "%owner.5", "guard": null },
25
+ { "op": "public_input", "type": "Scalar<BLS12-381>", "output": "%owner.6", "guard": null },
26
+ { "op": "impact", "guard": "0x01", "inputs": ["0x30"] },
27
+ { "op": "impact", "guard": "0x01", "inputs": ["0x50", "0x01", "0x01", "0x01"] },
28
+ { "op": "impact", "guard": "0x01", "inputs": ["0x50", "0x01", "0x20", "%serviceId.0", "%serviceId.1"] },
29
+ { "op": "impact", "guard": "0x01", "inputs": ["0x0c", "0x01", "0x20", "%owner.5", "%owner.6"] },
30
+ { "op": "public_input", "type": "Scalar<BLS12-381>", "output": "%t.7", "guard": null },
31
+ { "op": "impact", "guard": "0x01", "inputs": ["0x30"] },
32
+ { "op": "impact", "guard": "0x01", "inputs": ["0x50", "0x01", "0x01", "0x03"] },
33
+ { "op": "impact", "guard": "0x01", "inputs": ["0x10", "0x01", "0x01", "0x20", "%owner.5", "%owner.6"] },
34
+ { "op": "impact", "guard": "0x01", "inputs": ["0x18"] },
35
+ { "op": "impact", "guard": "0x01", "inputs": ["0x0d", "0x01", "0x01", "%t.7"] },
36
+ { "op": "assert", "cond": "%t.7" },
37
+ { "op": "public_input", "type": "Scalar<BLS12-381>", "output": "%balance.8", "guard": null },
38
+ { "op": "impact", "guard": "0x01", "inputs": ["0x30"] },
39
+ { "op": "impact", "guard": "0x01", "inputs": ["0x50", "0x01", "0x01", "0x03"] },
40
+ { "op": "impact", "guard": "0x01", "inputs": ["0x50", "0x01", "0x20", "%owner.5", "%owner.6"] },
41
+ { "op": "impact", "guard": "0x01", "inputs": ["0x0c", "0x01", "0x08", "%balance.8"] },
42
+ { "op": "less_than", "output": "%t.9", "a": "%balance.8", "b": "%amount.2", "bits": 64 },
43
+ { "op": "cond_select", "output": "%t.10", "bit": "%t.9", "a": "0x00", "b": "0x01" },
44
+ { "op": "assert", "cond": "%t.10" },
45
+ { "op": "impact", "guard": "0x01", "inputs": ["0x40"] },
46
+ { "op": "impact", "guard": "0x01", "inputs": ["0x80", "0x01", "0x01", "0x07"] },
47
+ { "op": "impact", "guard": "0x01", "inputs": ["0x10", "0x01", "0x03", "0x01", "0x20", "0x20", "0x01", "0x00", "0x00", "0x00", "0x00"] },
48
+ { "op": "impact", "guard": "0x01", "inputs": ["0x31"] },
49
+ { "op": "impact", "guard": "0x01", "inputs": ["0x31"] },
50
+ { "op": "impact", "guard": "0x01", "inputs": ["0x18"] },
51
+ { "op": "impact", "guard": "0x01", "inputs": ["0x10", "0x01", "0x01", "0x10", "%amount.2"] },
52
+ { "op": "impact", "guard": "0x01", "inputs": ["0x40"] },
53
+ { "op": "impact", "guard": "0x01", "inputs": ["0x08"] },
54
+ { "op": "impact", "guard": "0x01", "inputs": ["0x12", "0x04"] },
55
+ { "op": "impact", "guard": "0x01", "inputs": ["0x32"] },
56
+ { "op": "impact", "guard": "0x01", "inputs": ["0x32"] },
57
+ { "op": "impact", "guard": "0x01", "inputs": ["0x60", "-0x01"] },
58
+ { "op": "impact", "guard": "0x01", "inputs": ["0x14"] },
59
+ { "op": "impact", "guard": "0x01", "inputs": ["0xa2"] },
60
+ { "op": "impact", "guard": "0x01", "inputs": ["0x40"] },
61
+ { "op": "impact", "guard": "0x01", "inputs": ["0x40"] },
62
+ { "op": "impact", "guard": "0x01", "inputs": ["0x80", "0x01", "0x01", "0x08"] },
63
+ { "op": "impact", "guard": "0x01", "inputs": ["0x10", "0x01", "0x06", "0x01", "0x20", "0x20", "0x01", "0x20", "0x20", "0x01", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "%owner.5", "%owner.6"] },
64
+ { "op": "impact", "guard": "0x01", "inputs": ["0x31"] },
65
+ { "op": "impact", "guard": "0x01", "inputs": ["0x31"] },
66
+ { "op": "impact", "guard": "0x01", "inputs": ["0x18"] },
67
+ { "op": "impact", "guard": "0x01", "inputs": ["0x10", "0x01", "0x01", "0x10", "%amount.2"] },
68
+ { "op": "impact", "guard": "0x01", "inputs": ["0x40"] },
69
+ { "op": "impact", "guard": "0x01", "inputs": ["0x08"] },
70
+ { "op": "impact", "guard": "0x01", "inputs": ["0x12", "0x04"] },
71
+ { "op": "impact", "guard": "0x01", "inputs": ["0x32"] },
72
+ { "op": "impact", "guard": "0x01", "inputs": ["0x32"] },
73
+ { "op": "impact", "guard": "0x01", "inputs": ["0x60", "-0x01"] },
74
+ { "op": "impact", "guard": "0x01", "inputs": ["0x14"] },
75
+ { "op": "impact", "guard": "0x01", "inputs": ["0xa2"] },
76
+ { "op": "impact", "guard": "0x01", "inputs": ["0x40"] },
77
+ { "op": "assert", "cond": "%t.10" },
78
+ { "op": "neg", "output": "%neg.11", "a": "%amount.2" },
79
+ { "op": "add", "output": "%tmp.12", "a": "%balance.8", "b": "%neg.11" },
80
+ { "op": "impact", "guard": "0x01", "inputs": ["0x70", "0x01", "0x01", "0x03"] },
81
+ { "op": "impact", "guard": "0x01", "inputs": ["0x10", "0x01", "0x01", "0x20", "%owner.5", "%owner.6"] },
82
+ { "op": "impact", "guard": "0x01", "inputs": ["0x11", "0x01", "0x01", "0x08", "%tmp.12"] },
83
+ { "op": "impact", "guard": "0x01", "inputs": ["0x91"] },
84
+ { "op": "impact", "guard": "0x01", "inputs": ["0xa1"] }
262
85
  ]
263
86
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odatano/contract-m402-vault",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "m402 payment vault Compact contract: NIGHT pooled against a shielded credit, services paid in private, receipts checked in the public ledger.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "ODATANO",
@@ -38,7 +38,7 @@
38
38
  "NOTICE"
39
39
  ],
40
40
  "peerDependencies": {
41
- "@midnight-ntwrk/compact-runtime": "0.16.0"
41
+ "@midnight-ntwrk/compact-runtime": "0.21.0"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public"
@@ -3,7 +3,7 @@
3
3
 
4
4
  // Modified from m402 (https://github.com/julianariel/m402), Apache-2.0.
5
5
  // Copyright 2026 The m402 contributors. Changed: witnesses became circuit parameters.
6
- pragma language_version 0.23;
6
+ pragma language_version >= 0.23;
7
7
 
8
8
  import CompactStandardLibrary;
9
9