diff --git a/src/lib_crypto_dal/test/test_dal_cryptobox.ml b/src/lib_crypto_dal/test/test_dal_cryptobox.ml index 2a9865227f8b946949f8df1fd89a01a2b9143d59..4d1d4fa16b6c262322d8c505424c0724b66648a5 100644 --- a/src/lib_crypto_dal/test/test_dal_cryptobox.ml +++ b/src/lib_crypto_dal/test/test_dal_cryptobox.ml @@ -37,18 +37,20 @@ module Test = struct (* The set of parameters maximizing the SRS length, and which is in the codomain of [generate_parameters]. *) let max_parameters = - let max_parameters : Cryptobox.parameters = - { - slot_size = 1 lsl max_slot_size_log2; - page_size = 1 lsl max_page_size_log2; - redundancy_factor = 1 lsl max_redundancy_factor_log2; - number_of_shards = 1; - } - in - Cryptobox.Internal_for_tests.parameters_initialisation max_parameters + lazy + (let max_parameters : Cryptobox.parameters = + { + slot_size = 1 lsl max_slot_size_log2; + page_size = 1 lsl max_page_size_log2; + redundancy_factor = 1 lsl max_redundancy_factor_log2; + number_of_shards = 1; + } + in + Cryptobox.Internal_for_tests.parameters_initialisation max_parameters) (* Initializes the DAL parameters *) - let init () = Cryptobox.Internal_for_tests.load_parameters max_parameters + let init () = + Cryptobox.Internal_for_tests.load_parameters (Lazy.force max_parameters) type parameters = { slot_size : int; diff --git a/src/proto_015_PtLimaPt/lib_protocol/test/helpers/dummy_zk_rollup.ml b/src/proto_015_PtLimaPt/lib_protocol/test/helpers/dummy_zk_rollup.ml index 8a1b26a90098c37f9586386e66b95ef1cd9d0976..4c151881554bc68ac629b349e76703e60c9d9846 100644 --- a/src/proto_015_PtLimaPt/lib_protocol/test/helpers/dummy_zk_rollup.ml +++ b/src/proto_015_PtLimaPt/lib_protocol/test/helpers/dummy_zk_rollup.ml @@ -333,7 +333,7 @@ end) : sig val circuits : bool Plonk.SMap.t (** Commitment to the circuits *) - val public_parameters : Environment.Plonk.public_parameters + val lazy_public_parameters : Environment.Plonk.public_parameters lazy_t module Internal_for_tests : sig val true_op : Zk_rollup.Operation.t @@ -351,9 +351,10 @@ end = struct module T = Types.P module VC = V (LibCircuit) - let srs = - let open Bls12_381_polynomial in - (Srs.generate_insecure 8 1, Srs.generate_insecure 1 1) + let lazy_srs = + lazy + (let open Bls12_381_polynomial in + (Srs.generate_insecure 8 1, Srs.generate_insecure 1 1)) let dummy_l1_dst = Hex.to_bytes_exn (`Hex "0002298c03ed7d454a101eb7022bc95f7e5f41ac78") @@ -413,16 +414,18 @@ end = struct let circuits = SMap.(add "op" false @@ add batch_name true @@ add "fee" false empty) - let public_parameters = - let dummy_transcript = Bytes.empty in - let verifier_public_parameters = - snd - @@ Plonk.Main_protocol.setup - ~zero_knowledge:false - (SMap.map (fun (a, b, _) -> (a, b)) circuit_map) - ~srs - in - (verifier_public_parameters, dummy_transcript) + let lazy_public_parameters = + lazy + (let srs = Lazy.force lazy_srs in + let dummy_transcript = Bytes.empty in + let verifier_public_parameters = + snd + @@ Plonk.Main_protocol.setup + ~zero_knowledge:false + (SMap.map (fun (a, b, _) -> (a, b)) circuit_map) + ~srs + in + (verifier_public_parameters, dummy_transcript)) let _insert s x m = match SMap.find_opt s m with diff --git a/src/proto_015_PtLimaPt/lib_protocol/test/integration/operations/test_zk_rollup.ml b/src/proto_015_PtLimaPt/lib_protocol/test/integration/operations/test_zk_rollup.ml index f58bde6f5c9415f7ca8c4f7a5c252a1a98f584cb..a8c2407e8e0c4b1d361e1856423b71cd73b12076 100644 --- a/src/proto_015_PtLimaPt/lib_protocol/test/integration/operations/test_zk_rollup.ml +++ b/src/proto_015_PtLimaPt/lib_protocol/test/integration/operations/test_zk_rollup.ml @@ -87,11 +87,12 @@ let test_disable_feature_flag () = } in let* i = Incremental.begin_construction b in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let* op, _zk_rollup = Op.zk_rollup_origination (I i) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -124,12 +125,13 @@ let test_origination_fees () = let expected_size = (* TODO: create ZK constant *) let origination_size = constants.parametric.tx_rollup.origination_size in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let init_account = Zk_rollup.Account. { static = { - public_parameters = Operator.public_parameters; + public_parameters; state_length = 1; circuits_info = of_plonk_smap Operator.circuits; nb_ops = 1; @@ -150,11 +152,12 @@ let test_origination_fees () = let expected_fees = Tez.mul_exn constants.parametric.cost_per_byte expected_size in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let* operation, _rollup = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -172,11 +175,12 @@ let test_origination_fees () = let test_origination_negative_nb_ops () = let* ctxt, contracts = context_init 1 in let contract = Stdlib.List.hd contracts in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let* operation, _rollup = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:(-1) @@ -195,11 +199,12 @@ let test_origination_negative_nb_ops () = let init_and_originate n = let* ctxt, contracts = context_init n in let contract = Stdlib.List.hd contracts in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let* operation, rollup = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -214,11 +219,12 @@ let no_ticket op = (op, None) let test_originate_two_rollups () = let* ctxt, contracts, zk_rollup1 = init_and_originate 1 in let contract = Stdlib.List.hd contracts in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let* operation, zk_rollup2 = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 diff --git a/src/proto_015_PtLimaPt/lib_protocol/test/integration/validate/manager_operation_helpers.ml b/src/proto_015_PtLimaPt/lib_protocol/test/integration/validate/manager_operation_helpers.ml index c3a847e2529347112ead65a043bfc3e8467bae61..b99b33fe641a53fde7d963c2d177144623966bfb 100644 --- a/src/proto_015_PtLimaPt/lib_protocol/test/integration/validate/manager_operation_helpers.ml +++ b/src/proto_015_PtLimaPt/lib_protocol/test/integration/validate/manager_operation_helpers.ml @@ -389,12 +389,13 @@ end) let originate_zk_rollup block rollup_account = let open Lwt_result_syntax in let rollup_contract = contract_of rollup_account in + let public_parameters = Lazy.force ZKOperator.lazy_public_parameters in let* rollup_origination, zk_rollup = Op.zk_rollup_origination ~force_reveal:true (B block) rollup_contract - ~public_parameters:ZKOperator.public_parameters + ~public_parameters ~circuits_info: (Zk_rollup.Account.SMap.of_seq @@ Plonk.SMap.to_seq ZKOperator.circuits) ~init_state:ZKOperator.init_state @@ -1129,6 +1130,7 @@ let mk_sc_rollup_return_bond (oinfos : operation_req) (infos : infos) = let mk_zk_rollup_origination (oinfos : operation_req) (infos : infos) = let open Lwt_result_syntax in + let public_parameters = Lazy.force ZKOperator.lazy_public_parameters in let* op, _ = Op.zk_rollup_origination ?fee:oinfos.fee @@ -1138,7 +1140,7 @@ let mk_zk_rollup_origination (oinfos : operation_req) (infos : infos) = ?force_reveal:oinfos.force_reveal (B infos.ctxt.block) (contract_of (get_source infos)) - ~public_parameters:ZKOperator.public_parameters + ~public_parameters ~circuits_info: (Zk_rollup.Account.SMap.of_seq @@ Plonk.SMap.to_seq ZKOperator.circuits) ~init_state:ZKOperator.init_state diff --git a/src/proto_015_PtLimaPt/lib_protocol/test/pbt/test_zk_rollup_encoding.ml b/src/proto_015_PtLimaPt/lib_protocol/test/pbt/test_zk_rollup_encoding.ml index 143fe7479fd6502b637bfd62c006ac63aa10b73f..00e9f10cda140c156ade018c539882a6618ec9e5 100644 --- a/src/proto_015_PtLimaPt/lib_protocol/test/pbt/test_zk_rollup_encoding.ml +++ b/src/proto_015_PtLimaPt/lib_protocol/test/pbt/test_zk_rollup_encoding.ml @@ -64,7 +64,7 @@ let gen_zkr_account = let open Gen in let open Zk_rollup_account_repr in let* state = gen_l2_state in - let public_parameters = Operator.public_parameters in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let circuits_info = SMap.of_seq (Plonk.SMap.to_seq Operator.circuits) in let* nb_ops = nat in let static = diff --git a/src/proto_015_PtLimaPt/lib_protocol/test/unit/test_zk_rollup_storage.ml b/src/proto_015_PtLimaPt/lib_protocol/test/unit/test_zk_rollup_storage.ml index 1a41a7945dd679449c4fd7180206148fa16ee4ad..16db25eaaf24351d85f169cdda0951e845a3c450 100644 --- a/src/proto_015_PtLimaPt/lib_protocol/test/unit/test_zk_rollup_storage.ml +++ b/src/proto_015_PtLimaPt/lib_protocol/test/unit/test_zk_rollup_storage.ml @@ -110,7 +110,7 @@ module Raw_context_tests = struct let open Lwt_result_syntax in let open Zk_rollup_account_repr in let* ctx, contract = initial_ctx () in - let public_parameters = Operator.public_parameters in + let public_parameters = Lazy.force Operator.lazy_public_parameters in let state = Operator.init_state in let state_length = Array.length state in let circuits_info = SMap.of_seq @@ Plonk.SMap.to_seq Operator.circuits in diff --git a/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.ml b/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.ml index 6cdf1159263ef09b73731a0aeab0c93489717318..21854f77ec1de6bf7786ec1f5020894b1e843030 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.ml @@ -67,7 +67,7 @@ let derive_dal_parameters (reference : Cryptobox.parameters) ~redundancy_factor module Make (Parameters : sig val dal_parameters : Alpha_context.Constants.Parametric.dal - val cryptobox : Cryptobox.t + val cryptobox : Cryptobox.t Lazy.t end) = struct (* Some global constants. *) @@ -90,6 +90,7 @@ struct let dal_mk_polynomial_from_slot slot_data = let open Result_syntax in + let cryptobox = Lazy.force cryptobox in match Cryptobox.polynomial_from_slot cryptobox slot_data with | Ok p -> return p | Error (`Slot_wrong_size s) -> @@ -101,6 +102,7 @@ struct let dal_mk_prove_page polynomial page_id = let open Result_syntax in + let cryptobox = Lazy.force cryptobox in match Cryptobox.prove_page cryptobox polynomial page_id.P.page_index with | Ok p -> return p | Error `Page_index_out_of_range -> @@ -113,6 +115,7 @@ struct let open Result_syntax in let slot_data = Bytes.init params.slot_size fill_function in let* polynomial = dal_mk_polynomial_from_slot slot_data in + let cryptobox = Lazy.force cryptobox in let* commitment = match Cryptobox.commit cryptobox polynomial with | Ok cm -> return cm diff --git a/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.mli b/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.mli index 2c2eb26e448aa95d7ac1c5d3addf3e3fc7366ad7..ca85a016090715aaeadc502e204415d5af14f623 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.mli +++ b/src/proto_016_PtMumbai/lib_protocol/test/helpers/dal_helpers.mli @@ -41,7 +41,7 @@ val derive_dal_parameters : module Make (P : sig val dal_parameters : Alpha_context.Constants.Parametric.dal - val cryptobox : Cryptobox.t + val cryptobox : Cryptobox.t Lazy.t end) : sig (** Some global constants. *) diff --git a/src/proto_016_PtMumbai/lib_protocol/test/helpers/dummy_zk_rollup.ml b/src/proto_016_PtMumbai/lib_protocol/test/helpers/dummy_zk_rollup.ml index 71407dfdd7aa69be0e43a69e2d6674e624cb07ad..5c81adad3bf11ccefacd47edd8042996fa23895d 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/helpers/dummy_zk_rollup.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/helpers/dummy_zk_rollup.ml @@ -342,7 +342,10 @@ end) : sig val circuits : [`Public | `Private | `Fee] Plonk.SMap.t (** Commitment to the circuits *) - val public_parameters : Plonk.Main_protocol.verifier_public_parameters + val lazy_pp : + (Plonk.Main_protocol.prover_public_parameters + * Plonk.Main_protocol.verifier_public_parameters) + lazy_t (** [craft_update state ~zk_rollup ?private_ops ?exit_validities public_ops] will apply first the [public_ops], then the [private_ops]. While doing so, @@ -365,7 +368,7 @@ end) : sig val private_ops : Zk_rollup.Operation.t list list - val update_data : Zk_rollup.Update.t + val lazy_update_data : Zk_rollup.Update.t lazy_t end end = struct open Protocol.Alpha_context @@ -374,9 +377,10 @@ end = struct module T = Types.P module VC = V (LibCircuit) - let srs = - let open Bls12_381_polynomial in - (Srs.generate_insecure 9 1, Srs.generate_insecure 1 1) + let lazy_srs = + lazy + (let open Bls12_381_polynomial in + (Srs.generate_insecure 9 1, Srs.generate_insecure 1 1)) let dummy_l1_dst = Hex.to_bytes_exn (`Hex "0002298c03ed7d454a101eb7022bc95f7e5f41ac78") @@ -438,11 +442,13 @@ end = struct let circuits = SMap.(add "op" `Public @@ add batch_name `Private @@ add "fee" `Fee empty) - let prover_pp, public_parameters = - Plonk.Main_protocol.setup - ~zero_knowledge:false - (SMap.map (fun (a, b, _) -> (a, b)) circuit_map) - ~srs + let lazy_pp = + lazy + (let srs = Lazy.force lazy_srs in + Plonk.Main_protocol.setup + ~zero_knowledge:false + (SMap.map (fun (a, b, _) -> (a, b)) circuit_map) + ~srs) let insert s x m = match SMap.find_opt s m with @@ -457,6 +463,7 @@ end = struct Zk_rollup.Operation.t list -> Zk_rollup.State.t * Zk_rollup.Update.t = fun s ~zk_rollup ?(private_ops = []) ?exit_validities pending -> + let prover_pp, public_parameters = Lazy.force lazy_pp in let s = of_proto_state s in let rev_inputs = SMap.empty in let exit_validities = @@ -616,15 +623,16 @@ end = struct @@ Stdlib.List.init Params.batch_size (fun i -> if i mod 2 = 0 then false_op else true_op) - let update_data = - snd - @@ craft_update - init_state - ~zk_rollup: - (Data_encoding.Binary.of_bytes_exn - Zk_rollup.Address.encoding - dummy_rollup_id) - ~private_ops - pending + let lazy_update_data = + lazy + (snd + @@ craft_update + init_state + ~zk_rollup: + (Data_encoding.Binary.of_bytes_exn + Zk_rollup.Address.encoding + dummy_rollup_id) + ~private_ops + pending) end end diff --git a/src/proto_016_PtMumbai/lib_protocol/test/integration/operations/test_zk_rollup.ml b/src/proto_016_PtMumbai/lib_protocol/test/integration/operations/test_zk_rollup.ml index 2c0f35f51a8a1cfaae017daac416d4e284ca3059..50802251a711cfdc870dc97365b9ee3958961d36 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/integration/operations/test_zk_rollup.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/integration/operations/test_zk_rollup.ml @@ -78,6 +78,7 @@ let check_proto_error e t = check_proto_error_f (( = ) e) t (* Check that originating a ZKRU fails when the feature flag is disabled. *) let test_disable_feature_flag () = + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* b, contract = Context.init_with_constants1 { @@ -91,7 +92,7 @@ let test_disable_feature_flag () = Op.zk_rollup_origination (I i) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -121,6 +122,7 @@ let test_origination_fees () = let* ctxt, contracts = context_init 1 in let* constants = Context.get_constants (B ctxt) in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let expected_size = (* TODO: create ZK constant *) let origination_size = constants.parametric.tx_rollup.origination_size in @@ -129,7 +131,7 @@ let test_origination_fees () = { static = { - public_parameters = Operator.public_parameters; + public_parameters; state_length = 1; circuits_info = of_plonk_smap Operator.circuits; nb_ops = 1; @@ -154,7 +156,7 @@ let test_origination_fees () = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -172,11 +174,12 @@ let test_origination_fees () = let test_origination_negative_nb_ops () = let* ctxt, contracts = context_init 1 in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* operation, _rollup = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:(-1) @@ -195,11 +198,12 @@ let test_origination_negative_nb_ops () = let init_and_originate n = let* ctxt, contracts = context_init n in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* operation, rollup = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -214,11 +218,12 @@ let no_ticket op = (op, None) let test_originate_two_rollups () = let* ctxt, contracts, zk_rollup1 = init_and_originate 1 in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* operation, zk_rollup2 = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -846,6 +851,7 @@ let test_update_public_in_private () = the Protocol uses the actual [op] from the pending list as input. *) let test_update_for_another_rollup () = + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* b, contracts, zk_rollup1, pkh = init_with_pending 3 in let contract0 = Stdlib.List.hd contracts in let contract1 = Stdlib.List.nth contracts 1 in @@ -856,7 +862,7 @@ let test_update_for_another_rollup () = Op.zk_rollup_origination (I i) contract0 - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 diff --git a/src/proto_016_PtMumbai/lib_protocol/test/integration/validate/manager_operation_helpers.ml b/src/proto_016_PtMumbai/lib_protocol/test/integration/validate/manager_operation_helpers.ml index c3110e25dcc56c10e0ed6d92c2ff49ad612d726b..15cb183e891febc0318bfc978aca1c75e6a33e84 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/integration/validate/manager_operation_helpers.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/integration/validate/manager_operation_helpers.ml @@ -385,13 +385,14 @@ end) let originate_zk_rollup block rollup_account = let open Lwt_result_syntax in + let _prover_pp, public_parameters = Lazy.force ZKOperator.lazy_pp in let rollup_contract = contract_of rollup_account in let* rollup_origination, zk_rollup = Op.zk_rollup_origination ~force_reveal:true (B block) rollup_contract - ~public_parameters:ZKOperator.public_parameters + ~public_parameters ~circuits_info: (Zk_rollup.Account.SMap.of_seq @@ Plonk.SMap.to_seq ZKOperator.circuits) ~init_state:ZKOperator.init_state @@ -1163,6 +1164,7 @@ let mk_dal_publish_slot_header (oinfos : operation_req) (infos : infos) = let mk_zk_rollup_origination (oinfos : operation_req) (infos : infos) = let open Lwt_result_syntax in + let _prover_pp, public_parameters = Lazy.force ZKOperator.lazy_pp in let* op, _ = Op.zk_rollup_origination ?fee:oinfos.fee @@ -1172,7 +1174,7 @@ let mk_zk_rollup_origination (oinfos : operation_req) (infos : infos) = ?force_reveal:oinfos.force_reveal (B infos.ctxt.block) (contract_of (get_source infos)) - ~public_parameters:ZKOperator.public_parameters + ~public_parameters ~circuits_info: (Zk_rollup.Account.SMap.of_seq @@ Plonk.SMap.to_seq ZKOperator.circuits) ~init_state:ZKOperator.init_state @@ -1204,6 +1206,7 @@ let mk_zk_rollup_publish (oinfos : operation_req) (infos : infos) = let mk_zk_rollup_update (oinfos : operation_req) (infos : infos) = let open Lwt_result_syntax in let* zk_rollup = zk_rollup_of infos.ctxt.zk_rollup in + let update = Lazy.force ZKOperator.Internal_for_tests.lazy_update_data in let* op = Op.zk_rollup_update ?fee:oinfos.fee @@ -1214,7 +1217,7 @@ let mk_zk_rollup_update (oinfos : operation_req) (infos : infos) = (B infos.ctxt.block) (contract_of (get_source infos)) ~zk_rollup - ~update:ZKOperator.Internal_for_tests.update_data + ~update in return op diff --git a/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_dal_slot_proof.ml b/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_dal_slot_proof.ml index e6f95f7e5bed081c1a7f633005a122495db74147..7f5b53a5f03c26092fb8067e58c5441189d0371b 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_dal_slot_proof.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_dal_slot_proof.ml @@ -44,6 +44,7 @@ struct include Parameters let cryptobox = + Lazy.from_fun @@ fun () -> WithExceptions.Result.get_ok ~loc:__LOC__ @@ Dal_helpers.mk_cryptobox Parameters.dal_parameters.cryptobox_parameters end) diff --git a/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_zk_rollup_encoding.ml b/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_zk_rollup_encoding.ml index 83b089fb9a21b4a32988471b0023f460d307b2d8..0c283d3f29bf0bc4105515bca9b4d842a6447377 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_zk_rollup_encoding.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/pbt/test_zk_rollup_encoding.ml @@ -64,7 +64,7 @@ let gen_zkr_account = let open Gen in let open Zk_rollup_account_repr in let* state = gen_l2_state in - let public_parameters = Operator.public_parameters in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let circuits_info = SMap.of_seq (Plonk.SMap.to_seq Operator.circuits) in let* nb_ops = nat in let static = diff --git a/src/proto_016_PtMumbai/lib_protocol/test/unit/test_dal_slot_proof.ml b/src/proto_016_PtMumbai/lib_protocol/test/unit/test_dal_slot_proof.ml index ba16f47c31ca7c0dcc581a9959ded975b73616d3..dcb8f9a94dc23509017b9258c803d71a062c9379 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/unit/test_dal_slot_proof.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/unit/test_dal_slot_proof.ml @@ -46,6 +46,7 @@ struct include Parameters let cryptobox = + Lazy.from_fun @@ fun () -> WithExceptions.Result.get_ok ~loc:__LOC__ @@ Dal_helpers.mk_cryptobox Parameters.dal_parameters.cryptobox_parameters end) diff --git a/src/proto_016_PtMumbai/lib_protocol/test/unit/test_zk_rollup_storage.ml b/src/proto_016_PtMumbai/lib_protocol/test/unit/test_zk_rollup_storage.ml index 3ebb43dcec1107ec7e0e04c77fd88938449b4086..98afba3634ab2a9d4f0ff1377441622e395ea829 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/unit/test_zk_rollup_storage.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/unit/test_zk_rollup_storage.ml @@ -110,7 +110,7 @@ module Raw_context_tests = struct let open Lwt_result_syntax in let open Zk_rollup_account_repr in let* ctx, contract = initial_ctx () in - let public_parameters = Operator.public_parameters in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let state = Operator.init_state in let state_length = Array.length state in let circuits_info = SMap.of_seq @@ Plonk.SMap.to_seq Operator.circuits in diff --git a/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.ml b/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.ml index eb0c3c7dce64740e0c2d49614ce50b1e82d6744a..9aec26826fcaca4a900baef33af964db3c60683e 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.ml @@ -68,7 +68,7 @@ let derive_dal_parameters (reference : Cryptobox.parameters) ~redundancy_factor module Make (Parameters : sig val dal_parameters : Alpha_context.Constants.Parametric.dal - val cryptobox : Cryptobox.t + val cryptobox : Cryptobox.t Lazy.t end) = struct (* Some global constants. *) @@ -91,6 +91,7 @@ struct let dal_mk_polynomial_from_slot slot_data = let open Result_syntax in + let cryptobox = Lazy.force cryptobox in match Cryptobox.polynomial_from_slot cryptobox slot_data with | Ok p -> return p | Error (`Slot_wrong_size s) -> @@ -109,6 +110,7 @@ struct let dal_mk_prove_page polynomial page_id = let open Result_syntax in + let cryptobox = Lazy.force cryptobox in match Cryptobox.prove_page cryptobox polynomial page_id.P.page_index with | Ok p -> return p | Error `Page_index_out_of_range -> @@ -121,6 +123,7 @@ struct let open Result_syntax in let slot_data = Bytes.init params.slot_size fill_function in let* polynomial = dal_mk_polynomial_from_slot slot_data in + let cryptobox = Lazy.force cryptobox in let* commitment = dal_commit cryptobox polynomial in return ( slot_data, diff --git a/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.mli b/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.mli index ce6d0ac9baff78c3c939e1447c5a58c2c2df0628..1eef4b51ec663989c01f9401347d00cb81bf089a 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/dal_helpers.mli @@ -41,7 +41,7 @@ val derive_dal_parameters : module Make (P : sig val dal_parameters : Alpha_context.Constants.Parametric.dal - val cryptobox : Cryptobox.t + val cryptobox : Cryptobox.t Lazy.t end) : sig (** Some global constants. *) diff --git a/src/proto_alpha/lib_protocol/test/helpers/dummy_zk_rollup.ml b/src/proto_alpha/lib_protocol/test/helpers/dummy_zk_rollup.ml index 9370811f6d5ab3bcd14936074cb3dd6887f8ac10..68d89f2c7ea9b5536a8afc72e6cbb24866ed2984 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/dummy_zk_rollup.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/dummy_zk_rollup.ml @@ -342,7 +342,10 @@ end) : sig val circuits : [`Public | `Private | `Fee] Plonk.SMap.t (** Commitment to the circuits *) - val public_parameters : Plonk.Main_protocol.verifier_public_parameters + val lazy_pp : + (Plonk.Main_protocol.prover_public_parameters + * Plonk.Main_protocol.verifier_public_parameters) + lazy_t (** [craft_update state ~zk_rollup ?private_ops ?exit_validities public_ops] will apply first the [public_ops], then the [private_ops]. While doing so, @@ -365,7 +368,7 @@ end) : sig val private_ops : Zk_rollup.Operation.t list list - val update_data : Zk_rollup.Update.t + val lazy_update_data : Zk_rollup.Update.t lazy_t end end = struct open Protocol.Alpha_context @@ -374,9 +377,10 @@ end = struct module T = Types.P module VC = V (LibCircuit) - let srs = - let open Bls12_381_polynomial in - (Srs.generate_insecure 9 1, Srs.generate_insecure 1 1) + let lazy_srs = + lazy + (let open Bls12_381_polynomial in + (Srs.generate_insecure 9 1, Srs.generate_insecure 1 1)) let dummy_l1_dst = Hex.to_bytes_exn (`Hex "0002298c03ed7d454a101eb7022bc95f7e5f41ac78") @@ -438,11 +442,13 @@ end = struct let circuits = SMap.(add "op" `Public @@ add batch_name `Private @@ add "fee" `Fee empty) - let prover_pp, public_parameters = - Plonk.Main_protocol.setup - ~zero_knowledge:false - (SMap.map (fun (a, b, _) -> (a, b)) circuit_map) - ~srs + let lazy_pp = + lazy + (let srs = Lazy.force lazy_srs in + Plonk.Main_protocol.setup + ~zero_knowledge:false + (SMap.map (fun (a, b, _) -> (a, b)) circuit_map) + ~srs) let insert s x m = match SMap.find_opt s m with @@ -457,6 +463,7 @@ end = struct Zk_rollup.Operation.t list -> Zk_rollup.State.t * Zk_rollup.Update.t = fun s ~zk_rollup ?(private_ops = []) ?exit_validities pending -> + let prover_pp, public_parameters = Lazy.force lazy_pp in let s = of_proto_state s in let rev_inputs = SMap.empty in let exit_validities = @@ -616,15 +623,16 @@ end = struct @@ Stdlib.List.init Params.batch_size (fun i -> if i mod 2 = 0 then false_op else true_op) - let update_data = - snd - @@ craft_update - init_state - ~zk_rollup: - (Data_encoding.Binary.of_bytes_exn - Zk_rollup.Address.encoding - dummy_rollup_id) - ~private_ops - pending + let lazy_update_data = + lazy + (snd + @@ craft_update + init_state + ~zk_rollup: + (Data_encoding.Binary.of_bytes_exn + Zk_rollup.Address.encoding + dummy_rollup_id) + ~private_ops + pending) end end diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/test_zk_rollup.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_zk_rollup.ml index ad1c56be5850d377737021d3e32e2598a0520c10..87c9deb1be180623f485d9c6738f79b81b2e6fb0 100644 --- a/src/proto_alpha/lib_protocol/test/integration/operations/test_zk_rollup.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_zk_rollup.ml @@ -78,6 +78,7 @@ let check_proto_error e t = check_proto_error_f (( = ) e) t (* Check that originating a ZKRU fails when the feature flag is disabled. *) let test_disable_feature_flag () = let open Lwt_result_syntax in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* b, contract = Context.init_with_constants1 { @@ -91,7 +92,7 @@ let test_disable_feature_flag () = Op.zk_rollup_origination (I i) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -122,6 +123,7 @@ let test_origination_fees () = let* ctxt, contracts = context_init 1 in let* constants = Context.get_constants (B ctxt) in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let expected_size = (* TODO: create ZK constant *) let origination_size = constants.parametric.tx_rollup.origination_size in @@ -130,7 +132,7 @@ let test_origination_fees () = { static = { - public_parameters = Operator.public_parameters; + public_parameters; state_length = 1; circuits_info = of_plonk_smap Operator.circuits; nb_ops = 1; @@ -155,7 +157,7 @@ let test_origination_fees () = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -174,11 +176,12 @@ let test_origination_negative_nb_ops () = let open Lwt_result_syntax in let* ctxt, contracts = context_init 1 in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* operation, _rollup = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:(-1) @@ -198,11 +201,12 @@ let init_and_originate n = let open Lwt_result_syntax in let* ctxt, contracts = context_init n in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* operation, rollup = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -218,11 +222,12 @@ let test_originate_two_rollups () = let open Lwt_result_syntax in let* ctxt, contracts, zk_rollup1 = init_and_originate 1 in let contract = Stdlib.List.hd contracts in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* operation, zk_rollup2 = Op.zk_rollup_origination (B ctxt) contract - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 @@ -859,6 +864,7 @@ let test_update_public_in_private () = *) let test_update_for_another_rollup () = let open Lwt_result_syntax in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let* b, contracts, zk_rollup1, pkh = init_with_pending 3 in let contract0 = Stdlib.List.hd contracts in let contract1 = Stdlib.List.nth contracts 1 in @@ -869,7 +875,7 @@ let test_update_for_another_rollup () = Op.zk_rollup_origination (I i) contract0 - ~public_parameters:Operator.public_parameters + ~public_parameters ~circuits_info:(of_plonk_smap Operator.circuits) ~init_state:Operator.init_state ~nb_ops:1 diff --git a/src/proto_alpha/lib_protocol/test/integration/validate/manager_operation_helpers.ml b/src/proto_alpha/lib_protocol/test/integration/validate/manager_operation_helpers.ml index 07b83b17f42d97c6a92476fb59de2accf60a9c2e..105689d7493708195aec0cf5e0ae9668dcd24212 100644 --- a/src/proto_alpha/lib_protocol/test/integration/validate/manager_operation_helpers.ml +++ b/src/proto_alpha/lib_protocol/test/integration/validate/manager_operation_helpers.ml @@ -350,12 +350,13 @@ end) let originate_zk_rollup block rollup_account = let open Lwt_result_syntax in let rollup_contract = contract_of rollup_account in + let _prover_pp, public_parameters = Lazy.force ZKOperator.lazy_pp in let* rollup_origination, zk_rollup = Op.zk_rollup_origination ~force_reveal:true (B block) rollup_contract - ~public_parameters:ZKOperator.public_parameters + ~public_parameters ~circuits_info: (Zk_rollup.Account.SMap.of_seq @@ Plonk.SMap.to_seq ZKOperator.circuits) ~init_state:ZKOperator.init_state @@ -942,6 +943,7 @@ let mk_dal_publish_slot_header (oinfos : operation_req) (infos : infos) = let mk_zk_rollup_origination (oinfos : operation_req) (infos : infos) = let open Lwt_result_syntax in + let _prover_pp, public_parameters = Lazy.force ZKOperator.lazy_pp in let* op, _ = Op.zk_rollup_origination ?fee:oinfos.fee @@ -951,7 +953,7 @@ let mk_zk_rollup_origination (oinfos : operation_req) (infos : infos) = ?force_reveal:oinfos.force_reveal (B infos.ctxt.block) (contract_of (get_source infos)) - ~public_parameters:ZKOperator.public_parameters + ~public_parameters ~circuits_info: (Zk_rollup.Account.SMap.of_seq @@ Plonk.SMap.to_seq ZKOperator.circuits) ~init_state:ZKOperator.init_state @@ -983,6 +985,7 @@ let mk_zk_rollup_publish (oinfos : operation_req) (infos : infos) = let mk_zk_rollup_update (oinfos : operation_req) (infos : infos) = let open Lwt_result_syntax in let* zk_rollup = zk_rollup_of infos.ctxt.zk_rollup in + let update = Lazy.force ZKOperator.Internal_for_tests.lazy_update_data in let* op = Op.zk_rollup_update ?fee:oinfos.fee @@ -993,7 +996,7 @@ let mk_zk_rollup_update (oinfos : operation_req) (infos : infos) = (B infos.ctxt.block) (contract_of (get_source infos)) ~zk_rollup - ~update:ZKOperator.Internal_for_tests.update_data + ~update in return op diff --git a/src/proto_alpha/lib_protocol/test/pbt/test_dal_slot_proof.ml b/src/proto_alpha/lib_protocol/test/pbt/test_dal_slot_proof.ml index 4e8f8a12dea0f20bbdc9de88fce08be25dd20a37..1e08fa7cbd8330543a580d4985ba522d3577d046 100644 --- a/src/proto_alpha/lib_protocol/test/pbt/test_dal_slot_proof.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_dal_slot_proof.ml @@ -44,6 +44,7 @@ struct include Parameters let cryptobox = + Lazy.from_fun @@ fun () -> WithExceptions.Result.get_ok ~loc:__LOC__ @@ Dal_helpers.mk_cryptobox Parameters.dal_parameters.cryptobox_parameters end @@ -78,7 +79,8 @@ struct (fun _i -> 'x') in let* polynomial = dal_mk_polynomial_from_slot slot_data in - let* commitment = dal_commit ARG.cryptobox polynomial in + let cryptobox = Lazy.force ARG.cryptobox in + let* commitment = dal_commit cryptobox polynomial in let add_slot level sindex (cell, cache, slots_info) skip_slot = let index = Option.value_f diff --git a/src/proto_alpha/lib_protocol/test/pbt/test_zk_rollup_encoding.ml b/src/proto_alpha/lib_protocol/test/pbt/test_zk_rollup_encoding.ml index 43c128678890bc76ef744dd0f97e3bbdbfb87fa1..847494457908f6df3f062d1514599b9afad19419 100644 --- a/src/proto_alpha/lib_protocol/test/pbt/test_zk_rollup_encoding.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_zk_rollup_encoding.ml @@ -64,7 +64,7 @@ let gen_zkr_account = let open Gen in let open Zk_rollup_account_repr in let* state = gen_l2_state in - let public_parameters = Operator.public_parameters in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let circuits_info = SMap.of_seq (Plonk.SMap.to_seq Operator.circuits) in let* nb_ops = nat in let static = diff --git a/src/proto_alpha/lib_protocol/test/unit/test_dal_slot_proof.ml b/src/proto_alpha/lib_protocol/test/unit/test_dal_slot_proof.ml index 54d885c5d4debb77a5813908b41bc514e51c040e..deb8e113d4cc53e7cb4b02d44e79d4a631e159f4 100644 --- a/src/proto_alpha/lib_protocol/test/unit/test_dal_slot_proof.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_dal_slot_proof.ml @@ -46,6 +46,7 @@ struct include Parameters let cryptobox = + Lazy.from_fun @@ fun () -> WithExceptions.Result.get_ok ~loc:__LOC__ @@ Dal_helpers.mk_cryptobox Parameters.dal_parameters.cryptobox_parameters end) diff --git a/src/proto_alpha/lib_protocol/test/unit/test_zk_rollup_storage.ml b/src/proto_alpha/lib_protocol/test/unit/test_zk_rollup_storage.ml index ed92201477849d17e050111d6687de8a45cd8c43..f42b9ebbec325c16504bd2fb289ae1fae39cb49b 100644 --- a/src/proto_alpha/lib_protocol/test/unit/test_zk_rollup_storage.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_zk_rollup_storage.ml @@ -110,7 +110,7 @@ module Raw_context_tests = struct let open Lwt_result_syntax in let open Zk_rollup_account_repr in let* ctx, contract = initial_ctx () in - let public_parameters = Operator.public_parameters in + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in let state = Operator.init_state in let state_length = Array.length state in let circuits_info = SMap.of_seq @@ Plonk.SMap.to_seq Operator.circuits in diff --git a/tezt/tests/zk_rollup.ml b/tezt/tests/zk_rollup.ml index c33a3acdf8e8da344aa24eedb0cad314a0a5cba5..94546b4d068aec84d5e45c54cd8296c51e3df13d 100644 --- a/tezt/tests/zk_rollup.ml +++ b/tezt/tests/zk_rollup.ml @@ -51,10 +51,11 @@ module MakeHelpers () = struct let () = let contents = + let _prover_pp, public_parameters = Lazy.force Operator.lazy_pp in Data_encoding.Binary.( to_string_exn Tezos_protocol_alpha.Environment.Plonk.public_parameters_encoding - Operator.public_parameters) + public_parameters) in write_file public_parameters_file ~contents