diff --git a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/reveal_installer.wasm b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/reveal_installer.wasm index a4c803d28b964925827f520ad5e47d23188391ba..d633bf08d03174d39bace478b0570b877bb269e3 100755 Binary files a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/reveal_installer.wasm and b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/reveal_installer.wasm differ diff --git a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-demo-installer.wasm b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-demo-installer.wasm new file mode 100755 index 0000000000000000000000000000000000000000..6fc1952e4c0388d97a12f9559e486e9264976803 Binary files /dev/null and b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-demo-installer.wasm differ diff --git a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel-no-sig.wasm b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel-no-sig.wasm new file mode 100755 index 0000000000000000000000000000000000000000..651e9311c2faab02200e3e07d38ec82580e50064 Binary files /dev/null and b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel-no-sig.wasm differ diff --git a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel.wasm b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel.wasm old mode 100644 new mode 100755 index c67d6bbf46747fc97bb6e61658835c100d17bf98..eda8afde22e4726e1896d5b1a5b0315984ab721d Binary files a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel.wasm and b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel.wasm differ diff --git a/src/proto_alpha/lib_sc_rollup_node/interpreter_event.ml b/src/proto_alpha/lib_sc_rollup_node/interpreter_event.ml index ffc016b9123b695c0084c840b202617a92dede29..125e3e74b0eb12e372693c8122c68378f6a16442 100644 --- a/src/proto_alpha/lib_sc_rollup_node/interpreter_event.ml +++ b/src/proto_alpha/lib_sc_rollup_node/interpreter_event.ml @@ -56,6 +56,30 @@ module Simple = struct ("message_index", Data_encoding.int31) ("message_tick", Data_encoding.int64) ("internal", Data_encoding.bool) + + let pvm_compute_step_many_begins = + declare_2 + ~section + ~name:"sc_rollup_node_pvm_compute_step_many_begins" + ~msg: + "PVM starts executing compute_step_many with params stop_at_snapshot: \ + {stop_at_snapshot} and max_steps: {max_steps}" + ~level:Debug + ("stop_at_snapshot", Data_encoding.(option bool)) + ("max_steps", Data_encoding.int64) + + let pvm_compute_step_many_ends = + declare_3 + ~section + ~name:"sc_rollup_node_pvm_compute_step_many_ends" + ~msg: + "PVM ends executing compute_step_many after {elapsed_time}, with \ + params stop_at_snapshot: {stop_at_snapshot} and max_steps: \ + {max_steps}" + ~level:Debug + ("elapsed_time", Data_encoding.float) + ("stop_at_snapshot", Data_encoding.(option bool)) + ("max_steps", Data_encoding.int64) end (** [transition_pvm inbox_level hash tick n] emits the event that a PVM @@ -73,3 +97,13 @@ let transitioned_pvm inbox_level hash tick num_messages = to the PVM. *) let intended_failure ~level ~message_index ~message_tick ~internal = Simple.(emit intended_failure (level, message_index, message_tick, internal)) + +(* This event is emitted when Interpreter is about to invoke PMV.compute_step_many *) +let pvm_compute_step_many_begins ~stop_at_snapshot ~max_steps = + Simple.(emit pvm_compute_step_many_begins (stop_at_snapshot, max_steps)) + +(* This event is emitted when an invocation of PMV.compute_step_many has finished, + and control flow has been returned to Interpreter *) +let pvm_compute_step_many_ends ~elapsed_time ~stop_at_snapshot ~max_steps = + Simple.( + emit pvm_compute_step_many_ends (elapsed_time, stop_at_snapshot, max_steps)) diff --git a/src/proto_alpha/lib_sc_rollup_node/wasm_2_0_0_pvm.ml b/src/proto_alpha/lib_sc_rollup_node/wasm_2_0_0_pvm.ml index 9a7170774a955c00d4f75580ba043640b56514cc..d0b530bc6ed8e11cb830c958a64a5891064fd540 100644 --- a/src/proto_alpha/lib_sc_rollup_node/wasm_2_0_0_pvm.ml +++ b/src/proto_alpha/lib_sc_rollup_node/wasm_2_0_0_pvm.ml @@ -130,8 +130,31 @@ module Impl : Pvm.S = struct module Backend = Make_backend (Wasm_2_0_0_proof_format.Tree) - let eval_many ~reveal_builtins ~write_debug = - Backend.compute_step_many ~reveal_builtins ~write_debug + let eval_many ~reveal_builtins ~write_debug ?stop_at_snapshot ~max_steps state + = + let open Lwt.Syntax in + let start_timestamp = Sys.time () in + let* () = + Interpreter_event.pvm_compute_step_many_begins + ~stop_at_snapshot + ~max_steps + in + let* res = + Backend.compute_step_many + ~reveal_builtins + ~write_debug + ?stop_at_snapshot + ~max_steps + state + in + let end_timestamp = Sys.time () in + let+ () = + Interpreter_event.pvm_compute_step_many_ends + ~elapsed_time:(end_timestamp -. start_timestamp) + ~stop_at_snapshot + ~max_steps + in + res end include Impl diff --git a/tezt/lib_tezos/sc_rollup_helpers.ml b/tezt/lib_tezos/sc_rollup_helpers.ml index bdf0455e55b56a972cb758732a15d351b60ace23..e22732a46515929b84cf4e69c5432ed7a8e771b3 100644 --- a/tezt/lib_tezos/sc_rollup_helpers.ml +++ b/tezt/lib_tezos/sc_rollup_helpers.ml @@ -71,12 +71,15 @@ let read_kernel ?base name : string = *) let prepare_installer_kernel ?(base_installee = - "src/proto_alpha/lib_protocol/test/integration/wasm_kernel") ~dac_node - installee = - let installer_dummy_hash = + "src/proto_alpha/lib_protocol/test/integration/wasm_kernel") + ?(installer = "reveal_installer.wasm") ?dac_member_pk ~dac_node installee = + let installer_kernel_dummy_hash = "1acaa995ef84bc24cc8bb545dd986082fbbec071ed1c3e9954abea5edc441ccd3a" in - let installer = load_kernel_file "reveal_installer.wasm" in + let installer_dac_commitee_dummy_hash = + "555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555" + in + let installer = load_kernel_file installer in let installee = load_kernel_file ~base:base_installee (installee ^ ".wasm") in let* root_hash, _ = RPC.call @@ -88,7 +91,18 @@ let prepare_installer_kernel (* Ensure reveal hash is correct length for installer. *) assert (String.length root_hash = 66) ; let installer = - replace_string (rex installer_dummy_hash) ~by:root_hash installer + replace_string (rex installer_kernel_dummy_hash) ~by:root_hash installer + in + let installer = + Option.fold + ~none:installer + ~some:(fun dm_pk -> + assert (String.length dm_pk = 96) ; + replace_string + (rex installer_dac_commitee_dummy_hash) + ~by:dm_pk + installer) + dac_member_pk in return installer diff --git a/tezt/lib_tezos/sc_rollup_helpers.mli b/tezt/lib_tezos/sc_rollup_helpers.mli index 9bd271f84ae4b045e291b2288958d617308604c5..6c1862d719c3a854b1a2f52b9ea641852738c179 100644 --- a/tezt/lib_tezos/sc_rollup_helpers.mli +++ b/tezt/lib_tezos/sc_rollup_helpers.mli @@ -43,7 +43,12 @@ val read_kernel : ?base:string -> string -> string corresponding to the installer for this specific kernel. [installee] is read from [base_installee] on the disk. *) val prepare_installer_kernel : - ?base_installee:string -> dac_node:Dac_node.t -> string -> string Lwt.t + ?base_installee:string -> + ?installer:string -> + ?dac_member_pk:string -> + dac_node:Dac_node.t -> + string -> + string Lwt.t (** [setup_l1 protocol] initializes a protocol with the given parameters, and returns the L1 node and client. *) diff --git a/tezt/lib_tezos/sc_rollup_node.ml b/tezt/lib_tezos/sc_rollup_node.ml index 6e374f9adce1a3faf17f3f213706f2efc3729d4d..0807c94ece00433b9505239b005f2922d76215bf 100644 --- a/tezt/lib_tezos/sc_rollup_node.ml +++ b/tezt/lib_tezos/sc_rollup_node.ml @@ -299,7 +299,7 @@ let make_arguments node = Some (base_dir node); ] -let do_runlike_command node arguments = +let do_runlike_command ?event_level ?event_sections_levels node arguments = if node.status <> Not_running then Test.fail "Smart contract rollup node %s is already running" node.name ; let on_terminate _status = @@ -308,18 +308,22 @@ let do_runlike_command node arguments = in let arguments = make_arguments node @ arguments in run + ?event_level + ?event_sections_levels ?runner:node.persistent_state.runner node {ready = false; level = Unknown} arguments ~on_terminate -let run node arguments = +let run ?event_level ?event_sections_levels node arguments = do_runlike_command + ?event_level + ?event_sections_levels node (["run"; "--data-dir"; node.persistent_state.data_dir] @ arguments) -let run node arguments = - let* () = run node arguments in +let run ?event_level ?event_sections_levels node arguments = + let* () = run ?event_level ?event_sections_levels node arguments in let* () = wait_for_ready node in return () diff --git a/tezt/lib_tezos/sc_rollup_node.mli b/tezt/lib_tezos/sc_rollup_node.mli index 8097f5c6b37832813ea1937e5347cfbf59dc49b3..1a4f242128a7f3378565c5f159e5908c6c7dc533 100644 --- a/tezt/lib_tezos/sc_rollup_node.mli +++ b/tezt/lib_tezos/sc_rollup_node.mli @@ -105,9 +105,16 @@ val base_dir : t -> string If no [msg] is given, the stderr is ignored.*) val check_error : ?exit_code:int -> ?msg:Base.rex -> t -> unit Lwt.t -(** [run node arguments ] launches the given smart contract rollup node - with the given arguments . *) -val run : t -> string list -> unit Lwt.t +(** [run ?event_level ?event_sections_levels node arguments ] launches the given + smart contract rollup node with the given arguments. [event_level] and + [event_sections_levels] allow to select which events we want the node to + emit (see {!Daemon}). *) +val run : + ?event_level:Daemon.Level.default_level -> + ?event_sections_levels:(string * Daemon.Level.level) list -> + t -> + string list -> + unit Lwt.t (** Wait until a node terminates and return its status. If the node is not running, make the test fail. *) diff --git a/tezt/tests/expected/tx_sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should process 60K transactions with one operation.out b/tezt/tests/expected/tx_sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should process 60K transactions with one operation.out new file mode 100644 index 0000000000000000000000000000000000000000..7934dc7c6b2d2a170b8342ef1b561de3e6ba1573 --- /dev/null +++ b/tezt/tests/expected/tx_sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should process 60K transactions with one operation.out @@ -0,0 +1,126 @@ + +./octez-client --wait none originate smart rollup from '[PUBLIC_KEY_HASH]' of kind wasm_2_0_0 of type 'pair string (ticket string)' with kernel 0061736d0100000001610e60037f7f7f017f60027f7f017f60057f7f7f7f7f017f60047f7f7f7f017f60087f7f7f7f7f7f7f7f0060017f0060037f7f7f0060057f7f7f7f7f0060000060027f7f0060067f7f7f7f7f7f017f60017f017e60047f7f7f7f0060037e7f7f017f0282010411736d6172745f726f6c6c75705f636f72650973746f72655f686173000111736d6172745f726f6c6c75705f636f72650b73746f72655f7772697465000211736d6172745f726f6c6c75705f636f72650a73746f72655f6d6f7665000311736d6172745f726f6c6c75705f636f72650f72657665616c5f707265696d616765000303373600040506070807050606090909090908000a020201050906060600060601000b0c01010700000a01010001010102060606010d0100000405017001101005030100110619037f01418080c0000b7f0041dd8cc0000b7f0041e08cc0000b073204066d656d6f727902000a6b65726e656c5f72756e00090a5f5f646174615f656e6403010b5f5f686561705f6261736503020915010041010b0f0635211826251923282b2c2d2e2f370a9d5136e80101037f23808080800041c0006b2203248080808000200341306a200110908080800020032802302104200341286a2001109080808000200341206a20002004200328022c10948080800010928080800041752104024020032802200d002003280224450d00200341186a200110908080800020032802182104200341106a200110908080800020032802142101200341086a20021090808080002003280208210520032002109080808000200341386a20002004200120052003280204109680808000109180808000200328023c410020032802381b21040b200341c0006a24808080800020040bcf0301047f23808080800041306b22082480808080000240024020022006490d00418080c080002102412b21060c010b200841186a2001200341212004200510978080800010918080800002402008280218450d0041e280c080002102411b21060c010b0240200828021c220920054b0d00200841186a20042009108d808080000240200828021822034102470d0041ab80c080002102413721060c020b2008280220210a200828021c210b024020034101460d00200841086a20012007280200200b200a108880808000200828020c2106200828020821020c020b2008200a3602142008200b360210200841186a200841106a108f80808000200828021c21030240024002402008280228220a4121470d00200520096b210a200420096a2104200241016a210920082802182105034020034121490d0220082001200920052004200a20062007108580808000200541216a21052003415f6a210320082802002202450d000b200828020421060c040b2003200a4f0d010b410021020c020b41c481c080004117200841186a41dc81c0800041ec81c0800010a780808000000b41fc81c08000412341b481c08000109f80808000000b2000200636020420002002360200200841306a2480808080000b02000b960402047f017e23808080800041d080016b2203248080808000200341e8006a41003a0000200341e0006a4200370300200341d8006a4200370300200341d0006a420037030020034200370348200341c8006a2104410121050240024002400340200341c880016a2005417f6a220620026a2d00002006108c8080800020032802c88001418280c400470d0120032d00cc80012106200341c880016a200220056a2d00002005108c8080800020032802c88001418280c400470d01200420032d00cc80012006410474723a0000200441016a2104200541026a220541c300470d000b2003413e6a2205200341c8006a41196a290000370100200341386a2204200341c8006a41136a290000370300200341106a20032d004a3a00002003410e6a41136a20042903003700002003410e6a41196a2005290100370000200320032f01483b010e200320032900532207370330200320073700192003200329004b370011200341c8006a41004180800110b9808080001a200341003602c880012003200341c880016a3602302003200141002003410e6a200341c8006a418080014104200341306a10858080800020032802002205450d01200328020421040c020b41e383c080002105412521040c010b0240200141bc82c0800041d882c08000108480808000450d0041e082c080002105412721040c010b410021050b2000200436020420002005360200200341d080016a2480808080000bc00201067f23808080800041306b22052480808080002005200436022420052003360220200541186a200541206a108e808080000240024002400240200528021c2206450d0020052802182107410021040340200620046b22034180102003418010491b220320046a22082003490d03200820064b0d0420022802002109200541106a41bc82c080001090808080002005280210210a200541086a41bc82c08000109080808000200541286a2001200a200528020c2009200720046a200310958080800010918080800002402005280228450d00200528022c450d0041c083c0800021040c030b2002200920036a36020020082104200620084b0d000b0b410021040b2000412336020420002004360200200541306a2480808080000f0b2004200841b083c0800010a080808000000b2008200641b083c08000109d80808000000bdf0201027f2380808080004180016b2200248080808000109380808000200041003b0170200041386a41ca84c080004104200041f0006a4102108a80808000200041306a41b885c0800010908080800020002802302101200041286a41b885c08000109080808000200041c0006a200041f8006a2001200028022c4100200041f0006a4102109580808000109180808000200041e8006a4200370300200041e0006a4200370300200041d8006a4200370300200041d0006a4200370300200041c8006a420037030020004200370340200041206a41ce84c0800041e000200041c0006a4130108a80808000200041186a41d885c0800010908080800020002802182101200041106a41d885c08000109080808000200041f0006a200041f8006a200120002802144100200041c0006a4130109580808000109180808000200041086a200041f8006a418884c0800010878080800020004180016a2480808080000bc20201057f23808080800041106b22052480808080000240024002402002410171450d00418080c40021060c010b024020024101762004460d00418180c40021060c010b02402004450d0041002107034002400240200720024f0d00200541086a200120076a22082d00002007108c8080800020052802082206418280c400460d01200528020c21070c050b2007200241b486c08000109b80808000000b02400240200741016a220620024f0d0020052d000c2109200541086a200841016a2d00002006108c8080800020052802082206418280c400460d01200528020c21070c050b200741016a200241c486c08000109b80808000000b200320052d000c2009410474723a0000200741026a2107200341016a21032004417f6a22040d000b0b418280c40021060b0b2000200736020420002006360200200541106a2480808080000b170041d486c08000410e418087c08000109f80808000000b8a0101017f024002400240200141bf7f6a41ff01714106490d002001419f7f6a41ff01714106490d01200141506a220341ff0171410a490d02200020023602042000200141ff01713602000f0b2000418280c4003602002000200141496a3a00040f0b2000418280c4003602002000200141a97f6a3a00040f0b2000418280c400360200200020033a00040bd20201037f0240024020020d000c010b0240024002400240024020012d000022030e020001050b2002417f6a22034104490d02200128000122024118742002410874418080fc07717220024108764180fe037120024118767272220241046a220420034b0d022002417c490d014104200441b087c0800010a080808000000b02402002417f6a22034104490d00200128000122024118742002410874418080fc07717220024108764180fe03712002411876727222024121702104200241046a220520034b0d0020040d002002417c4f0d0320002002360208200041013602002000200141056a3602040f0b20004102360200200041023b01040f0b20002002360208200041003602002000200141056a3602040f0b20004102360200200041023b01040f0b4104200541c087c0800010a080808000000b20004102360200200041056a20033a0000200020024100473a00040b0c00200020012902003703000b3e01027f20004121360210200020012802002202360200200020012802042201412170220336020c2000200120036b22013602042000200220016a3602080b0c00200020012902003703000b310002402001417f4a0d00200020014178200141764b1b360204200041013602000f0b20002001360204200041003602000b3f01017f02400240200141096a2202410c4d0d0041012102417821010c010b200241027441d087c080006a28020021020b20002001360204200020023602000b02000b0c00200120021080808080000b1200200120022003200420051081808080000b100020012002200320041082808080000b100020012002200320041083808080000b0d0020002802001a037f0c000b0b02000b4c01017f23808080800041206b2202248080808000200241013a00182002200136021420022000360210200241c888c0800036020c2002418488c08000360208200241086a108b80808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341b888c0800036020820034183808080003602242003200341206a360218200320033602282003200341046a360220200341086a2002109a80808000000b0f0020002001200210b280808000000b0f0020002001200210b380808000000be60701087f20002802102103024002400240200028020822044101460d0020034101470d010b024020034101470d00200120026a2105200041146a28020041016a2106410021072001210802400340200821032006417f6a2206450d0120032005460d020240024020032c00002209417f4c0d00200341016a2108200941ff017121090c010b20032d0001413f7121082009411f71210a02402009415f4b0d00200a4106742008722109200341026a21080c010b200841067420032d0002413f717221080240200941704f0d002008200a410c74722109200341036a21080c010b200841067420032d0003413f7172200a411274418080f00071722209418080c400460d03200341046a21080b200720036b20086a21072009418080c400470d000c020b0b20032005460d00024020032c00002208417f4a0d0020084160490d0020084170490d0020032d0002413f7141067420032d0001413f71410c747220032d0003413f7172200841ff0171411274418080f0007172418080c400460d010b024002402007450d00024020072002490d004100210320072002460d010c020b41002103200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b024020040d002000280218200120022000411c6a28020028020c118080808000000f0b2000410c6a28020021070240024020024110490d002001200210b08080800021080c010b024020020d00410021080c010b20024103712109024002402002417f6a41034f0d0041002108200121030c010b2002417c71210641002108200121030340200820032c000041bf7f4a6a20032c000141bf7f4a6a20032c000241bf7f4a6a20032c000341bf7f4a6a2108200341046a21032006417c6a22060d000b0b2009450d000340200820032c000041bf7f4a6a2108200341016a21032009417f6a22090d000b0b0240200720084d0d00200720086b22082107024002400240410020002d0020220320034103461b41037122030e03020001020b41002107200821030c010b20084101762103200841016a41017621070b200341016a21032000411c6a2802002109200041186a280200210620002802042108024003402003417f6a2203450d0120062008200928021011818080800000450d000b41010f0b410121032008418080c400460d02200620012002200928020c118080808000000d02410021030340024020072003470d0020072007490f0b200341016a210320062008200928021011818080800000450d000b2003417f6a2007490f0b2000280218200120022000411c6a28020028020c118080808000000f0b2000280218200120022000411c6a28020028020c1180808080000021030b20030b5401017f23808080800041206b2203248080808000200341146a41003602002003418488c08000360210200342013702042003200136021c200320003602182003200341186a36020020032002109a80808000000b0f0020002001200210b480808000000b110020003502004101200110b6808080000bc405010a7f23808080800041306b2203248080808000200341246a2001360200200341033a0028200342808080808004370308200320003602204100210420034100360218200341003602100240024002400240200228020822050d00200241146a2802002200450d0120022802102101200041037421062000417f6a41ffffffff017141016a21042002280200210003400240200041046a2802002207450d00200328022020002802002007200328022428020c118080808000000d040b2001280200200341086a200141046a280200118180808000000d03200141086a2101200041086a2100200641786a22060d000c020b0b2002410c6a2802002201450d00200141057421082001417f6a41ffffff3f7141016a2104200228020021004100210603400240200041046a2802002201450d00200328022020002802002001200328022428020c118080808000000d030b2003200520066a2201411c6a2d00003a00282003200141046a290200422089370308200141186a28020021092002280210210a4100210b41002107024002400240200141146a2802000e03010002010b2009410374210c41002107200a200c6a220c41046a280200418480808000470d01200c28020028020021090b410121070b2003200936021420032007360210200141106a28020021070240024002402001410c6a2802000e03010002010b20074103742109200a20096a220941046a280200418480808000470d01200928020028020021070b4101210b0b2003200736021c2003200b360218200a20012802004103746a2201280200200341086a2001280204118180808000000d02200041086a21002008200641206a2206470d000b0b0240200420022802044f0d002003280220200228020020044103746a22012802002001280204200328022428020c118080808000000d010b410021010c010b410121010b200341306a24808080800020010b0d0042daa2c7a1e1e996a5a17f0bc70201057f0240024002400240200241036a417c7122042002460d00200420026b2204200320042003491b2204450d0041002105200141ff01712106410121070340200220056a2d00002006460d042004200541016a2205470d000b2004200341786a22084b0d020c010b200341786a2108410021040b200141ff017141818284086c210502400340200220046a22072802002005732206417f73200641fffdfb776a71418081828478710d01200741046a2802002005732206417f73200641fffdfb776a71418081828478710d01200441086a220420084d0d000b0b200420034d0d002004200341948bc08000109c80808000000b41002107024020042003460d00200141ff0171210503400240200220046a2d00002005470d0020042105410121070c030b2003200441016a2204470d000b0b200321050b20002005360204200020073602000b1400200120002802002000280204109e808080000b180020002802002001200028020428020c118180808000000b930101017f23808080800041c0006b22052480808080002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a4185808080003602002005420237021c200541dc88c0800036021820054186808080003602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004109a80808000000bef03010b7f23808080800041306b22032480808080002003410a3602282003428a808080103703202003200236021c410021042003410036021820032002360214200320013602102003200236020c2003410036020820002802042105200028020021062000280208210741002108410021090240034002400240200941ff01710d000240200820024b0d000340200120086a210a02400240200220086b220b4108490d002003410a200a200b10a480808000200328020421002003280200210a0c010b410021000240200b0d004100210a0c010b03400240200a20006a2d0000410a470d004101210a0c020b200b200041016a2200470d000b4100210a200b21000b0240200a4101460d00200221080c020b0240200820006a220041016a2208450d00200820024b0d00200120006a2d0000410a470d00410021092008210c200821000c040b200820024d0d000b0b410121092004210c2002210020042002470d010b410021000c020b0240024020072d0000450d002006418489c080004104200528020c118080808000000d010b200120046a210b200020046b210a4100210d024020002004460d00200a200b6a417f6a2d0000410a46210d0b2007200d3a0000200c21042006200b200a200528020c11808080800000450d010b0b410121000b200341306a24808080800020000b920302057f027e23808080800041c0006b22032480808080000240024020002d0008450d0020002802042104410121050c010b2000280204210402402000280200220628020022074104710d00410121052006280218418a89c08000418e89c0800020041b4102410120041b2006411c6a28020028020c118080808000000d0120012006200228020c1181808080000021050c010b024020040d0002402006280218418c89c0800041022006411c6a28020028020c11808080800000450d0041012105410021040c020b200628020021070b41012105200341013a0017200341346a41ec88c0800036020020032007360218200320062902183703082003200341176a3602102006290208210820062902102109200320062d00203a00382003200628020436021c20032009370328200320083703202003200341086a3602302001200341186a200228020c118180808000000d002003280230418889c080004102200328023428020c1180808080000021050b200020053a00082000200441016a360204200341c0006a24808080800020000bd60601077f024002402001450d00412b418080c4002000280200220641017122011b2107200120056a21080c010b200541016a210820002802002106412d21070b0240024020064104710d00410021020c010b0240024020034110490d002002200310b08080800021090c010b024020030d00410021090c010b2003410371210a024002402003417f6a41034f0d0041002109200221010c010b2003417c71210b41002109200221010340200920012c000041bf7f4a6a20012c000141bf7f4a6a20012c000241bf7f4a6a20012c000341bf7f4a6a2109200141046a2101200b417c6a220b0d000b0b200a450d000340200920012c000041bf7f4a6a2109200141016a2101200a417f6a220a0d000b0b200920086a21080b0240024020002802080d0041012101200041186a28020022092000411c6a280200220020072002200310b1808080000d01200920042005200028020c118080808000000f0b024002400240024002402000410c6a280200220b20084d0d0020064108710d04200b20086b22092108410120002d0020220120014103461b41037122010e03030102030b41012101200041186a28020022092000411c6a280200220020072002200310b1808080000d04200920042005200028020c118080808000000f0b41002108200921010c010b20094101762101200941016a41017621080b200141016a21012000411c6a280200210a200041186a280200210b20002802042109024003402001417f6a2201450d01200b2009200a28021011818080800000450d000b41010f0b410121012009418080c400460d01200b200a20072002200310b1808080000d01200b20042005200a28020c118080808000000d014100210102400340024020082001470d00200821010c020b200141016a2101200b2009200a28021011818080800000450d000b2001417f6a21010b200120084921010c010b200028020421062000413036020420002d0020210c41012101200041013a0020200041186a28020022092000411c6a280200220a20072002200310b1808080000d00200b20086b41016a2101024003402001417f6a2201450d0120094130200a28021011818080800000450d000b41010f0b41012101200920042005200a28020c118080808000000d002000200c3a00202000200636020441000f0b20010b860201017f23808080800041106b22022480808080002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110a8808080002101200241106a24808080800020010b7101017f23808080800041206b220224808080800020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d88ac08000200241086a10a2808080002101200241206a24808080800020010b110020002802002001200210a8808080000b8d0201017f23808080800041106b2202248080808000200028020021002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110a8808080002101200241106a24808080800020010b7401017f23808080800041206b220224808080800020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d88ac08000200241086a10a2808080002101200241206a24808080800020010bfc0601097f02400240200041036a417c71220220006b220320014b0d00200341044b0d00200120036b22044104490d00200441037121054100210641002101024020022000460d00200341037121070240024020022000417f736a41034f0d0041002101200021020c010b2003417c71210841002101200021020340200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a21022008417c6a22080d000b0b2007450d000340200120022c000041bf7f4a6a2101200241016a21022007417f6a22070d000b0b200020036a210002402005450d0020002004417c716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21070340200021062003450d02200341c001200341c001491b220441037121052004410274210902400240200441fc0171220a0d00410021020c010b2006200a4102746a2108410021022006210003402000450d012000410c6a2802002201417f73410776200141067672418182840871200041086a2802002201417f73410776200141067672418182840871200041046a2802002201417f7341077620014106767241818284087120002802002201417f7341077620014106767241818284087120026a6a6a6a2102200041106a22002008470d000b0b200320046b2103200620096a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620076a21072005450d000b0240024020060d00410021000c010b2006200a4102746a22022802002200417f73410776200041067672418182840871210020054101460d0020022802042201417f7341077620014106767241818284087120006a210020054102460d0020022802082202417f7341077620024106767241818284087120006a21000b200041087641ff811c71200041ff81fc07716a418180046c41107620076a0f0b024020010d0041000f0b20014103712102024002402001417f6a41034f0d00410021070c010b2001417c712101410021070340200720002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2107200041046a21002001417c6a22010d000b0b2002450d000340200720002c000041bf7f4a6a2107200041016a21002002417f6a22020d000b0b20070b4a01017f0240024002402002418080c400460d0041012105200020022001280210118180808000000d010b20030d01410021050b20050f0b200020032004200128020c118080808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341d88bc0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a2002109a80808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341f88bc0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a2002109a80808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341ac8cc0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a2002109a80808000000b920201037f23808080800041206b22022480808080002002200036020c2002200128021841cc8cc0800041112001411c6a28020028020c118080808000003a001820022001360210200241003a001920024100360214200241106a2002410c6a41bc8cc0800010a980808000210320022d00182101024020022802142204450d00200141ff017121004101210120000d0020032802002100024020044101470d0020022d001941ff0171450d0020002d00004104710d00410121012000280218418f89c0800041012000411c6a28020028020c118080808000000d010b2000280218418488c0800041012000411c6a28020028020c1180808080000021010b200241206a248080808000200141ff01714100470be90203027f017e037f23808080800041306b2203248080808000412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce008022054290ce007e7da7220741ffff037141e4006e2208410174419089c080006a2f00003b00002006417e6a2007200841e4006c6b41ffff0371410174419089c080006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004d0d00200341096a2004417e6a22046a2005a72206200641ffff037141e4006e220641e4006c6b41ffff0371410174419089c080006a2f00003b00000b024002402006410a490d00200341096a2004417e6a22046a2006410174419089c080006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b20022001418488c080004100200341096a20046a412720046b10aa808080002104200341306a24808080800020040b1200200141f08ac080004102109e808080000bb50101037f024002402002410f4b0d00200021030c010b2000410020006b41037122046a210502402004450d00200021030340200320013a0000200341016a22032005490d000b0b2005200220046b2204417c7122026a2103024020024101480d00200141ff017141818284086c2102034020052002360200200541046a22052003490d000b0b200441037121020b02402002450d00200320026a21050340200320013a0000200341016a22032005490d000b0b20000b0e0020002001200210b8808080000b0be70c0100418080c0000bdd0c44414320707265696d616765207472656520636f6e7461696e7320746f6f206d616e79206c6576656c732e556e61626c6520746f206465636f64652044414320706167653a204465636f646520696e746f20536c69636550616765206661696c65644661696c656420746f20726574726965766520707265696d6167652f55736572732f7076613730312f6b65726e656c2f74657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e727300007d00100035000000130100001f00000047756172616e7465656420746f2062652065786163742e00010000000000000001000000020000007d00100035000000f50000001a000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28292f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d00001f0110001b0000002f6b65726e656c2f626f6f742e7761736d00000044011000110000004641494c454420746f20696e7374616c6c206b65726e656c20696e204b45524e454c5f50415448696e7374616c6c65725f6b65726e656c2f7372632f72657665616c5f696e7374616c6c65722e7273008701100028000000490000001f0000004661696c656420746f207772697465206b65726e656c20636f6e74656e742070616765524f4f545f505245494d4147455f48415348206d7573742062652076616c6964204845582e303065343761326261613837646430313361623365643439353038653437613965353030633732623235616532333632313038343237366337366431366138633939303030306237613532666136623632383661356332386664646232653730343137356135663035663065363734346533336639383861383438626337356233323433386363633862636464336630313862383835333261666532323330616233373439662f6b65726e656c2f6964ae0210000a0000002f6b65726e656c2f6461632e636f6d6d69747465652f3000c0021000170000002f55736572732f7076613730312f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6865782d302e342e332f7372632f6c69622e72730000e0021000520000004301000015000000e00210005200000043010000350000006578706c696369742070616e6963696e7374616c6c65725f6b65726e656c2f7372632f6c69622e7273000000620310001b0000008a0000000500000074657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e72739003100020000000d800000015000000900310002000000007010000150000000100000001000000010000000100000001000000010000000100000001000000010000000000000000000000000000000000000029696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200005041000200000002504100012000000070000000000000001000000080000003a20000004041000000000005804100002000000070000000c00000004000000090000000a0000000b000000202020202c0a2c20280a282c30303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390700000004000000040000000c0000000d0000000e00000028296c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300007205100020000000680000002700000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820a405100012000000b60510002200000072616e676520656e6420696e64657820e805100010000000b605100022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200008061000160000001e0610000d0000000700000004000000040000000f00000054727946726f6d536c6963654572726f72 --burn-cap 9999999 +Node is bootstrapped. +Estimated gas: 2748.451 units (will add 100 for safety) +Estimated storage: 6558 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is '[OPERATION_HASH]' +NOT waiting for the operation to be included. +Use command + octez-client wait for [OPERATION_HASH] to be included --confirmations 1 --branch [BLOCK_HASH] +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: [PUBLIC_KEY_HASH] + Fee to the baker: ꜩ0.013103 + Expected counter: 1 + Gas limit: 2849 + Storage limit: 6578 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.013103 + payload fees(the block proposer) ....... +ꜩ0.013103 + Smart rollup origination: + Kind: wasm_2_0_0 + Parameter type: (pair string (ticket string)) + Kernel Blake2B hash: '5ff52be3f8faf3e23c9ef6bd0e2e4f8519cd6781e1f4a6b113913a030350df56' + This smart rollup origination was successfully applied + Consumed gas: 2748.451 + Storage size: 6558 bytes + Address: [SMART_ROLLUP_HASH] + Genesis commitment hash: [SC_ROLLUP_COMMITMENT_HASH] + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ1.6395 + storage fees ........................... +ꜩ1.6395 + + +./octez-client rpc get '/chains/main/blocks/head/context/smart_rollups/smart_rollup/[SMART_ROLLUP_HASH]/genesis_info' +{ "level": 2, + "commitment_hash": "[SC_ROLLUP_COMMITMENT_HASH]" } + +./octez-smart-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-client --wait none transfer 0 from bootstrap1 to '[CONTRACT_HASH]' --burn-cap 1000 --arg 'Pair (Pair "[SMART_ROLLUP_HASH]" "[TX_ROLLUP_PUBLIC_KEY_HASH]") (Pair 60001 "Hello, Ticket!")' +Node is bootstrapped. +Estimated gas: 4057.846 units (will add 100 for safety) +Estimated storage: 68 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is '[OPERATION_HASH]' +NOT waiting for the operation to be included. +Use command + octez-client wait for [OPERATION_HASH] to be included --confirmations 1 --branch [BLOCK_HASH] +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: [PUBLIC_KEY_HASH] + Fee to the baker: ꜩ0.00078 + Expected counter: 3 + Gas limit: 4158 + Storage limit: 88 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.00078 + payload fees(the block proposer) ....... +ꜩ0.00078 + Transaction: + Amount: ꜩ0 + From: [PUBLIC_KEY_HASH] + To: [CONTRACT_HASH] + Parameter: (Pair (Pair "[SMART_ROLLUP_HASH]" "[TX_ROLLUP_PUBLIC_KEY_HASH]") + (Pair 60001 "Hello, Ticket!")) + This transaction was successfully applied + Updated storage: Unit + Storage size: 205 bytes + Paid storage size diff: 68 bytes + Consumed gas: 3050.884 + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.017 + storage fees ........................... +ꜩ0.017 + Internal operations: + Internal Transaction: + Amount: ꜩ0 + From: [CONTRACT_HASH] + To: [SMART_ROLLUP_HASH] + Parameter: (Pair "[TX_ROLLUP_PUBLIC_KEY_HASH]" + (Pair [MICHELINE_KT1_BYTES] (Pair "Hello, Ticket!" 60001))) + This transaction was successfully applied + Consumed gas: 1006.962 + Ticket updates: + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Hello, Ticket!" + Account updates: + [SMART_ROLLUP_HASH] ... +60001 + + +./octez-smart-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-smart-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 +Node is bootstrapped. +Estimated gas: 1002.738 units (will add 100 for safety) +Estimated storage: no bytes added +Operation successfully injected in the node. +Operation hash is '[OPERATION_HASH]' +NOT waiting for the operation to be included. +Use command + octez-client wait for [OPERATION_HASH] to be included --confirmations 1 --branch [BLOCK_HASH] +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: [PUBLIC_KEY_HASH] + Fee to the baker: ꜩ0.000474 + Expected counter: 1 + Gas limit: 1103 + Storage limit: 0 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.000474 + payload fees(the block proposer) ....... +ꜩ0.000474 + Smart rollup messages submission: + This smart rollup messages submission was successfully applied + Consumed gas: 1002.738 + + +./octez-smart-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" diff --git a/tezt/tests/expected/tx_sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out b/tezt/tests/expected/tx_sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out index 20e00bc0fe3326eb9caaddfa808a5a1366535d7c..9a160472e5584fc08b118206baa052bf3ae656c8 100644 --- a/tezt/tests/expected/tx_sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out +++ b/tezt/tests/expected/tx_sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out @@ -1,5 +1,5 @@ -./octez-client --wait none originate smart rollup from '[PUBLIC_KEY_HASH]' of kind wasm_2_0_0 of type 'pair string (ticket string)' with kernel 0061736d01000000016a0f60037f7f7f017f60027f7f017f60027f7f0060057f7f7f7f7f017f60047f7f7f7f017f60017f0060087f7f7f7f7f7f7f7f0060000060037f7f7f0060057f7f7f7f7f0060067f7f7f7f7f7f017f60017f017e60017f017f60077f7f7f7f7f7f7f017f60037e7f7f017f02a2010511736d6172745f726f6c6c75705f636f72650b77726974655f6465627567000211736d6172745f726f6c6c75705f636f72650973746f72655f686173000111736d6172745f726f6c6c75705f636f72650b73746f72655f7772697465000311736d6172745f726f6c6c75705f636f72650a73746f72655f6d6f7665000411736d6172745f726f6c6c75705f636f72650f72657665616c5f707265696d6167650004033a3905060700050809080802020702000a03030b0b02010508080800080801020001010b080c0d0101090009000a0101000101010401010e0100000405017001121205030100110619037f01418080c0000b7f0041bba0c0000b7f0041c0a0c0000b073204066d656d6f727902000a6b65726e656c5f72756e00070a5f5f646174615f656e6403010b5f5f686561705f6261736503020917010041010b11053921192b2a24381a262d31323334353b0ae66b3902000bd00303017f017e027f23808080800041306b22082480808080000240024020022006490d0041e080c080002102412b21060c010b0240200120034121200420051095808080001096808080002209a7450d00418b81c080002102411b21060c010b024002402009422088a7220a20054b0d00200841186a2004200a108d80808000024020082d00180d00200841246a2802002103200841206a280200210b02400240200828021c0d00200820012007280200200b2003108b80808000200828020022020d010c040b200820033602142008200b360210200841186a200841106a108f80808000200828021c210302402008280228220b4121470d002005200a6b210b2004200a6a2104200241016a210a20082802182105034020034121490d05200841086a2001200a20052004200b200620071086808080002003415f6a2103200541216a210520082802082202450d000b200828020c21060c050b2003200b490d03418080c080004117200841186a41e081c0800041c080c0800010ac80808000000b200828020421060c030b4137210641a681c0800021020c020b41f081c08000412341d080c08000109f80808000000b410021020b2000200636020420002002360200200841306a2480808080000b7801037f23808080800041106b22002480808080001090808080002000200041086a419382c08000108a808080000240024020002802002201450d002000280204210241e682c080004114109180808000200120021091808080000c010b41d582c0800041111091808080000b200041106a2480808080000bde0102037f017e23808080800041306b2203248080808000200341286a200110988080800020032802282104200341206a20011098808080004175210502402000200420032802241092808080001097808080002206428080808010540d002006a70d00200341186a200110988080800020032802182105200341106a200110988080800020032802142101200341086a20021098808080002003280208210420032002109880808000200020052001200420032802041094808080001096808080002206422088a741002006a71b21050b200341306a24808080800020050b170041fa82c08000410e41a483c08000109f80808000000b8e0402057f017e23808080800041e080016b2203248080808000200341f0006a41003a0000200341e8006a4200370300200341e0006a4200370300200341d8006a420037030020034200370350200341d0006a21044101210502400240024002400340200341d080016a200220056a2206417f6a2d00002005417f6a108c8080800020032d00d080010d0120032d00d180012107200341d080016a20062d00002005108c8080800020032d00d080010d01200420032d00d180012007410474723a0000200441016a2104200541026a220541c300470d000b200341c6006a2205200341d0006a41196a290000370100200341c0006a2204200341d0006a41136a290000370300200341186a20032d00523a0000200341166a41136a2004290300370000200341166a41196a2005290100370000200320032f01503b01162003200329005b22083703382003200837002120032003290053370019200341d0006a41004180800110bc808080001a200341003602d080012003200341d080016a360238200341086a20014100200341166a200341d0006a418080014104200341386a108680808000200328020822050d01200141f883c08000419484c08000108880808000450d0241272104419c84c0800021050c030b4125210441f784c0800021050c020b200328020c21040c010b410021050b2000200436020420002005360200200341e080016a2480808080000bbb0202067f017e23808080800041206b22052480808080002005200436021c20052003360218200541106a200541186a108e80808000024002400240024020052802142206450d0020052802102107410021030340200620036b22044180102004418010491b220420036a22082004490d03200820064b0d0420022802002109200541086a41f883c080001098808080002005280208210a200541f883c0800010988080800002402001200a20052802042009200720036a2004109380808000109680808000220b428080808010540d00200ba7450d0041d484c0800021030c030b2002200920046a36020020082103200620084b0d000b0b410021030b2000412336020420002003360200200541206a2480808080000f0b2003200841c484c0800010a080808000000b2008200641c484c08000109d80808000000b850101017f0240024002400240200141bf7f6a41ff01714106490d002001419f7f6a41ff01714106490d01200141506a220341ff0171410a490d02200041086a2002360200200041046a200141ff0171360200200041013a00000f0b2000200141496a3a00010c020b2000200141a97f6a3a00010c010b200020033a00010b200041003a00000be90201037f02400240024020020d000c010b0240024002400240024020012d000022030e020001050b2002417f6a22034104490d02200128000122024118742002410874418080fc07717220024108764180fe037120024118767272220241046a220420034b0d022002417c490d014104200441bc85c0800010a080808000000b02402002417f6a22034104490d00200128000122024118742002410874418080fc07717220024108764180fe03712002411876727222024121702104200241046a220520034b0d0020040d002002417c4f0d032000410c6a2002360200200041086a200141056a360200200041046a4101360200200041003a00000f0b200041023a00010c040b2000410c6a2002360200200041086a200141056a360200200041046a4100360200200041003a00000f0b200041023a00010c020b4104200541cc85c0800010a080808000000b200041026a20033a0000200020024100473a00010b200041013a00000b0c00200020012902003703000b4101027f200041213602102000200128020022023602002000410c6a2001280204220141217022033602002000200120036b22013602042000200220016a3602080b02000b0c00200020011080808080000b0c00200120021081808080000b1200200120022003200420051082808080000b100020012002200320041083808080000b100020012002200320041084808080000b170020004178200041764a1bad4220862000411f76ad840bc60101027e4280808080807f2101420021020240024002400240024002400240024002400240024002400240200041096a0e0d0708060503040201000c090a0b080b42808080807021010c070b42808080806021010c060b42808080805021010c050b4280808080b07f21010c040b42808080804021010c030b4280808080a07f21010c020b4280808080907f21010c010b4280808080f07e21010b42012001840f0b4200428080808010840f0b4200428080808020840f0b42808080803021020b42002002840b0c00200020012902003703000b0d0020002802001a037f0c000b0b02000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341d886c0800036020820034183808080003602242003200341206a360218200320033602282003200341046a360220200341086a200210a280808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341d88ac0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a200210a280808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341f88ac0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a200210a280808000000bd80701067f20002802102103024002400240024002400240200028020822044101460d0020034101470d010b20034101470d03200120026a2105200041146a28020022060d0141002107200121080c020b2000280218200120022000411c6a28020028020c1180808080000021030c030b41002107200121080340200822032005460d020240024020032c00002208417f4c0d00200341016a21080c010b0240200841604f0d00200341026a21080c010b0240200841704f0d00200341036a21080c010b20032d0002413f7141067420032d0001413f71410c747220032d0003413f7172200841ff0171411274418080f0007172418080c400460d03200341046a21080b200720036b20086a21072006417f6a22060d000b0b20082005460d00024020082c00002203417f4a0d0020034160490d0020034170490d0020082d0002413f7141067420082d0001413f71410c747220082d0003413f7172200341ff0171411274418080f0007172418080c400460d010b02400240024020070d00410021080c010b024020072002490d00410021032002210820072002460d010c020b4100210320072108200120076a2c00004140480d010b20082107200121030b2007200220031b21022003200120031b21010b024020040d002000280218200120022000411c6a28020028020c118080808000000f0b2000410c6a28020021050240024020024110490d002001200210b68080800021080c010b024020020d00410021080c010b20024103712107024002402002417f6a41034f0d0041002108200121030c010b2002417c71210641002108200121030340200820032c000041bf7f4a6a200341016a2c000041bf7f4a6a200341026a2c000041bf7f4a6a200341036a2c000041bf7f4a6a2108200341046a21032006417c6a22060d000b0b2007450d000340200820032c000041bf7f4a6a2108200341016a21032007417f6a22070d000b0b0240200520084d0d0041002103200520086b22072106024002400240410020002d0020220820084103461b4103710e03020001020b41002106200721030c010b20074101762103200741016a41017621060b200341016a21032000411c6a28020021072000280204210820002802182100024003402003417f6a2203450d0120002008200728021011818080800000450d000b41010f0b410121032008418080c400460d01200020012002200728020c118080808000000d01410021030340024020062003470d0020062006490f0b200341016a210320002008200728021011818080800000450d000b2003417f6a2006490f0b2000280218200120022000411c6a28020028020c118080808000000f0b20030b5401017f23808080800041206b2203248080808000200341146a4100360200200341dc85c08000360210200342013702042003200136021c200320003602182003200341186a3602002003200210a280808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341ac8bc0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a200210a280808000000b110020003502004101200110ba808080000b4c01017f23808080800041206b2202248080808000200241013a001820022001360214200220003602102002419486c0800036020c200241dc85c08000360208200241086a108980808000000bbd05010a7f23808080800041306b2203248080808000200341246a2001360200200341033a0028200342808080808004370308200320003602204100210420034100360218200341003602100240024002400240200228020822050d00200241146a2802002206450d0120022802002101200228021021002006417f6a41ffffffff017141016a2204210603400240200141046a2802002207450d00200328022020012802002007200328022428020c118080808000000d040b2000280200200341086a200041046a280200118180808000000d03200041086a2100200141086a21012006417f6a22060d000c020b0b2002410c6a2802002200450d00200041057421082000417f6a41ffffff3f7141016a2104200228020021014100210603400240200141046a2802002200450d00200328022020012802002000200328022428020c118080808000000d030b2003200520066a2200411c6a2d00003a00282003200041046a290200422089370308200041186a28020021092002280210210a4100210b41002107024002400240200041146a2802000e03010002010b2009410374210c41002107200a200c6a220c280204418480808000470d01200c28020028020021090b410121070b2003200936021420032007360210200041106a28020021070240024002402000410c6a2802000e03010002010b20074103742109200a20096a2209280204418480808000470d01200928020028020021070b4101210b0b2003200736021c2003200b360218200a20002802004103746a2200280200200341086a2000280204118180808000000d02200141086a21012008200641206a2206470d000b0b4100210020042002280204492201450d012003280220200228020020044103746a410020011b22012802002001280204200328022428020c11808080800000450d010b410121000b200341306a24808080800020000b8d0101047f23808080800041206b22022480808080004101210302402000200110a5808080000d002001411c6a2802002104200128021821052002411c6a4100360200200241dc85c080003602182002420137020c200241e085c0800036020820052004200241086a10a3808080000d00200041046a200110a58080800021030b200241206a24808080800020030bec0201037f2380808080004180016b220224808080800002400240024002400240200128020022034110710d0020034120710d0120003502004101200110ba8080800021000c040b20002802002100410021030340200220036a41ff006a413041d7002000410f712204410a491b20046a3a00002003417f6a21032000410f4b21042000410476210020040d000b20034180016a22004181014f0d0120014101418c88c080004102200220036a4180016a410020036b10b08080800021000c030b20002802002100410021030340200220036a41ff006a413041372000410f712204410a491b20046a3a00002003417f6a21032000410f4b21042000410476210020040d000b20034180016a22004181014f0d0120014101418c88c080004102200220036a4180016a410020036b10b08080800021000c020b200041800141fc87c08000109c80808000000b200041800141fc87c08000109c80808000000b20024180016a24808080800020000b0c004281b8aa93f5f3e5ec140bd10302027f017e41f400210341022104024002400240024002400240024002400240200141776a0e1f08020505010505050505050505050505050505050505050505030505050504000b41dc002103200141dc00460d050c040b41f20021030c040b41ee0021030c030b20024180800471450d01412221030c020b200241800271450d00412721030c010b02402002410171450d00200110a880808000450d00200141017267410276410773ad4280808080d0008421050c020b0240024002400240200141808004490d002001418080084f0d01200141af93c08000412a418394c0800041c00141c395c0800041b60310a9808080000d030c020b200141908ec08000412841e08ec0800041a002418091c0800041af0210a980808000450d010c020b200141e0ffff007141e0cd0a460d00200141c091756a41784b0d00200141feffff0071419ef00a460d00200141d0e2746a41714b0d002001418090746a41e0674b0d002001418080746a419d744b0d0020014180fe476a41caa4544b0d00200141f08338490d010b200141017267410276410773ad4280808080d0008421050c020b41012104200121030b0c010b41032104200121030b2000200336020420002004360200200041086a20053702000b810301057f2000410b74210141002102412021034120210402400240034002400240200341017620026a220341027441f899c080006a280200410b7422052001490d0020052001460d03200321040c010b200341016a21020b200420026b2103200420024b0d000c020b0b200341016a21020b0240024002402002411f4b0d002002410274210341c305210402402002411f460d00200341fc99c080006a28020041157621040b4100210102402002417f6a220520024b0d00200541204f0d02200541027441f899c080006a28020041ffffff007121010b02402004200341f899c080006a2802004115762202417f736a450d00200020016b2101200241c305200241c3054b1b21032004417f6a210541002104034020032002460d042004200241f89ac080006a2d00006a220420014b0d012005200241016a2202470d000b200521020b20024101710f0b2002412041a499c08000109b80808000000b2005412041c499c08000109b80808000000b200341c30541b499c08000109b80808000000b880301077f41012107024002402002450d00200120024101746a210820004180fe037141087621094100210a200041ff0171210b02400340200141026a210c200a20012d000122026a210d024020012d000022012009460d00200120094b0d03200d210a200c2101200c2008470d010c030b0240200d200a490d00200d20044b0d022003200a6a2101024003402002450d012002417f6a210220012d0000210a200141016a2101200a200b470d000b410021070c050b200d210a200c2101200c2008470d010c030b0b200a200d41f08dc0800010a080808000000b200d200441f08dc08000109d80808000000b2006450d00200520066a210b200041ffff037121014101210702400340200541016a210a0240024020052d00002202411874411875220d4100480d00200a21050c010b200a200b460d02200d41ff007141087420052d0001722102200541026a21050b200120026b22014100480d02200741017321072005200b470d000c020b0b41e885c08000412b41808ec08000109f80808000000b20074101710b1400200120002802002000280204109e808080000b180020002802002001200028020428020c118180808000000b930101017f23808080800041c0006b22052480808080002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a4185808080003602002005420237021c200541ec86c0800036021820054186808080003602342005200541306a3602282005200541106a3602382005200541086a360230200541186a200410a280808000000b890601097f024002402002450d002000280204210320002802002104200028020821050340024020052d0000450d002004419487c080004104200328020c11808080800000450d0041010f0b410021062002210702400240024002400340200120066a21080240024002400240024020074108490d000240200841036a417c7120086b22000d00200741786a2109410021000c030b20072000200020074b1b21004100210a03402008200a6a2d0000410a460d052000200a41016a220a460d020c000b0b2007450d054100210a20082d0000410a460d0320074101460d054101210a20082d0001410a460d0320074102460d054102210a20082d0002410a460d0320074103460d054103210a20082d0003410a460d0320074104460d054104210a20082d0004410a460d0320074105460d054105210a20082d0005410a460d0320074106460d054106210a20082d0006410a470d050c030b2000200741786a22094b0d010b02400340200820006a220a280200220b417f73200b418a94a8d0007341fffdfb776a71200a41046a280200220a417f73200a418a94a8d0007341fffdfb776a7172418081828478710d01200041086a220020094d0d000b0b200020074d0d002000200741948ac08000109c80808000000b20002007460d02200020076b210b200820006a21084100210a024003402008200a6a2d0000410a460d01200b200a41016a220a6a0d000c040b0b2000200a6a210a0b0240200a20066a220041016a22062000490d0020022006490d00200120006a2d0000410a470d00200541013a0000200220064d0d0320062100200120066a2c000041bf7f4c0d040c050b200220066b2107200220064f0d000b0b200541003a0000200221060b2002210020022006460d010b200120024100200641b887c0800010ae80808000000b0240200420012000200328020c11808080800000450d0041010f0b02400240200220004b0d0020022000460d010c040b200120006a2c000041bf7f4c0d030b200120006a2101200220006b22020d000b0b41000f0b200120022000200241c887c0800010ae80808000000ba80a01057f23808080800041f0006b22052480808080002005200336020c20052002360208024002400240024002400240024002402001418102490d004180022106024020002c00800241bf7f4a0d0041ff01210620002c00ff0141bf7f4a0d0041fe01210620002c00fe0141bf7f4a0d0041fd0121060b20062001490d0120062001470d030b20052001360214200520003602104100210641dc85c0800021070c010b20052006360214200520003602104105210641bc8bc0800021070b2005200636021c20052007360218200220014b22060d01200320014b0d010240200220034b0d00024002402002450d00024020022001490d0020012002460d010c020b200020026a2c00004140480d010b200321020b20052002360220200121030240200220014f0d00200241016a220641002002417d6a2203200320024b1b2203490d04024020032006460d00200020066a200020036a22086b21060240200020026a22092c000041bf7f4c0d002006417f6a21070c010b20032002460d0002402009417f6a22022c000041bf7f4c0d002006417e6a21070c010b20082002460d0002402009417e6a22022c000041bf7f4c0d002006417d6a21070c010b20082002460d0002402009417d6a22022c000041bf7f4c0d002006417c6a21070c010b20082002460d002006417b6a21070b200720036a21030b02402003450d00024020032001490d0020032001460d010c070b200020036a2c000041bf7f4c0d060b20032001460d040240024002400240200020036a22022c00002201417f4a0d0020022d0001413f7121002001411f7121062001415f4b0d01200641067420007221020c020b2005200141ff0171360224410121010c020b200041067420022d0002413f717221000240200141704f0d0020002006410c747221020c010b200041067420022d0003413f71722006411274418080f00071722202418080c400460d060b20052002360224410121012002418001490d00410221012002418010490d0041034104200241808004491b21010b200520033602282005200120036a36022c200541306a41146a4105360200200541ec006a418680808000360200200541e4006a418680808000360200200541c8006a41146a418780808000360200200541d4006a41888080800036020020054205370234200541f48cc08000360230200541838080800036024c2005200541c8006a3602402005200541186a3602682005200541106a3602602005200541286a3602582005200541246a3602502005200541206a360248200541306a200410a280808000000b200541e4006a418680808000360200200541c8006a41146a418680808000360200200541d4006a418380808000360200200541306a41146a410436020020054204370234200541a08cc08000360230200541838080800036024c2005200541c8006a3602402005200541186a3602602005200541106a36025820052005410c6a3602502005200541086a360248200541306a200410a280808000000b2000200141002006200410ae80808000000b20052002200320061b360228200541306a41146a4103360200200541c8006a41146a418680808000360200200541d4006a41868080800036020020054203370234200541e48bc08000360230200541838080800036024c2005200541c8006a3602402005200541186a3602582005200541106a3602502005200541286a360248200541306a200410a280808000000b2003200641b88dc0800010a080808000000b41e885c08000412b2004109f80808000000b2000200120032001200410ae80808000000b950302057f027e23808080800041c0006b22032480808080000240024020002d0008450d0020002802042104410121050c010b2000280204210402402000280200220628020022074104710d0041012105200628021841da87c0800041de87c0800020041b4102410120041b2006411c6a28020028020c118080808000000d0120012006200228020c1181808080000021050c010b024020040d000240200628021841dc87c0800041022006411c6a28020028020c11808080800000450d0041012105410021040c020b200628020021070b41012105200341013a0017200341346a41fc86c08000360200200341106a200341176a36020020032007360218200320062902183703082006290208210820062902102109200320062d00203a00382003200628020436021c20032009370328200320083703202003200341086a3602302001200341186a200228020c118180808000000d00200328023041d887c080004102200328023428020c1180808080000021050b200020053a00082000200441016a360204200341c0006a24808080800020000b840801077f024002402001450d00412b418080c4002000280200220141017122061b2107200620056a21080c010b200541016a210820002802002101412d21070b0240024020014104710d00410021020c010b0240024020034110490d002002200310b68080800021060c010b024020030d00410021060c010b20034103712109024002402003417f6a41034f0d0041002106200221010c010b2003417c71210a41002106200221010340200620012c000041bf7f4a6a200141016a2c000041bf7f4a6a200141026a2c000041bf7f4a6a200141036a2c000041bf7f4a6a2106200141046a2101200a417c6a220a0d000b0b2009450d000340200620012c000041bf7f4a6a2106200141016a21012009417f6a22090d000b0b200620086a21080b0240024020002802080d0041012101200020072002200310b7808080000d012000280218200420052000411c6a28020028020c118080808000000f0b024002400240024002402000410c6a280200220620084d0d0020002d00004108710d0441002101200620086b22092108410120002d0020220620064103461b4103710e03030102030b41012101200020072002200310b7808080000d042000280218200420052000411c6a28020028020c118080808000000f0b41002108200921010c010b20094101762101200941016a41017621080b200141016a21012000411c6a2802002109200028020421062000280218210a024003402001417f6a2201450d01200a2006200928021011818080800000450d000b41010f0b410121012006418080c400460d01200020072002200310b7808080000d01200028021820042005200028021c28020c118080808000000d01200028021c2109200028021821004100210102400340024020082001470d00200821010c020b200141016a210120002006200928021011818080800000450d000b2001417f6a21010b200120084921010c010b2000280204210b2000413036020420002d0020210c41012101200041013a0020200020072002200310b7808080000d0041002101200620086b22092103024002400240410120002d0020220620064103461b4103710e03020001020b41002103200921010c010b20094101762101200941016a41017621030b200141016a21012000411c6a2802002109200028020421062000280218210a024003402001417f6a2201450d01200a2006200928021011818080800000450d000b41010f0b410121012006418080c400460d00200028021820042005200028021c28020c118080808000000d00200028021c21012000280218210a410021090240034020032009460d01200941016a2109200a2006200128021011818080800000450d000b410121012009417f6a2003490d010b2000200c3a00202000200b36020441000f0b20010b830201017f23808080800041106b22022480808080002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a200110ad808080002101200241106a24808080800020010b7101017f23808080800041206b220224808080800020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d889c08000200241086a10a3808080002101200241206a24808080800020010b110020002802002001200210ad808080000b8a0201017f23808080800041106b2202248080808000200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a200110ad808080002101200241106a24808080800020010b7401017f23808080800041206b220224808080800020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d889c08000200241086a10a3808080002101200241206a24808080800020010ba30801097f02400240200041036a417c71220220006b220320014b0d00200341044b0d00200120036b22044104490d0020044103712105410021064100210102402003450d00200341037121070240024020022000417f736a41034f0d0041002101200021020c010b2003417c71210841002101200021020340200120022c000041bf7f4a6a200241016a2c000041bf7f4a6a200241026a2c000041bf7f4a6a200241036a2c000041bf7f4a6a2101200241046a21022008417c6a22080d000b0b2007450d000340200120022c000041bf7f4a6a2101200241016a21022007417f6a22070d000b0b200020036a210002402005450d0020002004417c716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21080340200021062003450d02200341c001200341c001491b220441037121052004410274210902400240200441fc0171220a41027422000d00410021020c010b200620006a2107410021022006210003402000410c6a2802002201417f73410776200141067672418182840871200041086a2802002201417f73410776200141067672418182840871200041046a2802002201417f7341077620014106767241818284087120002802002201417f7341077620014106767241818284087120026a6a6a6a2102200041106a22002007470d000b0b200620096a2100200320046b2103200241087641ff81fc0771200241ff81fc07716a418180046c41107620086a21082005450d000b2006200a4102746a2100200541ffffffff036a220441ffffffff0371220241016a2201410371210302400240200241034f0d00410021020c010b200141fcffffff077121014100210203402000410c6a2802002207417f73410776200741067672418182840871200041086a2802002207417f73410776200741067672418182840871200041046a2802002207417f7341077620074106767241818284087120002802002207417f7341077620074106767241818284087120026a6a6a6a2102200041106a21002001417c6a22010d000b0b02402003450d00200441818080807c6a2101034020002802002207417f7341077620074106767241818284087120026a2102200041046a21002001417f6a22010d000b0b200241087641ff81fc0771200241ff81fc07716a418180046c41107620086a0f0b024020010d0041000f0b20014103712102024002402001417f6a41034f0d00410021080c010b2001417c712101410021080340200820002c000041bf7f4a6a200041016a2c000041bf7f4a6a200041026a2c000041bf7f4a6a200041036a2c000041bf7f4a6a2108200041046a21002001417c6a22010d000b0b2002450d000340200820002c000041bf7f4a6a2108200041016a21002002417f6a22020d000b0b20080b5c01017f0240024002402001418080c400460d0041012104200028021820012000411c6a280200280210118180808000000d010b20020d01410021040b20040f0b2000280218200220032000411c6a28020028020c118080808000000b870401077f23808080800041106b22022480808080004101210302402001280218220441272001411c6a2802002802102205118180808000000d002002200028020041810210a7808080002002410c6a2d00002106200241086a28020021072002280200210102400240024020022802042208418080c400460d0003402001210041dc00210341012101024002400240024020000e0407010300070b200641ff01712100410021064103210141fd00210302400240024020000e06090504000102090b4102210641fb0021030c040b4103210141f5002103410321060c030b4104210641dc0021030c020b41002101200821030c010b4102410120071b2106413041d7002008200741027476410f712203410a491b20036a21032007417f6a410020071b21070b20042003200511818080800000450d000c020b0b03402001210041dc002103410121010240024020000e0404040100040b200641ff01712100410021064103210141fd002103024002400240024020000e06070403020100070b4104210641dc0021030c030b4103210141f5002103410321060c020b4102210641fb0021030c010b4102410120071b2106418080c40020074102747641017141307221032007417f6a410020071b21070b20042003200511818080800000450d000b0b410121030c010b2004412720051181808080000021030b200241106a24808080800020030b8e0201027f23808080800041106b22022480808080002002200128021841e499c0800041112001411c6a28020028020c118080808000003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41d499c0800010af808080001a20022d00082101024020022802042203450d00200141ff017121004101210120000d0020022802002100024020034101470d0020022d000941ff0171450d0020002d00004104710d0041012101200028021841df87c0800041012000411c6a28020028020c118080808000000d010b200028021841e087c0800041012000411c6a28020028020c1180808080000021010b200241106a248080808000200141ff01714100470be90203027f017e037f23808080800041306b2203248080808000412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce008022054290ce007e7da7220741ffff037141e4006e2208410174418e88c080006a2f00003b00002006417e6a2007200841e4006c6b41ffff0371410174418e88c080006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004d0d00200341096a2004417e6a22046a2005a72206200641ffff037141e4006e220641e4006c6b41ffff0371410174418e88c080006a2f00003b00000b024002402006410a490d00200341096a2004417e6a22046a2006410174418e88c080006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141dc85c080004100200341096a20046a412720046b10b0808080002104200341306a24808080800020040b1200200141f089c080004102109e808080000b0e0020002001200210bd808080000bb50101037f024002402002410f4b0d00200021030c010b2000410020006b41037122046a210502402004450d00200021030340200320013a0000200341016a22032005490d000b0b2005200220046b2204417c7122026a2103024020024101480d00200141ff017141818284086c2102034020052002360200200541046a22052003490d000b0b200441037121020b02402002450d00200320026a21050340200320013a0000200341016a22032005490d000b0b20000b0bc5200100418080c0000bbb2047756172616e7465656420746f2062652065786163742e2f7573722f7372632f74657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e72731700100029000000f60000002b0000001700100029000000140100001f00000044414320707265696d616765207472656520636f6e7461696e7320746f6f206d616e79206c6576656c732e4661696c656420746f20726574726965766520707265696d616765556e61626c6520746f206465636f64652044414320706167653a204465636f646520696e746f20536c69636550616765206661696c656400000001000000000000000100000002000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28293030613065396163383033343930333461616330333961336436666234653338616532613332343265323834613063346434646136383233643462653338313261614b65726e656c20696e7374616c6c65642e496e7374616c6c6174696f6e206661696c65643a6578706c696369742070616e6963696e7374616c6c65725f6b65726e656c2f7372632f6c69622e727300880110001b0000008a00000005000000696e7374616c6c65725f6b65726e656c2f7372632f72657665616c5f696e7374616c6c65722e72732f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d00dc0110001b0000002f6b65726e656c2f626f6f742e7761736d00000000021000110000004641494c454420746f20696e7374616c6c206b65726e656c20696e204b45524e454c5f5041544800b401100028000000490000001f0000004661696c656420746f207772697465206b65726e656c20636f6e74656e742070616765524f4f545f505245494d4147455f48415348206d7573742062652076616c6964204845582e74657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e72739c02100020000000d9000000150000009c0210002000000008010000150000002e2e0000dc0210000200000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c7565000900000000000000010000000a000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320000024031000200000004403100012000000603a2000dc021000000000006903100002000000090000000c000000040000000b0000000c0000000d000000202020206c6962726172792f636f72652f7372632f666d742f6275696c646572732e727398031000200000002f00000021000000980310002000000030000000120000002c0a2c20280a282c296c6962726172792f636f72652f7372632f666d742f6e756d2e7273e10310001b00000065000000140000003078303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900000900000004000000040000000e0000000f0000001000000028296c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e72730000f2041000200000005b0000000500000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468202405100012000000360510002200000072616e676520656e6420696e6465782068051000100000003605100022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200088051000160000009e0510000d0000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000c10510000b000000cc051000160000006803100001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000fc0510000e0000000a061000040000000e061000100000006803100001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060c10510000b000000400610002600000066061000080000006e0610000600000068031000010000006c6962726172792f636f72652f7372632f7374722f6d6f642e7273009c0610001b000000f50000001d0000006c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e7273000000c8061000250000000a0000001c000000c8061000250000001a0000003600000000010305050606020706080709110a1c0b190c1a0d100e0d0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206160d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d0824016a046b02af03bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa02fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5fbfeeef5a62f4fcff9a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a161a261c1417094e042409440d19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d498107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48a4c630d842f8fd18247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781332d03110408818c89046b050d0309071092604709743c80f60a7308701546809a140c570919808781470385420f1584501f80e12b80d52d031a040281401f113a050184e080f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80510030d03740c59070c04010f0c0438080a062808224e81540c1503050307091d030b05060a0a060808070980cb250a84066c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273000000790c1000280000004b00000028000000790c1000280000005700000016000000790c100028000000520000003e0000000900000004000000040000001100000054727946726f6d536c6963654572726f720000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301ce147f31e214cf06ae14f4f6f21509dbca15000cf615165d1a15100da215200e0e15330e16155aee2a156d0e8e15620006e57f001ff5700700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f00070111020701020105000700013d0400076d07006080f000 --burn-cap 9999999 +./octez-client --wait none originate smart rollup from '[PUBLIC_KEY_HASH]' of kind wasm_2_0_0 of type 'pair string (ticket string)' with kernel 0061736d0100000001610e60037f7f7f017f60027f7f017f60027f7f0060057f7f7f7f7f017f60047f7f7f7f017f60000060017f0060037f7f7f0060057f7f7f7f7f0060087f7f7f7f7f7f7f7f0060067f7f7f7f7f7f017f60017f017e60047f7f7f7f0060037e7f7f017f02a2010511736d6172745f726f6c6c75705f636f72650b77726974655f6465627567000211736d6172745f726f6c6c75705f636f72650973746f72655f686173000111736d6172745f726f6c6c75705f636f72650b73746f72655f7772697465000311736d6172745f726f6c6c75705f636f72650a73746f72655f6d6f7665000411736d6172745f726f6c6c75705f636f72650f72657665616c5f707265696d616765000403363505060007080906070702020202020502000a0303010602070700070701000b0c01010800000a01010001010103070707010d0100000405017001101005030100110619037f01418080c0000b7f0041b58ac0000b7f0041c08ac0000b073204066d656d6f727902000a6b65726e656c5f72756e00050a5f5f646174615f656e6403010b5f5f686561705f6261736503020915010041010b0f0b35192625211a23282b2c2d2e2f370afb4b357801037f23808080800041106b22002480808080001093808080002000200041086a418080c080001088808080000240024020002802002201450d002000280204210241d380c080004114109480808000200120021094808080000c010b41c280c0800041111094808080000b200041106a2480808080000b170041e780c08000410e419081c08000109f80808000000be80101037f23808080800041c0006b2203248080808000200341306a200110928080800020032802302104200341286a2001109280808000200341206a20002004200328022c10958080800010918080800041752104024020032802200d002003280224450d00200341186a200110928080800020032802182104200341106a200110928080800020032802142101200341086a20021092808080002003280208210520032002109280808000200341386a20002004200120052003280204109780808000109080808000200328023c410020032802381b21040b200341c0006a24808080800020040b960402047f017e23808080800041d080016b2203248080808000200341e8006a41003a0000200341e0006a4200370300200341d8006a4200370300200341d0006a420037030020034200370348200341c8006a2104410121050240024002400340200341c880016a2005417f6a220620026a2d00002006108c8080800020032802c88001418280c400470d0120032d00cc80012106200341c880016a200220056a2d00002005108c8080800020032802c88001418280c400470d01200420032d00cc80012006410474723a0000200441016a2104200541026a220541c300470d000b2003413e6a2205200341c8006a41196a290000370100200341386a2204200341c8006a41136a290000370300200341106a20032d004a3a00002003410e6a41136a20042903003700002003410e6a41196a2005290100370000200320032f01483b010e200320032900532207370330200320073700192003200329004b370011200341c8006a41004180800110b9808080001a200341003602c880012003200341c880016a3602302003200141002003410e6a200341c8006a418080014104200341306a108a8080800020032802002205450d01200328020421040c020b41e382c080002105412521040c010b0240200141bc81c0800041d881c08000108780808000450d0041e081c080002105412721040c010b410021050b2000200436020420002005360200200341d080016a2480808080000bc00201067f23808080800041306b22052480808080002005200436022420052003360220200541186a200541206a108e808080000240024002400240200528021c2206450d0020052802182107410021040340200620046b22034180102003418010491b220320046a22082003490d03200820064b0d0420022802002109200541106a41bc81c080001092808080002005280210210a200541086a41bc81c08000109280808000200541286a2001200a200528020c2009200720046a200310968080800010908080800002402005280228450d00200528022c450d0041c082c0800021040c030b2002200920036a36020020082104200620084b0d000b0b410021040b2000412336020420002004360200200541306a2480808080000f0b2004200841b082c0800010a080808000000b2008200641b082c08000109d80808000000bcf0301047f23808080800041306b22082480808080000240024020022006490d00418883c080002102412b21060c010b200841186a2001200341212004200510988080800010908080800002402008280218450d0041ea83c080002102411b21060c010b0240200828021c220920054b0d00200841186a20042009108d808080000240200828021822034102470d0041b383c080002102413721060c020b2008280220210a200828021c210b024020034101460d00200841086a20012007280200200b200a108980808000200828020c2106200828020821020c020b2008200a3602142008200b360210200841186a200841106a108f80808000200828021c21030240024002402008280228220a4121470d00200520096b210a200420096a2104200241016a210920082802182105034020034121490d0220082001200920052004200a20062007108a80808000200541216a21052003415f6a210320082802002202450d000b200828020421060c040b2003200a4f0d010b410021020c020b41cc84c080004117200841186a41e484c0800041f484c0800010a780808000000b418485c08000412341bc84c08000109f80808000000b2000200636020420002002360200200841306a2480808080000b02000b8a0101017f024002400240200141bf7f6a41ff01714106490d002001419f7f6a41ff01714106490d01200141506a220341ff0171410a490d02200020023602042000200141ff01713602000f0b2000418280c4003602002000200141496a3a00040f0b2000418280c4003602002000200141a97f6a3a00040f0b2000418280c400360200200020033a00040bd20201037f0240024020020d000c010b0240024002400240024020012d000022030e020001050b2002417f6a22034104490d02200128000122024118742002410874418080fc07717220024108764180fe037120024118767272220241046a220420034b0d022002417c490d014104200441c885c0800010a080808000000b02402002417f6a22034104490d00200128000122024118742002410874418080fc07717220024108764180fe03712002411876727222024121702104200241046a220520034b0d0020040d002002417c4f0d0320002002360208200041013602002000200141056a3602040f0b20004102360200200041023b01040f0b20002002360208200041003602002000200141056a3602040f0b20004102360200200041023b01040f0b4104200541d885c0800010a080808000000b20004102360200200041056a20033a0000200020024100473a00040b0c00200020012902003703000b3e01027f20004121360210200020012802002202360200200020012802042201412170220336020c2000200120036b22013602042000200220016a3602080b310002402001417f4a0d00200020014178200141764b1b360204200041013602000f0b20002001360204200041003602000b3f01017f02400240200141096a2202410c4d0d0041012102417821010c010b200241027441e885c080006a28020021020b20002001360204200020023602000b0c00200020012902003703000b02000b0c00200020011080808080000b0c00200120021081808080000b1200200120022003200420051082808080000b100020012002200320041083808080000b100020012002200320041084808080000b0d0020002802001a037f0c000b0b02000b4c01017f23808080800041206b2202248080808000200241013a00182002200136021420022000360210200241a086c0800036020c2002419c86c08000360208200241086a108680808000000b0f0020002001200210b280808000000b0f0020002001200210b380808000000be60701087f20002802102103024002400240200028020822044101460d0020034101470d010b024020034101470d00200120026a2105200041146a28020041016a2106410021072001210802400340200821032006417f6a2206450d0120032005460d020240024020032c00002209417f4c0d00200341016a2108200941ff017121090c010b20032d0001413f7121082009411f71210a02402009415f4b0d00200a4106742008722109200341026a21080c010b200841067420032d0002413f717221080240200941704f0d002008200a410c74722109200341036a21080c010b200841067420032d0003413f7172200a411274418080f00071722209418080c400460d03200341046a21080b200720036b20086a21072009418080c400470d000c020b0b20032005460d00024020032c00002208417f4a0d0020084160490d0020084170490d0020032d0002413f7141067420032d0001413f71410c747220032d0003413f7172200841ff0171411274418080f0007172418080c400460d010b024002402007450d00024020072002490d004100210320072002460d010c020b41002103200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b024020040d002000280218200120022000411c6a28020028020c118080808000000f0b2000410c6a28020021070240024020024110490d002001200210b08080800021080c010b024020020d00410021080c010b20024103712109024002402002417f6a41034f0d0041002108200121030c010b2002417c71210641002108200121030340200820032c000041bf7f4a6a20032c000141bf7f4a6a20032c000241bf7f4a6a20032c000341bf7f4a6a2108200341046a21032006417c6a22060d000b0b2009450d000340200820032c000041bf7f4a6a2108200341016a21032009417f6a22090d000b0b0240200720084d0d00200720086b22082107024002400240410020002d0020220320034103461b41037122030e03020001020b41002107200821030c010b20084101762103200841016a41017621070b200341016a21032000411c6a2802002109200041186a280200210620002802042108024003402003417f6a2203450d0120062008200928021011818080800000450d000b41010f0b410121032008418080c400460d02200620012002200928020c118080808000000d02410021030340024020072003470d0020072007490f0b200341016a210320062008200928021011818080800000450d000b2003417f6a2007490f0b2000280218200120022000411c6a28020028020c118080808000000f0b2000280218200120022000411c6a28020028020c1180808080000021030b20030b5401017f23808080800041206b2203248080808000200341146a41003602002003419c86c08000360210200342013702042003200136021c200320003602182003200341186a36020020032002109b80808000000b0f0020002001200210b480808000000b110020003502004101200110b6808080000bc405010a7f23808080800041306b2203248080808000200341246a2001360200200341033a0028200342808080808004370308200320003602204100210420034100360218200341003602100240024002400240200228020822050d00200241146a2802002200450d0120022802102101200041037421062000417f6a41ffffffff017141016a21042002280200210003400240200041046a2802002207450d00200328022020002802002007200328022428020c118080808000000d040b2001280200200341086a200141046a280200118180808000000d03200141086a2101200041086a2100200641786a22060d000c020b0b2002410c6a2802002201450d00200141057421082001417f6a41ffffff3f7141016a2104200228020021004100210603400240200041046a2802002201450d00200328022020002802002001200328022428020c118080808000000d030b2003200520066a2201411c6a2d00003a00282003200141046a290200422089370308200141186a28020021092002280210210a4100210b41002107024002400240200141146a2802000e03010002010b2009410374210c41002107200a200c6a220c41046a280200418380808000470d01200c28020028020021090b410121070b2003200936021420032007360210200141106a28020021070240024002402001410c6a2802000e03010002010b20074103742109200a20096a220941046a280200418380808000470d01200928020028020021070b4101210b0b2003200736021c2003200b360218200a20012802004103746a2201280200200341086a2001280204118180808000000d02200041086a21002008200641206a2206470d000b0b0240200420022802044f0d002003280220200228020020044103746a22012802002001280204200328022428020c118080808000000d010b410021010c010b410121010b200341306a24808080800020010b0d0042daa2c7a1e1e996a5a17f0bc70201057f0240024002400240200241036a417c7122042002460d00200420026b2204200320042003491b2204450d0041002105200141ff01712106410121070340200220056a2d00002006460d042004200541016a2205470d000b2004200341786a22084b0d020c010b200341786a2108410021040b200141ff017141818284086c210502400340200220046a22072802002005732206417f73200641fffdfb776a71418081828478710d01200741046a2802002005732206417f73200641fffdfb776a71418081828478710d01200441086a220420084d0d000b0b200420034d0d002004200341ec88c08000109c80808000000b41002107024020042003460d00200141ff0171210503400240200220046a2d00002005470d0020042105410121070c030b2003200441016a2204470d000b0b200321050b20002005360204200020073602000b1400200120002802002000280204109e808080000b180020002802002001200028020428020c118180808000000b930101017f23808080800041c0006b22052480808080002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a4184808080003602002005420237021c200541b486c0800036021820054185808080003602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004109b80808000000bef03010b7f23808080800041306b22032480808080002003410a3602282003428a808080103703202003200236021c410021042003410036021820032002360214200320013602102003200236020c2003410036020820002802042105200028020021062000280208210741002108410021090240034002400240200941ff01710d000240200820024b0d000340200120086a210a02400240200220086b220b4108490d002003410a200a200b10a480808000200328020421002003280200210a0c010b410021000240200b0d004100210a0c010b03400240200a20006a2d0000410a470d004101210a0c020b200b200041016a2200470d000b4100210a200b21000b0240200a4101460d00200221080c020b0240200820006a220041016a2208450d00200820024b0d00200120006a2d0000410a470d00410021092008210c200821000c040b200820024d0d000b0b410121092004210c2002210020042002470d010b410021000c020b0240024020072d0000450d00200641dc86c080004104200528020c118080808000000d010b200120046a210b200020046b210a4100210d024020002004460d00200a200b6a417f6a2d0000410a46210d0b2007200d3a0000200c21042006200b200a200528020c11808080800000450d010b0b410121000b200341306a24808080800020000b920302057f027e23808080800041c0006b22032480808080000240024020002d0008450d0020002802042104410121050c010b2000280204210402402000280200220628020022074104710d0041012105200628021841e286c0800041e686c0800020041b4102410120041b2006411c6a28020028020c118080808000000d0120012006200228020c1181808080000021050c010b024020040d000240200628021841e486c0800041022006411c6a28020028020c11808080800000450d0041012105410021040c020b200628020021070b41012105200341013a0017200341346a41c486c0800036020020032007360218200320062902183703082003200341176a3602102006290208210820062902102109200320062d00203a00382003200628020436021c20032009370328200320083703202003200341086a3602302001200341186a200228020c118180808000000d00200328023041e086c080004102200328023428020c1180808080000021050b200020053a00082000200441016a360204200341c0006a24808080800020000bd60601077f024002402001450d00412b418080c4002000280200220641017122011b2107200120056a21080c010b200541016a210820002802002106412d21070b0240024020064104710d00410021020c010b0240024020034110490d002002200310b08080800021090c010b024020030d00410021090c010b2003410371210a024002402003417f6a41034f0d0041002109200221010c010b2003417c71210b41002109200221010340200920012c000041bf7f4a6a20012c000141bf7f4a6a20012c000241bf7f4a6a20012c000341bf7f4a6a2109200141046a2101200b417c6a220b0d000b0b200a450d000340200920012c000041bf7f4a6a2109200141016a2101200a417f6a220a0d000b0b200920086a21080b0240024020002802080d0041012101200041186a28020022092000411c6a280200220020072002200310b1808080000d01200920042005200028020c118080808000000f0b024002400240024002402000410c6a280200220b20084d0d0020064108710d04200b20086b22092108410120002d0020220120014103461b41037122010e03030102030b41012101200041186a28020022092000411c6a280200220020072002200310b1808080000d04200920042005200028020c118080808000000f0b41002108200921010c010b20094101762101200941016a41017621080b200141016a21012000411c6a280200210a200041186a280200210b20002802042109024003402001417f6a2201450d01200b2009200a28021011818080800000450d000b41010f0b410121012009418080c400460d01200b200a20072002200310b1808080000d01200b20042005200a28020c118080808000000d014100210102400340024020082001470d00200821010c020b200141016a2101200b2009200a28021011818080800000450d000b2001417f6a21010b200120084921010c010b200028020421062000413036020420002d0020210c41012101200041013a0020200041186a28020022092000411c6a280200220a20072002200310b1808080000d00200b20086b41016a2101024003402001417f6a2201450d0120094130200a28021011818080800000450d000b41010f0b41012101200920042005200a28020c118080808000000d002000200c3a00202000200636020441000f0b20010b860201017f23808080800041106b22022480808080002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110a8808080002101200241106a24808080800020010b7101017f23808080800041206b220224808080800020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41b088c08000200241086a10a2808080002101200241206a24808080800020010b110020002802002001200210a8808080000b8d0201017f23808080800041106b2202248080808000200028020021002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110a8808080002101200241106a24808080800020010b7401017f23808080800041206b220224808080800020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41b088c08000200241086a10a2808080002101200241206a24808080800020010bfc0601097f02400240200041036a417c71220220006b220320014b0d00200341044b0d00200120036b22044104490d00200441037121054100210641002101024020022000460d00200341037121070240024020022000417f736a41034f0d0041002101200021020c010b2003417c71210841002101200021020340200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a21022008417c6a22080d000b0b2007450d000340200120022c000041bf7f4a6a2101200241016a21022007417f6a22070d000b0b200020036a210002402005450d0020002004417c716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21070340200021062003450d02200341c001200341c001491b220441037121052004410274210902400240200441fc0171220a0d00410021020c010b2006200a4102746a2108410021022006210003402000450d012000410c6a2802002201417f73410776200141067672418182840871200041086a2802002201417f73410776200141067672418182840871200041046a2802002201417f7341077620014106767241818284087120002802002201417f7341077620014106767241818284087120026a6a6a6a2102200041106a22002008470d000b0b200320046b2103200620096a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620076a21072005450d000b0240024020060d00410021000c010b2006200a4102746a22022802002200417f73410776200041067672418182840871210020054101460d0020022802042201417f7341077620014106767241818284087120006a210020054102460d0020022802082202417f7341077620024106767241818284087120006a21000b200041087641ff811c71200041ff81fc07716a418180046c41107620076a0f0b024020010d0041000f0b20014103712102024002402001417f6a41034f0d00410021070c010b2001417c712101410021070340200720002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2107200041046a21002001417c6a22010d000b0b2002450d000340200720002c000041bf7f4a6a2107200041016a21002002417f6a22020d000b0b20070b4a01017f0240024002402002418080c400460d0041012105200020022001280210118180808000000d010b20030d01410021050b20050f0b200020032004200128020c118080808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4186808080003602002003420237020c200341b089c0800036020820034186808080003602242003200341206a3602182003200341046a36022820032003360220200341086a2002109b80808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4186808080003602002003420237020c200341d089c0800036020820034186808080003602242003200341206a3602182003200341046a36022820032003360220200341086a2002109b80808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4186808080003602002003420237020c200341848ac0800036020820034186808080003602242003200341206a3602182003200341046a36022820032003360220200341086a2002109b80808000000b920201037f23808080800041206b22022480808080002002200036020c2002200128021841a48ac0800041112001411c6a28020028020c118080808000003a001820022001360210200241003a001920024100360214200241106a2002410c6a41948ac0800010a980808000210320022d00182101024020022802142204450d00200141ff017121004101210120000d0020032802002100024020044101470d0020022d001941ff0171450d0020002d00004104710d0041012101200028021841e786c0800041012000411c6a28020028020c118080808000000d010b2000280218419c86c0800041012000411c6a28020028020c1180808080000021010b200241206a248080808000200141ff01714100470be90203027f017e037f23808080800041306b2203248080808000412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce008022054290ce007e7da7220741ffff037141e4006e220841017441e886c080006a2f00003b00002006417e6a2007200841e4006c6b41ffff037141017441e886c080006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004d0d00200341096a2004417e6a22046a2005a72206200641ffff037141e4006e220641e4006c6b41ffff037141017441e886c080006a2f00003b00000b024002402006410a490d00200341096a2004417e6a22046a200641017441e886c080006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b20022001419c86c080004100200341096a20046a412720046b10aa808080002104200341306a24808080800020040b1200200141c888c080004102109e808080000bb50101037f024002402002410f4b0d00200021030c010b2000410020006b41037122046a210502402004450d00200021030340200320013a0000200341016a22032005490d000b0b2005200220046b2204417c7122026a2103024020024101480d00200141ff017141818284086c2102034020052002360200200541046a22052003490d000b0b200441037121020b02402002450d00200320026a21050340200320013a0000200341016a22032005490d000b0b20000b0e0020002001200210b8808080000b0bbf0a0100418080c0000bb50a3030383761323064663835333066663537653265633434303234376238643335363134306137346662643534316365363032323535303536613233396663323736644b65726e656c20696e7374616c6c65642e496e7374616c6c6174696f6e206661696c65643a6578706c696369742070616e6963696e7374616c6c65725f6b65726e656c2f7372632f6c69622e7273750010001b0000008a000000050000002f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d00a00010001b0000002f6b65726e656c2f626f6f742e7761736d000000c4001000110000004641494c454420746f20696e7374616c6c206b65726e656c20696e204b45524e454c5f50415448696e7374616c6c65725f6b65726e656c2f7372632f72657665616c5f696e7374616c6c65722e7273000701100028000000490000001f0000004661696c656420746f207772697465206b65726e656c20636f6e74656e742070616765524f4f545f505245494d4147455f48415348206d7573742062652076616c6964204845582e44414320707265696d616765207472656520636f6e7461696e7320746f6f206d616e79206c6576656c732e556e61626c6520746f206465636f64652044414320706167653a204465636f646520696e746f20536c69636550616765206661696c65644661696c656420746f20726574726965766520707265696d6167652f6275696c64732f74657a6f732f6b65726e656c2f74657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e727300000502100035000000130100001f00000047756172616e7465656420746f2062652065786163742e00010000000000000001000000020000000502100035000000f50000001a000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282974657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e727300a702100020000000d800000015000000a70210002000000007010000150000000100000001000000010000000100000001000000010000000100000001000000010000000000000000000000000000000000000029000000070000000000000001000000080000003a2000001c031000000000003003100002000000070000000c00000004000000090000000a0000000b000000202020202c0a2c20280a282c30303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390700000004000000040000000c0000000d0000000e00000028296c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300004a04100020000000680000002700000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468207c041000120000008e0410002200000072616e676520656e6420696e64657820c0041000100000008e04100022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000e004100016000000f60410000d0000000700000004000000040000000f00000054727946726f6d536c6963654572726f72 --burn-cap 9999999 Node is bootstrapped. Estimated gas: 2748.451 units (will add 100 for safety) Estimated storage: 6558 bytes added (will add 20 for safety) @@ -12,17 +12,17 @@ and/or an external block explorer to make sure that it has been included. This sequence of operations was run: Manager signed operations: From: [PUBLIC_KEY_HASH] - Fee to the baker: ꜩ0.019077 + Fee to the baker: ꜩ0.012164 Expected counter: 1 Gas limit: 2849 Storage limit: 6578 bytes Balance updates: - [PUBLIC_KEY_HASH] ... -ꜩ0.019077 - payload fees(the block proposer) ....... +ꜩ0.019077 + [PUBLIC_KEY_HASH] ... -ꜩ0.012164 + payload fees(the block proposer) ....... +ꜩ0.012164 Smart rollup origination: Kind: wasm_2_0_0 Parameter type: (pair string (ticket string)) - Kernel Blake2B hash: '1f1ec0db25f98f39d3932abb67a9ef15429d004da8751ffa18d8705864e3bf23' + Kernel Blake2B hash: 'c761311b6e40ba3748b4b4541934914e93b653efb05c97d05f282d167d1a60c4' This smart rollup origination was successfully applied Consumed gas: 2748.451 Storage size: 6558 bytes diff --git a/tezt/tests/tx_sc_rollup.ml b/tezt/tests/tx_sc_rollup.ml index 194b2939341ef8289fea93903d9217fc24a1d323..e3df19f95118f58af725704ba5b9e2827a70afd0 100644 --- a/tezt/tests/tx_sc_rollup.ml +++ b/tezt/tests/tx_sc_rollup.ml @@ -39,8 +39,15 @@ let send_message ?(src = Constant.bootstrap2.alias) client msg = let* () = Client.Sc_rollup.send_message ~hooks ~src ~msg client in Client.bake_for_and_wait client -(* TX Kernel external messages and their encodings *) -module Tx_kernel = struct +(* TX Kernel external messages and their encodings. + Parametrisied by boolean config no_signing, + if it's set to true then dummy signatures + will be generated instead of real ones. +*) +module Tx_kernel_general (C : sig + val no_signing : bool +end) = +struct open Tezos_protocol_alpha.Protocol open Tezos_crypto.Signature @@ -180,11 +187,15 @@ module Tx_kernel = struct in list_encode account_ops_encoded - let list_of_multiaccount_tx_encoding (transactions : multiaccount_tx list) = + let list_of_multiaccount_tx_repr (transactions : multiaccount_tx list) = let txs_encodings = List.map (fun x -> x.encoded_accounts_ops) transactions in list_encode txs_encodings + + let batch_repr (batch : transactions_batch) = + let signature = Bls.to_string batch.aggregated_signature in + batch.encoded_transactions ^ signature end let multiaccount_tx_of (accounts_operations : account_operations list) = @@ -192,29 +203,33 @@ module Tx_kernel = struct Encodings.list_of_account_operations_repr accounts_operations in let accounts_sks = List.map (fun x -> x.signer) accounts_operations in - (* List consisting of single transaction, that is fine *) let aggregated_signature = - Option.get - @@ Bls.( - aggregate_signature_opt - @@ List.map - (fun sk -> sign sk @@ Bytes.of_string encoded_accounts_ops) - accounts_sks) + if C.no_signing then Bls.zero + else + let aggr = + Option.get + @@ Bls.( + aggregate_signature_opt + @@ List.map + (fun sk -> sign sk @@ Bytes.of_string encoded_accounts_ops) + accounts_sks) + in + assert ( + Bls.aggregate_check + (List.map + (fun sk -> + ( Bls.Secret_key.to_public_key sk, + None, + Bytes.of_string encoded_accounts_ops )) + accounts_sks) + aggr) ; + aggr in - assert ( - Bls.aggregate_check - (List.map - (fun sk -> - ( Bls.Secret_key.to_public_key sk, - None, - Bytes.of_string encoded_accounts_ops )) - accounts_sks) - aggregated_signature) ; {accounts_operations; encoded_accounts_ops; aggregated_signature} let transactions_batch_of (transactions : multiaccount_tx list) = let encoded_transactions = - Encodings.list_of_multiaccount_tx_encoding transactions + Encodings.list_of_multiaccount_tx_repr transactions in let signatures = List.map @@ -222,17 +237,14 @@ module Tx_kernel = struct transactions in let aggregated_signature = - Option.get @@ Bls.aggregate_signature_opt signatures + if C.no_signing then Bls.zero + else Option.get @@ Bls.aggregate_signature_opt signatures in {transactions; encoded_transactions; aggregated_signature} let external_message_of_batch (batch : transactions_batch) = let v1_batch_prefix = "\000" in - let signature = - batch.aggregated_signature |> Tezos_crypto.Signature.Bls.to_bytes - |> Bytes.to_string - in - hex_encode @@ v1_batch_prefix ^ batch.encoded_transactions ^ signature + v1_batch_prefix ^ Encodings.batch_repr batch (* External message consisting of single transaction. *) let external_message_of_account_ops (accounts_ops : account_operations list) = @@ -240,6 +252,14 @@ module Tx_kernel = struct @@ [multiaccount_tx_of accounts_ops] end +module Tx_kernel_no_signing = Tx_kernel_general (struct + let no_signing = true +end) + +module Tx_kernel = Tx_kernel_general (struct + let no_signing = false +end) + let assert_state_changed sc_rollup_client prev_state_hash = let*! state_hash = Sc_rollup_client.state_hash ~hooks sc_rollup_client in Check.(state_hash <> prev_state_hash) @@ -256,15 +276,16 @@ let assert_ticks_advanced sc_rollup_client prev_ticks = (* Send a deposit into the rollup. *) let test_deposit ~client ~sc_rollup_node ~sc_rollup_client ~sc_rollup_address - ~mint_and_deposit_contract level tz4_address = + ~mint_and_deposit_contract ~level tz4_address amount = let*! prev_state_hash = Sc_rollup_client.state_hash ~hooks sc_rollup_client in let* () = (* Internal message through forwarder *) let arg = sf - {|Pair (Pair %S "%s") (Pair 450 "Hello, Ticket!")|} + {|Pair (Pair %S "%s") (Pair %d "Hello, Ticket!")|} sc_rollup_address tz4_address + amount in Client.transfer client @@ -282,8 +303,28 @@ let test_deposit ~client ~sc_rollup_node ~sc_rollup_client ~sc_rollup_address let* () = assert_state_changed sc_rollup_client prev_state_hash in Lwt.return @@ (level + 1) -let test_tx_kernel_e2e protocol = - let commitment_period = 2 and challenge_window = 5 in +type full_tx_setup = { + node : Node.t; + client : Client.t; + sc_rollup_node : Sc_rollup_node.t; + sc_rollup_client : Sc_rollup_client.t; + sc_rollup_address : string; + dac_node : Dac_node.t; + start_level : int; + mint_and_deposit_contract : string; +} + +let wait_for_pvm_compute_step_many_begins node = + Sc_rollup_node.wait_for node "sc_rollup_node_pvm_compute_step_many_begins.v0" + @@ fun _json -> Option.some () + +let wait_for_pvm_compute_step_many_ends node = + Sc_rollup_node.wait_for node "sc_rollup_node_pvm_compute_step_many_ends.v0" + @@ fun json -> Option.some @@ JSON.(json |-> "elapsed_time" |> as_float) + +let setup_tx_kernel_and_dac ?installer ?installee ~commitment_period + ~challenge_window protocol = + let open Tezos_crypto.Signature in Dac.with_layer1 ~protocol ~commitment_period ~challenge_window @@ fun node client bootstrap1_key -> let sc_rollup_node = @@ -301,14 +342,25 @@ let test_tx_kernel_e2e protocol = ~pvm_name:"wasm_2_0_0" node client - @@ fun dac_node _dac_members -> + @@ fun dac_node dac_members -> (* Start a rollup node *) (* Prepare DAL/DAC: put reveal data in rollup node directory. *) let* () = Dac_node.terminate dac_node in let* () = Dac_node.run dac_node ~wait_ready:true in let* _dir = Dac_node.init_config dac_node in + let dac_member_pk_encoded = + Data_encoding.Binary.to_string_exn Bls.Public_key.encoding + @@ Bls.Public_key.of_b58check_exn + (List.hd dac_members).Account.aggregate_public_key + in (* We can now produce our installer *) - let* installer_kernel = prepare_installer_kernel ~dac_node "tx-kernel" in + let* installer_kernel = + prepare_installer_kernel + ~dac_member_pk:(hex_encode dac_member_pk_encoded) + ~dac_node + ?installer + @@ Option.value ~default:"tx-kernel" installee + in let boot_sector = hex_encode installer_kernel in (* Initialise the sc rollup *) let* sc_rollup_address = @@ -333,7 +385,7 @@ let test_tx_kernel_e2e protocol = sc_rollup_address in let init_level = JSON.(genesis_info |-> "level" |> as_int) in - let* () = Sc_rollup_node.run sc_rollup_node [] in + let* () = Sc_rollup_node.run ~event_level:`Debug sc_rollup_node [] in let sc_rollup_client = Sc_rollup_client.create ~protocol sc_rollup_node in let* level = Sc_rollup_node.wait_for_level ~timeout:30. sc_rollup_node init_level @@ -358,8 +410,31 @@ let test_tx_kernel_e2e protocol = Log.info "The mint and deposit contract %s was successfully originated" mint_and_deposit_contract ; - let level = init_level + 1 in + return + { + node; + client; + sc_rollup_node; + sc_rollup_client; + sc_rollup_address; + dac_node; + start_level = init_level + 1; + mint_and_deposit_contract; + } +let test_tx_kernel_e2e protocol = + let commitment_period = 2 and challenge_window = 5 in + let* { + client; + sc_rollup_node; + sc_rollup_client; + sc_rollup_address; + mint_and_deposit_contract; + start_level; + _; + } = + setup_tx_kernel_and_dac ~commitment_period ~challenge_window protocol + in (* gen two tz4 accounts *) let pkh, _pk, sk = Tezos_crypto.Signature.Bls.generate_key () in let pkh2, _pk2, sk2 = Tezos_crypto.Signature.Bls.generate_key () in @@ -371,8 +446,9 @@ let test_tx_kernel_e2e protocol = ~sc_rollup_client ~sc_rollup_address ~mint_and_deposit_contract - level - @@ Tezos_crypto.Signature.Bls.Public_key_hash.to_b58check pkh + ~level:start_level + (Tezos_crypto.Signature.Bls.Public_key_hash.to_b58check pkh) + 450 in (* Construct transfer *) let ticket amount = @@ -409,9 +485,11 @@ let test_tx_kernel_e2e protocol = |> transactions_batch_of |> external_message_of_batch) in - (* Send transfers *) + (* Send transfer *) let*! prev_state_hash = Sc_rollup_client.state_hash ~hooks sc_rollup_client in - let* () = send_message client (sf "hex:[%S]" transfer_message) in + let* () = + send_message client (sf "hex:[%S]" @@ hex_encode transfer_message) + in let level = level + 1 in let* _ = Sc_rollup_node.wait_for_level ~timeout:30. sc_rollup_node level in let* () = assert_state_changed sc_rollup_client prev_state_hash in @@ -461,7 +539,9 @@ let test_tx_kernel_e2e protocol = (* Send withdrawal *) let*! prev_state_hash = Sc_rollup_client.state_hash ~hooks sc_rollup_client in let*! prev_ticks = Sc_rollup_client.total_ticks ~hooks sc_rollup_client in - let* () = send_message client (sf "hex:[%S]" withdraw_message) in + let* () = + send_message client (sf "hex:[%S]" @@ hex_encode withdraw_message) + in let withdrawal_level = level + 1 in let* _ = Sc_rollup_node.wait_for_level ~timeout:30. sc_rollup_node withdrawal_level @@ -536,6 +616,94 @@ let test_tx_kernel_e2e protocol = in unit +let test_tx_kernel_60k_txs protocol = + let operations_n = 60000 in + let commitment_period = 2 and challenge_window = 5 in + let* { + client; + sc_rollup_node; + sc_rollup_client; + sc_rollup_address; + mint_and_deposit_contract; + start_level; + dac_node; + _; + } = + setup_tx_kernel_and_dac + ~installer:"tx-demo-installer.wasm" + ~installee:"tx-kernel-no-sig" + ~commitment_period + ~challenge_window + protocol + in + (* gen two tz4 accounts *) + let pkh, _pk, sk = Tezos_crypto.Signature.Bls.generate_key () in + let pkh2, _pk2, sk2 = Tezos_crypto.Signature.Bls.generate_key () in + let pkh3, _pk3, sk3 = Tezos_crypto.Signature.Bls.generate_key () in + (* Deposit *) + let* level = + test_deposit + ~client + ~sc_rollup_node + ~sc_rollup_client + ~sc_rollup_address + ~mint_and_deposit_contract + ~level:start_level + (Tezos_crypto.Signature.Bls.Public_key_hash.to_b58check pkh) + (operations_n + 1) + in + (* Construct transfer *) + let ticket amount = + Tx_kernel_no_signing.ticket_of + ~ticketer:mint_and_deposit_contract + ~content:"Hello, Ticket!" + amount + in + let transfer_message = + Tx_kernel_no_signing.( + external_message_of_batch @@ transactions_batch_of + @@ List.init operations_n (fun i -> + multiaccount_tx_of + @@ [ + account_operations_of + ~sk + ~counter:(Int64.of_int i) + [Transfer {destination = pkh2; ticket = ticket 1}]; + account_operations_of + ~sk:sk2 + ~counter:(Int64.of_int i) + [Transfer {destination = pkh3; ticket = ticket 1}]; + account_operations_of + ~sk:sk3 + ~counter:(Int64.of_int i) + [Transfer {destination = pkh; ticket = ticket 1}]; + ])) + in + let* _, raw_operation = + RPC.call + dac_node + (Rollup.Dac.RPC.dac_store_preimage + ~payload:transfer_message + ~pagination_scheme:"Merkle_tree_V0") + in + (* Send transfer *) + let*! prev_state_hash = Sc_rollup_client.state_hash ~hooks sc_rollup_client in + let _ = + let tot_spent = ref 0.0 in + let rec go () = + let* _ = wait_for_pvm_compute_step_many_begins sc_rollup_node in + let* elapsed_time = wait_for_pvm_compute_step_many_ends sc_rollup_node in + tot_spent := !tot_spent +. elapsed_time ; + Format.printf "Spent time in the PVM execution so far %.2f" !tot_spent ; + go () + in + go () + in + let* () = send_message client (sf "hex:[%S]" (hex_encode raw_operation)) in + let level = level + 1 in + let* _ = Sc_rollup_node.wait_for_level sc_rollup_node level in + assert_state_changed sc_rollup_client prev_state_hash + let register_test ?(regression = false) ~__FILE__ ~tags ~title f = let tags = "tx_sc_rollup" :: tags in if regression then Protocol.register_regression_test ~__FILE__ ~title ~tags f @@ -549,4 +717,17 @@ let test_tx_kernel_e2e = ~title:(Printf.sprintf "wasm_2_0_0 - tx kernel should run e2e (kernel_e2e)") test_tx_kernel_e2e -let register ~protocols = test_tx_kernel_e2e protocols +let test_tx_kernel_60k_txs = + register_test + ~regression:true + ~__FILE__ + ~tags:["wasm"; "kernel"; "wasm_2_0_0"; "kernel_e2e"; "60k_txs"] + ~title: + (Printf.sprintf + "wasm_2_0_0 - tx kernel should process 60K transactions with one \ + operation inside (kernel_e2e)") + test_tx_kernel_60k_txs + +let register ~protocols = + test_tx_kernel_e2e protocols ; + test_tx_kernel_60k_txs protocols