Source file constants_parametric_repr.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
type dal = {
  feature_enable : bool;
  number_of_slots : int;
  number_of_shards : int;
  endorsement_lag : int;
  availability_threshold : int;
}
let dal_encoding =
  let open Data_encoding in
  conv
    (fun {
           feature_enable;
           number_of_slots;
           number_of_shards;
           endorsement_lag;
           availability_threshold;
         } ->
      ( feature_enable,
        number_of_slots,
        number_of_shards,
        endorsement_lag,
        availability_threshold ))
    (fun ( feature_enable,
           number_of_slots,
           number_of_shards,
           endorsement_lag,
           availability_threshold ) ->
      {
        feature_enable;
        number_of_slots;
        number_of_shards;
        endorsement_lag;
        availability_threshold;
      })
    (obj5
       (req "feature_enable" Data_encoding.bool)
       (req "number_of_slots" Data_encoding.int16)
       (req "number_of_shards" Data_encoding.int16)
       (req "endorsement_lag" Data_encoding.int16)
       (req "availability_threshold" Data_encoding.int16))
type tx_rollup = {
  enable : bool;
  origination_size : int;
  hard_size_limit_per_inbox : int;
  hard_size_limit_per_message : int;
  commitment_bond : Tez_repr.t;
  finality_period : int;
  withdraw_period : int;
  max_inboxes_count : int;
  max_messages_per_inbox : int;
  max_commitments_count : int;
  cost_per_byte_ema_factor : int;
  max_ticket_payload_size : int;
  max_withdrawals_per_batch : int;
  rejection_max_proof_size : int;
  sunset_level : int32;
}
type sc_rollup = {
  enable : bool;
  origination_size : int;
  challenge_window_in_blocks : int;
  max_available_messages : int;
  stake_amount : Tez_repr.t;
  commitment_period_in_blocks : int;
  max_lookahead_in_blocks : int32;
  max_active_outbox_levels : int32;
  max_outbox_messages_per_level : int;
}
type t = {
  preserved_cycles : int;
  blocks_per_cycle : int32;
  blocks_per_commitment : int32;
  nonce_revelation_threshold : int32;
  blocks_per_stake_snapshot : int32;
  cycles_per_voting_period : int32;
  hard_gas_limit_per_operation : Gas_limit_repr.Arith.integral;
  hard_gas_limit_per_block : Gas_limit_repr.Arith.integral;
  proof_of_work_threshold : int64;
  tokens_per_roll : Tez_repr.t;
  vdf_difficulty : int64;
  seed_nonce_revelation_tip : Tez_repr.t;
  origination_size : int;
  baking_reward_fixed_portion : Tez_repr.t;
  baking_reward_bonus_per_slot : Tez_repr.t;
  endorsing_reward_per_slot : Tez_repr.t;
  cost_per_byte : Tez_repr.t;
  hard_storage_limit_per_operation : Z.t;
  quorum_min : int32;
  quorum_max : int32;
  min_proposal_quorum : int32;
  liquidity_baking_subsidy : Tez_repr.t;
  liquidity_baking_sunset_level : int32;
  liquidity_baking_toggle_ema_threshold : int32;
  max_operations_time_to_live : int;
  minimal_block_delay : Period_repr.t;
  delay_increment_per_round : Period_repr.t;
  minimal_participation_ratio : Ratio_repr.t;
  consensus_committee_size : int;
  consensus_threshold : int;
  max_slashing_period : int;
  frozen_deposits_percentage : int;
  double_baking_punishment : Tez_repr.t;
  ratio_of_frozen_deposits_slashed_per_double_endorsement : Ratio_repr.t;
  testnet_dictator : Signature.Public_key_hash.t option;
  initial_seed : State_hash.t option;
  
  cache_script_size : int;
  cache_stake_distribution_cycles : int;
  cache_sampler_state_cycles : int;
  tx_rollup : tx_rollup;
  dal : dal;
  sc_rollup : sc_rollup;
}
let tx_rollup_encoding =
  let open Data_encoding in
  conv
    (fun (c : tx_rollup) ->
      ( ( c.enable,
          c.origination_size,
          c.hard_size_limit_per_inbox,
          c.hard_size_limit_per_message,
          c.max_withdrawals_per_batch,
          c.commitment_bond,
          c.finality_period,
          c.withdraw_period,
          c.max_inboxes_count,
          c.max_messages_per_inbox ),
        ( c.max_commitments_count,
          c.cost_per_byte_ema_factor,
          c.max_ticket_payload_size,
          c.rejection_max_proof_size,
          c.sunset_level ) ))
    (fun ( ( tx_rollup_enable,
             tx_rollup_origination_size,
             tx_rollup_hard_size_limit_per_inbox,
             tx_rollup_hard_size_limit_per_message,
             tx_rollup_max_withdrawals_per_batch,
             tx_rollup_commitment_bond,
             tx_rollup_finality_period,
             tx_rollup_withdraw_period,
             tx_rollup_max_inboxes_count,
             tx_rollup_max_messages_per_inbox ),
           ( tx_rollup_max_commitments_count,
             tx_rollup_cost_per_byte_ema_factor,
             tx_rollup_max_ticket_payload_size,
             tx_rollup_rejection_max_proof_size,
             tx_rollup_sunset_level ) ) ->
      {
        enable = tx_rollup_enable;
        origination_size = tx_rollup_origination_size;
        hard_size_limit_per_inbox = tx_rollup_hard_size_limit_per_inbox;
        hard_size_limit_per_message = tx_rollup_hard_size_limit_per_message;
        max_withdrawals_per_batch = tx_rollup_max_withdrawals_per_batch;
        commitment_bond = tx_rollup_commitment_bond;
        finality_period = tx_rollup_finality_period;
        withdraw_period = tx_rollup_withdraw_period;
        max_inboxes_count = tx_rollup_max_inboxes_count;
        max_messages_per_inbox = tx_rollup_max_messages_per_inbox;
        max_commitments_count = tx_rollup_max_commitments_count;
        cost_per_byte_ema_factor = tx_rollup_cost_per_byte_ema_factor;
        max_ticket_payload_size = tx_rollup_max_ticket_payload_size;
        rejection_max_proof_size = tx_rollup_rejection_max_proof_size;
        sunset_level = tx_rollup_sunset_level;
      })
    (merge_objs
       (obj10
          (req "tx_rollup_enable" bool)
          (req "tx_rollup_origination_size" int31)
          (req "tx_rollup_hard_size_limit_per_inbox" int31)
          (req "tx_rollup_hard_size_limit_per_message" int31)
          (req "tx_rollup_max_withdrawals_per_batch" int31)
          (req "tx_rollup_commitment_bond" Tez_repr.encoding)
          (req "tx_rollup_finality_period" int31)
          (req "tx_rollup_withdraw_period" int31)
          (req "tx_rollup_max_inboxes_count" int31)
          (req "tx_rollup_max_messages_per_inbox" int31))
       (obj5
          (req "tx_rollup_max_commitments_count" int31)
          (req "tx_rollup_cost_per_byte_ema_factor" int31)
          (req "tx_rollup_max_ticket_payload_size" int31)
          (req "tx_rollup_rejection_max_proof_size" int31)
          (req "tx_rollup_sunset_level" int32)))
let sc_rollup_encoding =
  let open Data_encoding in
  conv
    (fun (c : sc_rollup) ->
      ( c.enable,
        c.origination_size,
        c.challenge_window_in_blocks,
        c.max_available_messages,
        c.stake_amount,
        c.commitment_period_in_blocks,
        c.max_lookahead_in_blocks,
        c.max_active_outbox_levels,
        c.max_outbox_messages_per_level ))
    (fun ( sc_rollup_enable,
           sc_rollup_origination_size,
           sc_rollup_challenge_window_in_blocks,
           sc_rollup_max_available_messages,
           sc_rollup_stake_amount,
           sc_rollup_commitment_period_in_blocks,
           sc_rollup_max_lookahead_in_blocks,
           sc_rollup_max_active_outbox_levels,
           sc_rollup_max_outbox_messages_per_level ) ->
      {
        enable = sc_rollup_enable;
        origination_size = sc_rollup_origination_size;
        challenge_window_in_blocks = sc_rollup_challenge_window_in_blocks;
        max_available_messages = sc_rollup_max_available_messages;
        stake_amount = sc_rollup_stake_amount;
        commitment_period_in_blocks = sc_rollup_commitment_period_in_blocks;
        max_lookahead_in_blocks = sc_rollup_max_lookahead_in_blocks;
        max_active_outbox_levels = sc_rollup_max_active_outbox_levels;
        max_outbox_messages_per_level = sc_rollup_max_outbox_messages_per_level;
      })
    (obj9
       (req "sc_rollup_enable" bool)
       (req "sc_rollup_origination_size" int31)
       (req "sc_rollup_challenge_window_in_blocks" int31)
       (req "sc_rollup_max_available_messages" int31)
       (req "sc_rollup_stake_amount" Tez_repr.encoding)
       (req "sc_rollup_commitment_period_in_blocks" int31)
       (req "sc_rollup_max_lookahead_in_blocks" int32)
       (req "sc_rollup_max_active_outbox_levels" int32)
       (req "sc_rollup_max_outbox_messages_per_level" int31))
let encoding =
  let open Data_encoding in
  conv
    (fun c ->
      ( ( c.preserved_cycles,
          c.blocks_per_cycle,
          c.blocks_per_commitment,
          c.nonce_revelation_threshold,
          c.blocks_per_stake_snapshot,
          c.cycles_per_voting_period,
          c.hard_gas_limit_per_operation,
          c.hard_gas_limit_per_block,
          c.proof_of_work_threshold,
          c.tokens_per_roll ),
        ( ( c.vdf_difficulty,
            c.seed_nonce_revelation_tip,
            c.origination_size,
            c.baking_reward_fixed_portion,
            c.baking_reward_bonus_per_slot,
            c.endorsing_reward_per_slot,
            c.cost_per_byte,
            c.hard_storage_limit_per_operation,
            c.quorum_min ),
          ( ( c.quorum_max,
              c.min_proposal_quorum,
              c.liquidity_baking_subsidy,
              c.liquidity_baking_sunset_level,
              c.liquidity_baking_toggle_ema_threshold,
              c.max_operations_time_to_live,
              c.minimal_block_delay,
              c.delay_increment_per_round,
              c.consensus_committee_size,
              c.consensus_threshold ),
            ( ( c.minimal_participation_ratio,
                c.max_slashing_period,
                c.frozen_deposits_percentage,
                c.double_baking_punishment,
                c.ratio_of_frozen_deposits_slashed_per_double_endorsement,
                c.testnet_dictator,
                c.initial_seed ),
              ( ( c.cache_script_size,
                  c.cache_stake_distribution_cycles,
                  c.cache_sampler_state_cycles ),
                (c.tx_rollup, (c.dal, c.sc_rollup)) ) ) ) ) ))
    (fun ( ( preserved_cycles,
             blocks_per_cycle,
             blocks_per_commitment,
             nonce_revelation_threshold,
             blocks_per_stake_snapshot,
             cycles_per_voting_period,
             hard_gas_limit_per_operation,
             hard_gas_limit_per_block,
             proof_of_work_threshold,
             tokens_per_roll ),
           ( ( vdf_difficulty,
               seed_nonce_revelation_tip,
               origination_size,
               baking_reward_fixed_portion,
               baking_reward_bonus_per_slot,
               endorsing_reward_per_slot,
               cost_per_byte,
               hard_storage_limit_per_operation,
               quorum_min ),
             ( ( quorum_max,
                 min_proposal_quorum,
                 liquidity_baking_subsidy,
                 liquidity_baking_sunset_level,
                 liquidity_baking_toggle_ema_threshold,
                 max_operations_time_to_live,
                 minimal_block_delay,
                 delay_increment_per_round,
                 consensus_committee_size,
                 consensus_threshold ),
               ( ( minimal_participation_ratio,
                   max_slashing_period,
                   frozen_deposits_percentage,
                   double_baking_punishment,
                   ratio_of_frozen_deposits_slashed_per_double_endorsement,
                   testnet_dictator,
                   initial_seed ),
                 ( ( cache_script_size,
                     cache_stake_distribution_cycles,
                     cache_sampler_state_cycles ),
                   (tx_rollup, (dal, sc_rollup)) ) ) ) ) ) ->
      {
        preserved_cycles;
        blocks_per_cycle;
        blocks_per_commitment;
        nonce_revelation_threshold;
        blocks_per_stake_snapshot;
        cycles_per_voting_period;
        hard_gas_limit_per_operation;
        hard_gas_limit_per_block;
        proof_of_work_threshold;
        tokens_per_roll;
        vdf_difficulty;
        seed_nonce_revelation_tip;
        origination_size;
        baking_reward_fixed_portion;
        baking_reward_bonus_per_slot;
        endorsing_reward_per_slot;
        cost_per_byte;
        hard_storage_limit_per_operation;
        quorum_min;
        quorum_max;
        min_proposal_quorum;
        liquidity_baking_subsidy;
        liquidity_baking_sunset_level;
        liquidity_baking_toggle_ema_threshold;
        max_operations_time_to_live;
        minimal_block_delay;
        delay_increment_per_round;
        minimal_participation_ratio;
        max_slashing_period;
        consensus_committee_size;
        consensus_threshold;
        frozen_deposits_percentage;
        double_baking_punishment;
        ratio_of_frozen_deposits_slashed_per_double_endorsement;
        testnet_dictator;
        initial_seed;
        cache_script_size;
        cache_stake_distribution_cycles;
        cache_sampler_state_cycles;
        tx_rollup;
        dal;
        sc_rollup;
      })
    (merge_objs
       (obj10
          (req "preserved_cycles" uint8)
          (req "blocks_per_cycle" int32)
          (req "blocks_per_commitment" int32)
          (req "nonce_revelation_threshold" int32)
          (req "blocks_per_stake_snapshot" int32)
          (req "cycles_per_voting_period" int32)
          (req
             "hard_gas_limit_per_operation"
             Gas_limit_repr.Arith.z_integral_encoding)
          (req
             "hard_gas_limit_per_block"
             Gas_limit_repr.Arith.z_integral_encoding)
          (req "proof_of_work_threshold" int64)
          (req "tokens_per_roll" Tez_repr.encoding))
       (merge_objs
          (obj9
             (req "vdf_difficulty" int64)
             (req "seed_nonce_revelation_tip" Tez_repr.encoding)
             (req "origination_size" int31)
             (req "baking_reward_fixed_portion" Tez_repr.encoding)
             (req "baking_reward_bonus_per_slot" Tez_repr.encoding)
             (req "endorsing_reward_per_slot" Tez_repr.encoding)
             (req "cost_per_byte" Tez_repr.encoding)
             (req "hard_storage_limit_per_operation" z)
             (req "quorum_min" int32))
          (merge_objs
             (obj10
                (req "quorum_max" int32)
                (req "min_proposal_quorum" int32)
                (req "liquidity_baking_subsidy" Tez_repr.encoding)
                (req "liquidity_baking_sunset_level" int32)
                (req "liquidity_baking_toggle_ema_threshold" int32)
                (req "max_operations_time_to_live" int16)
                (req "minimal_block_delay" Period_repr.encoding)
                (req "delay_increment_per_round" Period_repr.encoding)
                (req "consensus_committee_size" int31)
                (req "consensus_threshold" int31))
             (merge_objs
                (obj7
                   (req "minimal_participation_ratio" Ratio_repr.encoding)
                   (req "max_slashing_period" int31)
                   (req "frozen_deposits_percentage" int31)
                   (req "double_baking_punishment" Tez_repr.encoding)
                   (req
                      "ratio_of_frozen_deposits_slashed_per_double_endorsement"
                      Ratio_repr.encoding)
                   (opt "testnet_dictator" Signature.Public_key_hash.encoding)
                   (opt "initial_seed" State_hash.encoding))
                (merge_objs
                   (obj3
                      (req "cache_script_size" int31)
                      (req "cache_stake_distribution_cycles" int8)
                      (req "cache_sampler_state_cycles" int8))
                   (merge_objs
                      tx_rollup_encoding
                      (merge_objs
                         (obj1 (req "dal_parametric" dal_encoding))
                         sc_rollup_encoding)))))))