From 5c9b44e269dbd6e5bd10853ee54d535866d7b69f Mon Sep 17 00:00:00 2001 From: Emma Turner Date: Thu, 24 Nov 2022 17:24:23 +0000 Subject: [PATCH] Tezt/Scoru/Wasm: e2e test with tickets & tx kernel --- ...0 - kernel should run e2e (kernel_e2e).out | 74 ++++ ...mart_rollup_mint_and_deposit_ticket_016.tz | 34 ++ .../smart_rollup_receive_tickets_016.tz | 9 + .../test/integration/wasm_kernel/README.md | 40 ++ .../wasm_kernel/reveal_installer.wasm | Bin 0 -> 18426 bytes .../integration/wasm_kernel/tx-kernel.wasm | Bin 0 -> 382363 bytes ...rypoint- -aux- earliness- 0- external).out | 4 +- ...rypoint- -aux- earliness- 0- internal).out | 2 +- ...oint- -default- earliness- 0- external.out | 4 +- ...oint- -default- earliness- 0- internal.out | 2 +- ...ntrypoint- -aux- earliness- 0- externa.out | 4 +- ...ntrypoint- -aux- earliness- 0- interna.out | 2 +- ...ntrypoint- -default- earliness- 0- ext.out | 4 +- ...ntrypoint- -default- earliness- 0- int.out | 2 +- ... tx kernel should run e2e (kernel_e2e).out | 191 +++++++++ ...rypoint- -aux- earliness- 0- external).out | 4 +- ...rypoint- -aux- earliness- 0- internal).out | 2 +- ...point- -default- earliness- 0- externa.out | 4 +- ...point- -default- earliness- 0- interna.out | 2 +- ...entrypoint- -aux- earliness- 0- extern.out | 4 +- ...entrypoint- -aux- earliness- 0- intern.out | 2 +- ...entrypoint- -default- earliness- 0- ex.out | 4 +- ...entrypoint- -default- earliness- 0- in.out | 2 +- tezt/tests/sc_rollup.ml | 367 +++++++++++++++++- 24 files changed, 729 insertions(+), 34 deletions(-) create mode 100644 docs/alpha/Alpha- wasm_2_0_0 - kernel should run e2e (kernel_e2e).out create mode 100644 michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz create mode 100644 michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz create mode 100755 src/proto_alpha/lib_protocol/test/integration/wasm_kernel/reveal_installer.wasm create mode 100644 src/proto_alpha/lib_protocol/test/integration/wasm_kernel/tx-kernel.wasm create mode 100644 tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out diff --git a/docs/alpha/Alpha- wasm_2_0_0 - kernel should run e2e (kernel_e2e).out b/docs/alpha/Alpha- wasm_2_0_0 - kernel should run e2e (kernel_e2e).out new file mode 100644 index 000000000000..691d77f97ba5 --- /dev/null +++ b/docs/alpha/Alpha- wasm_2_0_0 - kernel should run e2e (kernel_e2e).out @@ -0,0 +1,74 @@ + +./octez-client --wait none originate sc rollup from '[PUBLIC_KEY_HASH]' of kind wasm_2_0_0 of type 'pair string (ticket string)' booting with 0061736d0100000001690f60037f7f7f017f60027f7f017f60027f7f0060057f7f7f7f7f017f60047f7f7f7f017f60017f0060000060077f7f7f7f7f7f7f0060037f7f7f0060067f7f7f7f7f7f017f60057f7f7f7f7f0060017f017f60017f017e60077f7f7f7f7f7f7f017f60037e7f7f017f029d010510726f6c6c75705f736166655f636f72650b77726974655f6465627567000210726f6c6c75705f736166655f636f72650973746f72655f686173000110726f6c6c75705f736166655f636f72650b73746f72655f7772697465000310726f6c6c75705f736166655f636f72650a73746f72655f6d6f7665000410726f6c6c75705f736166655f636f72650f72657665616c5f707265696d616765000003383705060500050708080202060200090a040b02010508080800080801020001010c080b0d01010a000a00090101000101010401010e0100000405017001121205030100110619037f01418080c0000b7f0041c79fc0000b7f0041d09fc0000b073304066d656d6f727902000b6b65726e656c5f6e65787400060a5f5f646174615f656e6403010b5f5f686561705f6261736503020917010041010b1105371f172928223618242b2f30313233390a82683702000b3101017f23808080800041106b2200248080808000108f80808000200041086a108980808000200041106a2480808080000b170041e080c08000410e418c81c08000109d80808000000bc00101037f23808080800041306b2203248080808000200341286a200110968080800020032802282104200341206a200110968080800041012105024002402000200420032802241091808080000e0401000100010b200341186a200110968080800020032802182105200341106a200110968080800020032802142101200341086a2002109680808000200328020821042003200210968080800020002005200120042003280204109380808000410321050b200341306a24808080800020050ba40402047f017e23808080800041d080016b2201248080808000419c81c080004111109080808000200141d8006a4200370300200141d0006a4200370300200141c8006a42003703002001420037034041002102200141c0006a210302400240024002400340200141c080016a200241d083c080006a2d00002002108b8080800020012d00c080010d0120012d00c180012104200141c080016a200241d183c080006a2d0000200241016a108b8080800020012d00c080010d01200320012d00c180012004410474723a0000200341016a2103200241026a220241c000470d000b200141356a2202200141c0006a41186a290000370000200141306a2203200141c0006a41136a2900003703002001410a6a20012d00423a0000200141086a41136a2003290300370000200141086a41186a2002290000370000200120012f01403b01082001200129004b2205370328200120053700132001200129004337000b200141c0006a41004180800110ba808080001a20014100360228200120004100200141086a200141c0006a41808001200141286a108a808080000240200128020022020d0041f581c080004123109080808000200041b482c0800041d082c0800010888080800041ff01714103460d034127210341d882c0800021020c020b200128020421030c010b41252103419084c0800021020b2002450d00200220031090808080000c010b41ad81c0800041101090808080000b200141d080016a2480808080000bf20401037f23808080800041e0006b220724808080800041bd81c08000411210908080800002400240200241034d0d00410f210241cf81c0800021050c010b02402001200320042005109480808000220820054d0d004120210241b083c0800021050c010b200741c0006a20042008108c80808000024020072d00400d00200741cc006a2802002103200741c8006a28020021090240024020072802440d002007200336024420072009360240200741286a200741c0006a108d80808000200728022c210520072802282102200741206a200741c0006a108d8080800020072802242104200741186a41b482c0800010968080800020072802182103200741106a41b482c0800010968080800020012003200728021420042002200510928080800010958080800041ff01714103470d01200741086a200741c0006a108d8080800020062006280200200728020c6a36020041ff82c08000411a109080808000410021050c030b2007200336023c2007200936023841de81c08000410f109080808000200741c0006a200741386a108e8080800020072802442103024002400240200728025022094120470d00200520086b2109200420086a2104200241016a210820072802402102034020034120490d02200741306a200120082002200420092006108a80808000200341606a2103200241206a210220072802302205450d000b200728023421020c050b200320094f0d010b410021050c030b418080c080004117200741d8006a41d080c0800041c080c0800010aa80808000000b41172102419983c0800021050c010b4108210241ed81c0800021050b2000200236020420002005360200200741e0006a2480808080000b850101017f0240024002400240200141bf7f6a41ff01714106490d002001419f7f6a41ff01714106490d01200141506a220341ff0171410a490d02200041086a2002360200200041046a200141ff0171360200200041013a00000f0b2000200141496a3a00010c020b2000200141a97f6a3a00010c010b200020033a00010b200041003a00000bc80201027f02400240024020020d000c010b024002400240024020012d000022030e020001040b2002417f6a22034104490d02200128000122024118742002410874418080fc07717220024108764180fe037120024118767272220241046a220420034b0d022002417c490d014104200441d884c08000109e80808000000b02402002417f6a22034104490d00200128000122024118742002410874418080fc07717220024108764180fe037120024118767272220241046a20034b0d002002411f710d002000410c6a2002360200200041086a200141056a360200200041046a4101360200200041003a00000f0b200041023a00010c030b2000410c6a2002360200200041086a200141056a360200200041046a4100360200200041003a00000f0b200041023a00010c010b200041026a20033a0000200020024100473a00010b200041013a00000b0c00200020012902003703000b3f01017f200041203602102000200128020022023602002000410c6a20012802042201411f713602002000200141607122013602042000200220016a3602080b02000b0c00200020011080808080000b0c00200120021081808080000b1200200120022003200420051082808080000b110020012002200320041083808080001a0b0e002001200220031084808080000b09004100410320001b0b0c00200020012902003703000b0d0020002802001a037f0c000b0b02000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341e485c0800036020820034183808080003602242003200341206a360218200320033602282003200341046a360220200341086a200210a080808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341e489c0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a200210a080808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341848ac0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a200210a080808000000bd80701067f20002802102103024002400240024002400240200028020822044101460d0020034101470d010b20034101470d03200120026a2105200041146a28020022060d0141002107200121080c020b2000280218200120022000411c6a28020028020c1180808080000021030c030b41002107200121080340200822032005460d020240024020032c00002208417f4c0d00200341016a21080c010b0240200841604f0d00200341026a21080c010b0240200841704f0d00200341036a21080c010b20032d0002413f7141067420032d0001413f71410c747220032d0003413f7172200841ff0171411274418080f0007172418080c400460d03200341046a21080b200720036b20086a21072006417f6a22060d000b0b20082005460d00024020082c00002203417f4a0d0020034160490d0020034170490d0020082d0002413f7141067420082d0001413f71410c747220082d0003413f7172200341ff0171411274418080f0007172418080c400460d010b02400240024020070d00410021080c010b024020072002490d00410021032002210820072002460d010c020b4100210320072108200120076a2c00004140480d010b20082107200121030b2007200220031b21022003200120031b21010b024020040d002000280218200120022000411c6a28020028020c118080808000000f0b2000410c6a28020021050240024020024110490d002001200210b48080800021080c010b024020020d00410021080c010b20024103712107024002402002417f6a41034f0d0041002108200121030c010b2002417c71210641002108200121030340200820032c000041bf7f4a6a200341016a2c000041bf7f4a6a200341026a2c000041bf7f4a6a200341036a2c000041bf7f4a6a2108200341046a21032006417c6a22060d000b0b2007450d000340200820032c000041bf7f4a6a2108200341016a21032007417f6a22070d000b0b0240200520084d0d0041002103200520086b22072106024002400240410020002d0020220820084103461b4103710e03020001020b41002106200721030c010b20074101762103200741016a41017621060b200341016a21032000411c6a28020021072000280204210820002802182100024003402003417f6a2203450d0120002008200728021011818080800000450d000b41010f0b410121032008418080c400460d01200020012002200728020c118080808000000d01410021030340024020062003470d0020062006490f0b200341016a210320002008200728021011818080800000450d000b2003417f6a2006490f0b2000280218200120022000411c6a28020028020c118080808000000f0b20030b5401017f23808080800041206b2203248080808000200341146a4100360200200341e884c08000360210200342013702042003200136021c200320003602182003200341186a3602002003200210a080808000000b810101017f23808080800041306b220324808080800020032001360204200320003602002003411c6a41023602002003412c6a4183808080003602002003420237020c200341b88ac0800036020820034183808080003602242003200341206a3602182003200341046a36022820032003360220200341086a200210a080808000000b110020003502004101200110b8808080000b4c01017f23808080800041206b2202248080808000200241013a00182002200136021420022000360210200241a085c0800036020c200241e884c08000360208200241086a108780808000000bbd05010a7f23808080800041306b2203248080808000200341246a2001360200200341033a0028200342808080808004370308200320003602204100210420034100360218200341003602100240024002400240200228020822050d00200241146a2802002206450d0120022802002101200228021021002006417f6a41ffffffff017141016a2204210603400240200141046a2802002207450d00200328022020012802002007200328022428020c118080808000000d040b2000280200200341086a200041046a280200118180808000000d03200041086a2100200141086a21012006417f6a22060d000c020b0b2002410c6a2802002200450d00200041057421082000417f6a41ffffff3f7141016a2104200228020021014100210603400240200141046a2802002200450d00200328022020012802002000200328022428020c118080808000000d030b2003200520066a2200411c6a2d00003a00282003200041046a290200422089370308200041186a28020021092002280210210a4100210b41002107024002400240200041146a2802000e03010002010b2009410374210c41002107200a200c6a220c280204418480808000470d01200c28020028020021090b410121070b2003200936021420032007360210200041106a28020021070240024002402000410c6a2802000e03010002010b20074103742109200a20096a2209280204418480808000470d01200928020028020021070b4101210b0b2003200736021c2003200b360218200a20002802004103746a2200280200200341086a2000280204118180808000000d02200141086a21012008200641206a2206470d000b0b4100210020042002280204492201450d012003280220200228020020044103746a410020011b22012802002001280204200328022428020c11808080800000450d010b410121000b200341306a24808080800020000b8d0101047f23808080800041206b22022480808080004101210302402000200110a3808080000d002001411c6a2802002104200128021821052002411c6a4100360200200241e884c080003602182002420137020c200241ec84c0800036020820052004200241086a10a1808080000d00200041046a200110a38080800021030b200241206a24808080800020030bec0201037f2380808080004180016b220224808080800002400240024002400240200128020022034110710d0020034120710d0120003502004101200110b88080800021000c040b20002802002100410021030340200220036a41ff006a413041d7002000410f712204410a491b20046a3a00002003417f6a21032000410f4b21042000410476210020040d000b20034180016a22004181014f0d0120014101419887c080004102200220036a4180016a410020036b10ae8080800021000c030b20002802002100410021030340200220036a41ff006a413041372000410f712204410a491b20046a3a00002003417f6a21032000410f4b21042000410476210020040d000b20034180016a22004181014f0d0120014101419887c080004102200220036a4180016a410020036b10ae8080800021000c020b2000418001418887c08000109a80808000000b2000418001418887c08000109a80808000000b20024180016a24808080800020000b0c004281b8aa93f5f3e5ec140bd10302027f017e41f400210341022104024002400240024002400240024002400240200141776a0e1f08020505010505050505050505050505050505050505050505030505050504000b41dc002103200141dc00460d050c040b41f20021030c040b41ee0021030c030b20024180800471450d01412221030c020b200241800271450d00412721030c010b02402002410171450d00200110a680808000450d00200141017267410276410773ad4280808080d0008421050c020b0240024002400240200141808004490d002001418080084f0d01200141bb92c08000412a418f93c0800041c00141cf94c0800041b60310a7808080000d030c020b2001419c8dc08000412841ec8dc0800041a002418c90c0800041af0210a780808000450d010c020b200141e0ffff007141e0cd0a460d00200141c091756a41784b0d00200141feffff0071419ef00a460d00200141d0e2746a41714b0d002001418090746a41e0674b0d002001418080746a419d744b0d0020014180fe476a41caa4544b0d00200141f08338490d010b200141017267410276410773ad4280808080d0008421050c020b41012104200121030b0c010b41032104200121030b2000200336020420002004360200200041086a20053702000b810301057f2000410b74210141002102412021034120210402400240034002400240200341017620026a2203410274418499c080006a280200410b7422052001490d0020052001460d03200321040c010b200341016a21020b200420026b2103200420024b0d000c020b0b200341016a21020b0240024002402002411f4b0d002002410274210341c305210402402002411f460d002003418899c080006a28020041157621040b4100210102402002417f6a220520024b0d00200541204f0d022005410274418499c080006a28020041ffffff007121010b024020042003418499c080006a2802004115762202417f736a450d00200020016b2101200241c305200241c3054b1b21032004417f6a210541002104034020032002460d042004200241849ac080006a2d00006a220420014b0d012005200241016a2202470d000b200521020b20024101710f0b2002412041b098c08000109980808000000b2005412041d098c08000109980808000000b200341c30541c098c08000109980808000000b880301077f41012107024002402002450d00200120024101746a210820004180fe037141087621094100210a200041ff0171210b02400340200141026a210c200a20012d000122026a210d024020012d000022012009460d00200120094b0d03200d210a200c2101200c2008470d010c030b0240200d200a490d00200d20044b0d022003200a6a2101024003402002450d012002417f6a210220012d0000210a200141016a2101200a200b470d000b410021070c050b200d210a200c2101200c2008470d010c030b0b200a200d41fc8cc08000109e80808000000b200d200441fc8cc08000109b80808000000b2006450d00200520066a210b200041ffff037121014101210702400340200541016a210a0240024020052d00002202411874411875220d4100480d00200a21050c010b200a200b460d02200d41ff007141087420052d0001722102200541026a21050b200120026b22014100480d02200741017321072005200b470d000c020b0b41f484c08000412b418c8dc08000109d80808000000b20074101710b1400200120002802002000280204109c808080000b180020002802002001200028020428020c118180808000000b930101017f23808080800041c0006b22052480808080002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a4185808080003602002005420237021c200541f885c0800036021820054186808080003602342005200541306a3602282005200541106a3602382005200541086a360230200541186a200410a080808000000b890601097f024002402002450d002000280204210320002802002104200028020821050340024020052d0000450d00200441a086c080004104200328020c11808080800000450d0041010f0b410021062002210702400240024002400340200120066a21080240024002400240024020074108490d000240200841036a417c7120086b22000d00200741786a2109410021000c030b20072000200020074b1b21004100210a03402008200a6a2d0000410a460d052000200a41016a220a460d020c000b0b2007450d054100210a20082d0000410a460d0320074101460d054101210a20082d0001410a460d0320074102460d054102210a20082d0002410a460d0320074103460d054103210a20082d0003410a460d0320074104460d054104210a20082d0004410a460d0320074105460d054105210a20082d0005410a460d0320074106460d054106210a20082d0006410a470d050c030b2000200741786a22094b0d010b02400340200820006a220a280200220b417f73200b418a94a8d0007341fffdfb776a71200a41046a280200220a417f73200a418a94a8d0007341fffdfb776a7172418081828478710d01200041086a220020094d0d000b0b200020074d0d002000200741a089c08000109a80808000000b20002007460d02200020076b210b200820006a21084100210a024003402008200a6a2d0000410a460d01200b200a41016a220a6a0d000c040b0b2000200a6a210a0b0240200a20066a220041016a22062000490d0020022006490d00200120006a2d0000410a470d00200541013a0000200220064d0d0320062100200120066a2c000041bf7f4c0d040c050b200220066b2107200220064f0d000b0b200541003a0000200221060b2002210020022006460d010b200120024100200641c486c0800010ac80808000000b0240200420012000200328020c11808080800000450d0041010f0b02400240200220004b0d0020022000460d010c040b200120006a2c000041bf7f4c0d030b200120006a2101200220006b22020d000b0b41000f0b200120022000200241d486c0800010ac80808000000ba80a01057f23808080800041f0006b22052480808080002005200336020c20052002360208024002400240024002400240024002402001418102490d004180022106024020002c00800241bf7f4a0d0041ff01210620002c00ff0141bf7f4a0d0041fe01210620002c00fe0141bf7f4a0d0041fd0121060b20062001490d0120062001470d030b20052001360214200520003602104100210641e884c0800021070c010b20052006360214200520003602104105210641c88ac0800021070b2005200636021c20052007360218200220014b22060d01200320014b0d010240200220034b0d00024002402002450d00024020022001490d0020012002460d010c020b200020026a2c00004140480d010b200321020b20052002360220200121030240200220014f0d00200241016a220641002002417d6a2203200320024b1b2203490d04024020032006460d00200020066a200020036a22086b21060240200020026a22092c000041bf7f4c0d002006417f6a21070c010b20032002460d0002402009417f6a22022c000041bf7f4c0d002006417e6a21070c010b20082002460d0002402009417e6a22022c000041bf7f4c0d002006417d6a21070c010b20082002460d0002402009417d6a22022c000041bf7f4c0d002006417c6a21070c010b20082002460d002006417b6a21070b200720036a21030b02402003450d00024020032001490d0020032001460d010c070b200020036a2c000041bf7f4c0d060b20032001460d040240024002400240200020036a22022c00002201417f4a0d0020022d0001413f7121002001411f7121062001415f4b0d01200641067420007221020c020b2005200141ff0171360224410121010c020b200041067420022d0002413f717221000240200141704f0d0020002006410c747221020c010b200041067420022d0003413f71722006411274418080f00071722202418080c400460d060b20052002360224410121012002418001490d00410221012002418010490d0041034104200241808004491b21010b200520033602282005200120036a36022c200541306a41146a4105360200200541ec006a418680808000360200200541e4006a418680808000360200200541c8006a41146a418780808000360200200541d4006a41888080800036020020054205370234200541808cc08000360230200541838080800036024c2005200541c8006a3602402005200541186a3602682005200541106a3602602005200541286a3602582005200541246a3602502005200541206a360248200541306a200410a080808000000b200541e4006a418680808000360200200541c8006a41146a418680808000360200200541d4006a418380808000360200200541306a41146a410436020020054204370234200541ac8bc08000360230200541838080800036024c2005200541c8006a3602402005200541186a3602602005200541106a36025820052005410c6a3602502005200541086a360248200541306a200410a080808000000b2000200141002006200410ac80808000000b20052002200320061b360228200541306a41146a4103360200200541c8006a41146a418680808000360200200541d4006a41868080800036020020054203370234200541f08ac08000360230200541838080800036024c2005200541c8006a3602402005200541186a3602582005200541106a3602502005200541286a360248200541306a200410a080808000000b2003200641c48cc08000109e80808000000b41f484c08000412b2004109d80808000000b2000200120032001200410ac80808000000b950302057f027e23808080800041c0006b22032480808080000240024020002d0008450d0020002802042104410121050c010b2000280204210402402000280200220628020022074104710d0041012105200628021841e686c0800041ea86c0800020041b4102410120041b2006411c6a28020028020c118080808000000d0120012006200228020c1181808080000021050c010b024020040d000240200628021841e886c0800041022006411c6a28020028020c11808080800000450d0041012105410021040c020b200628020021070b41012105200341013a0017200341346a418886c08000360200200341106a200341176a36020020032007360218200320062902183703082006290208210820062902102109200320062d00203a00382003200628020436021c20032009370328200320083703202003200341086a3602302001200341186a200228020c118180808000000d00200328023041e486c080004102200328023428020c1180808080000021050b200020053a00082000200441016a360204200341c0006a24808080800020000b840801077f024002402001450d00412b418080c4002000280200220141017122061b2107200620056a21080c010b200541016a210820002802002101412d21070b0240024020014104710d00410021020c010b0240024020034110490d002002200310b48080800021060c010b024020030d00410021060c010b20034103712109024002402003417f6a41034f0d0041002106200221010c010b2003417c71210a41002106200221010340200620012c000041bf7f4a6a200141016a2c000041bf7f4a6a200141026a2c000041bf7f4a6a200141036a2c000041bf7f4a6a2106200141046a2101200a417c6a220a0d000b0b2009450d000340200620012c000041bf7f4a6a2106200141016a21012009417f6a22090d000b0b200620086a21080b0240024020002802080d0041012101200020072002200310b5808080000d012000280218200420052000411c6a28020028020c118080808000000f0b024002400240024002402000410c6a280200220620084d0d0020002d00004108710d0441002101200620086b22092108410120002d0020220620064103461b4103710e03030102030b41012101200020072002200310b5808080000d042000280218200420052000411c6a28020028020c118080808000000f0b41002108200921010c010b20094101762101200941016a41017621080b200141016a21012000411c6a2802002109200028020421062000280218210a024003402001417f6a2201450d01200a2006200928021011818080800000450d000b41010f0b410121012006418080c400460d01200020072002200310b5808080000d01200028021820042005200028021c28020c118080808000000d01200028021c2109200028021821004100210102400340024020082001470d00200821010c020b200141016a210120002006200928021011818080800000450d000b2001417f6a21010b200120084921010c010b2000280204210b2000413036020420002d0020210c41012101200041013a0020200020072002200310b5808080000d0041002101200620086b22092103024002400240410120002d0020220620064103461b4103710e03020001020b41002103200921010c010b20094101762101200941016a41017621030b200141016a21012000411c6a2802002109200028020421062000280218210a024003402001417f6a2201450d01200a2006200928021011818080800000450d000b41010f0b410121012006418080c400460d00200028021820042005200028021c28020c118080808000000d00200028021c21012000280218210a410021090240034020032009460d01200941016a2109200a2006200128021011818080800000450d000b410121012009417f6a2003490d010b2000200c3a00202000200b36020441000f0b20010b830201017f23808080800041106b22022480808080002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a200110ab808080002101200241106a24808080800020010b7101017f23808080800041206b220224808080800020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41e488c08000200241086a10a1808080002101200241206a24808080800020010b110020002802002001200210ab808080000b8a0201017f23808080800041106b2202248080808000200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a200110ab808080002101200241106a24808080800020010b7401017f23808080800041206b220224808080800020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41e488c08000200241086a10a1808080002101200241206a24808080800020010ba30801097f02400240200041036a417c71220220006b220320014b0d00200341044b0d00200120036b22044104490d0020044103712105410021064100210102402003450d00200341037121070240024020022000417f736a41034f0d0041002101200021020c010b2003417c71210841002101200021020340200120022c000041bf7f4a6a200241016a2c000041bf7f4a6a200241026a2c000041bf7f4a6a200241036a2c000041bf7f4a6a2101200241046a21022008417c6a22080d000b0b2007450d000340200120022c000041bf7f4a6a2101200241016a21022007417f6a22070d000b0b200020036a210002402005450d0020002004417c716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21080340200021062003450d02200341c001200341c001491b220441037121052004410274210902400240200441fc0171220a41027422000d00410021020c010b200620006a2107410021022006210003402000410c6a2802002201417f73410776200141067672418182840871200041086a2802002201417f73410776200141067672418182840871200041046a2802002201417f7341077620014106767241818284087120002802002201417f7341077620014106767241818284087120026a6a6a6a2102200041106a22002007470d000b0b200620096a2100200320046b2103200241087641ff81fc0771200241ff81fc07716a418180046c41107620086a21082005450d000b2006200a4102746a2100200541ffffffff036a220441ffffffff0371220241016a2201410371210302400240200241034f0d00410021020c010b200141fcffffff077121014100210203402000410c6a2802002207417f73410776200741067672418182840871200041086a2802002207417f73410776200741067672418182840871200041046a2802002207417f7341077620074106767241818284087120002802002207417f7341077620074106767241818284087120026a6a6a6a2102200041106a21002001417c6a22010d000b0b02402003450d00200441818080807c6a2101034020002802002207417f7341077620074106767241818284087120026a2102200041046a21002001417f6a22010d000b0b200241087641ff81fc0771200241ff81fc07716a418180046c41107620086a0f0b024020010d0041000f0b20014103712102024002402001417f6a41034f0d00410021080c010b2001417c712101410021080340200820002c000041bf7f4a6a200041016a2c000041bf7f4a6a200041026a2c000041bf7f4a6a200041036a2c000041bf7f4a6a2108200041046a21002001417c6a22010d000b0b2002450d000340200820002c000041bf7f4a6a2108200041016a21002002417f6a22020d000b0b20080b5c01017f0240024002402001418080c400460d0041012104200028021820012000411c6a280200280210118180808000000d010b20020d01410021040b20040f0b2000280218200220032000411c6a28020028020c118080808000000b870401077f23808080800041106b22022480808080004101210302402001280218220441272001411c6a2802002802102205118180808000000d002002200028020041810210a5808080002002410c6a2d00002106200241086a28020021072002280200210102400240024020022802042208418080c400460d0003402001210041dc00210341012101024002400240024020000e0407010300070b200641ff01712100410021064103210141fd00210302400240024020000e06090504000102090b4102210641fb0021030c040b4103210141f5002103410321060c030b4104210641dc0021030c020b41002101200821030c010b4102410120071b2106413041d7002008200741027476410f712203410a491b20036a21032007417f6a410020071b21070b20042003200511818080800000450d000c020b0b03402001210041dc002103410121010240024020000e0404040100040b200641ff01712100410021064103210141fd002103024002400240024020000e06070403020100070b4104210641dc0021030c030b4103210141f5002103410321060c020b4102210641fb0021030c010b4102410120071b2106418080c40020074102747641017141307221032007417f6a410020071b21070b20042003200511818080800000450d000b0b410121030c010b2004412720051181808080000021030b200241106a24808080800020030b8e0201027f23808080800041106b22022480808080002002200128021841f098c0800041112001411c6a28020028020c118080808000003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41e098c0800010ad808080001a20022d00082101024020022802042203450d00200141ff017121004101210120000d0020022802002100024020034101470d0020022d000941ff0171450d0020002d00004104710d0041012101200028021841eb86c0800041012000411c6a28020028020c118080808000000d010b200028021841ec86c0800041012000411c6a28020028020c1180808080000021010b200241106a248080808000200141ff01714100470be90203027f017e037f23808080800041306b2203248080808000412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce008022054290ce007e7da7220741ffff037141e4006e2208410174419a87c080006a2f00003b00002006417e6a2007200841e4006c6b41ffff0371410174419a87c080006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004d0d00200341096a2004417e6a22046a2005a72206200641ffff037141e4006e220641e4006c6b41ffff0371410174419a87c080006a2f00003b00000b024002402006410a490d00200341096a2004417e6a22046a2006410174419a87c080006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141e884c080004100200341096a20046a412720046b10ae808080002104200341306a24808080800020040b1200200141fc88c080004102109c808080000b0e0020002001200210bb808080000bb50101037f024002402002410f4b0d00200021030c010b2000410020006b41037122046a210502402004450d00200021030340200320013a0000200341016a22032005490d000b0b2005200220046b2204417c7122026a2103024020024101480d00200141ff017141818284086c2102034020052002360200200541046a22052003490d000b0b200441037121020b02402002450d00200320026a21050340200320013a0000200341016a22032005490d000b0b20000b0bd11f0100418080c0000bc71f47756172616e7465656420746f2062652065786163742e2f7573722f7372632f74657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e72731700100029000000bc0000002b000000010000000000000001000000020000006578706c696369742070616e6963696e7374616c6c65725f6b65726e656c2f7372632f6c69622e72730000006e0010001b0000001c00000005000000494e5354414c4c494e47204b45524e454c494e5354414c4c4544204b45524e454c454e5452593a2072657665616c5f6c6f6f70544f4f204d414e59204c4556454c53476f742068617368657320706167654445434f44494e4753657474696e672072657665616c6564206b65726e656c20666f7220757067726164652f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d00180110001b0000002f6b65726e656c2f626f6f742e7761736d0000003c011000110000004641494c454420746f20696e7374616c6c206b65726e656c20696e204b45524e454c5f5041544877726f7465206b65726e656c207061676520746f2073746f72654641494c454420746f20777269746520636f6e74656e7452414e206f7574206f662062756666657220666f722066657463685f7061676531616361613939356566383462633234636338626235343564643938363038326662626563303731656431633365393935346162656135656463343431636364524f4f545f505245494d4147455f48415348206d7573742062652076616c6964204845582e74657a6f735f726f6c6c75705f656e636f64696e672f7372632f6461632e72730000003502100020000000a2000000150000002e2e0000680210000200000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c7565000900000000000000010000000a000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200000b002100020000000d002100012000000603a20006802100000000000f502100002000000090000000c000000040000000b0000000c0000000d000000202020206c6962726172792f636f72652f7372632f666d742f6275696c646572732e727324031000200000002f00000021000000240310002000000030000000120000002c0a2c20280a282c296c6962726172792f636f72652f7372632f666d742f6e756d2e72736d0310001b00000065000000140000003078303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900000900000004000000040000000e0000000f0000001000000028296c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300007e041000200000005b0000000500000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820b004100012000000c20410002200000072616e676520656e6420696e64657820f404100010000000c204100022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200014051000160000002a0510000d0000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f66206000004d0510000b0000005805100016000000f402100001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000880510000e00000096051000040000009a05100010000000f402100001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f6620604d0510000b000000cc05100026000000f205100008000000fa05100006000000f4021000010000006c6962726172792f636f72652f7372632f7374722f6d6f642e727300280610001b000000f50000001d0000006c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e727300000054061000250000000a0000001c00000054061000250000001a0000003600000000010305050606020706080709110a1c0b190c1a0d100e0d0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206160d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d0824016a046b02af03bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa02fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5fbfeeef5a62f4fcff9a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a161a261c1417094e042409440d19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d498107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48a4c630d842f8fd18247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781332d03110408818c89046b050d0309071092604709743c80f60a7308701546809a140c570919808781470385420f1584501f80e12b80d52d031a040281401f113a050184e080f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80510030d03740c59070c04010f0c0438080a062808224e81540c1503050307091d030b05060a0a060808070980cb250a84066c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273000000050c1000280000004b00000028000000050c1000280000005700000016000000050c100028000000520000003e0000000900000004000000040000001100000054727946726f6d536c6963654572726f720000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301ce147f31e214cf06ae14f4f6f21509dbca15000cf615165d1a15100da215200e0e15330e16155aee2a156d0e8e15620006e57f001ff5700700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f00070111020701020105000700013d0400076d07006080f000 --burn-cap 9999999 +Node is bootstrapped. +Estimated gas: 2981.423 units (will add 100 for safety) +Estimated storage: 24349 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.01849 + Expected counter: 1 + Gas limit: 3082 + Storage limit: 24369 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.01849 + payload fees(the block proposer) ....... +ꜩ0.01849 + Smart contract rollup origination: + Kind: wasm_2_0_0 + Parameter type: (pair string (ticket string)) + Boot sector Blake2B hash: 'ccd21882933d46881f84d301719454d781162b0b0d09b31d815949af4b776af9' + This smart contract rollup origination was successfully applied + Consumed gas: 2981.423 + Storage size: 24349 bytes + Address: [SC_ROLLUP_HASH] + Genesis commitment hash: [SC_ROLLUP_COMMITMENT_HASH] + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ6.08725 + storage fees ........................... +ꜩ6.08725 + + +./octez-client rpc get '/chains/main/blocks/head/context/sc_rollup/[SC_ROLLUP_HASH]/genesis_info' +{ "level": 2, + "commitment_hash": "[SC_ROLLUP_COMMITMENT_HASH]" } + +./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks +"11000000003" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks +"11000000006" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks +"11000000006" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks +"11000000009" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks +"11000000009" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash +"[SC_ROLLUP_PVM_STATE_HASH]" + +./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks +"11000000012" diff --git a/michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz b/michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz new file mode 100644 index 000000000000..5eb75c312971 --- /dev/null +++ b/michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz @@ -0,0 +1,34 @@ +# A contract for depositing tickets to a rollup. It takes as parameters: +# - A contract of type ticket string and rollup account pair +# - A string representing a rollup account +# - An amount +# - A ticket content +# It mints a new ticket with the amount and content and sends it to the +# contract/rollup along with the given account. +parameter + (pair (pair (contract %rollup (pair string (ticket string))) (string %rollup_account)) + (pair (nat %ticket_amount) (string %ticket_content))) ; +storage unit ; +code { CAR ; + DUP ; + CAR ; + CAR ; + PUSH mutez 0 ; + DUP 3 ; + CDR ; + CAR ; + DUP 4 ; + CDR ; + CDR ; + TICKET ; + ASSERT_SOME ; + DIG 3 ; + CAR ; + CDR ; + PAIR ; + TRANSFER_TOKENS ; + PUSH unit Unit ; + NIL operation ; + DIG 2 ; + CONS ; + PAIR } \ No newline at end of file diff --git a/michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz b/michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz new file mode 100644 index 000000000000..3dca4f086f4e --- /dev/null +++ b/michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz @@ -0,0 +1,9 @@ +# A contract that keeps a list of tickets. It provides two entrypoints: +# - [burn_all_tickets] for emptying the list +# - [receive_tickets] for adding a given ticket to the list +parameter (or (unit %burn_all_tickets) (ticket %receive_tickets string)) ; +storage (list (ticket string)) ; +code { UNPAIR ; + IF_LEFT + { DROP 2 ; NIL (ticket string) ; NIL operation ; PAIR } + { CONS ; NIL operation ; PAIR } } \ No newline at end of file diff --git a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/README.md b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/README.md index a9c3e464230a..31ee6c88983e 100644 --- a/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/README.md +++ b/src/proto_alpha/lib_protocol/test/integration/wasm_kernel/README.md @@ -54,3 +54,43 @@ This simple kernel writes the external messages it receives in its outbox. To achieve that, it needs to take the encoding of the inputs into account to extract the payload to push into the outbox. + +# reveal_installer + +The `reveal_installer` is a kernel that can be used to originate a rollup, and install a larger kernel leveraging the *DAC* mechanism. + +To build, run the following from the checked-out `tezos/kernel` repo: +```shell +git checkout 69f69144764dcd59dcc1fd144bf6e8f707f0431e + +# Load the required rust toolchain dockerfile +source scripts/cargo-docker.sh + +cargo make wasm-preimage-installer + +cp target/wasm32-unknown-unknown/release/tezos_rollup_installer_kernel.wasm reveal_installer.wasm +wasm-strip reveal_installer.wasm +``` + +You then need to replace the value `1acaa995ef84bc24cc8bb545dd986082fbbec071ed1c3e9954abea5edc441ccd3a` in the installer binary, with the root reveal hash, of the kernel you'd like to install. + +See `prepare_installer_kernel` in [sc_rollup.ml](../../../../../../tezt/tests/sc_rollup.ml) for an example installation of a kernel. + +# tx-kernel.wasm +The `tx-kernel` is a TORU-like program for transacting in a wasm rollup. + +To build, run the following from the checked-out `tezos/kernel` repo: +```shell +git checkout 69f69144764dcd59dcc1fd144bf6e8f707f0431e + +# Load the required rust toolchain dockerfile +source scripts/cargo-docker.sh + +cargo make wasm-tx-kernel + +cp target/wasm32-unknown-unknown/release/kernel_core.wasm tx-kernel.wasm + +wasm-strip tx-kernel.wasm +``` + +This can be installed using the *reveal_installer* described above. 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 new file mode 100755 index 0000000000000000000000000000000000000000..a4c803d28b964925827f520ad5e47d23188391ba GIT binary patch literal 18426 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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..c67d6bbf46747fc97bb6e61658835c100d17bf98 GIT binary patch literal 382363 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⪙ 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 z%0DMg-Gw8ZmM;1gQ1vHois@Ortb1Q(?41;!Ffr@+q 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 E0L!MzhyVZp literal 0 HcmV?d00001 diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out index 718b9da060b6..0c670ae7283b 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["3337204b54314e526e77786b703171704678706a564e7636714b444e4c4d633748793469794b5925617578"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.721 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.721 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002fa10a0d6706c3bf43b5c43a56a49ad1632ab74fd726fd4b29326976070d0ee1ffa10a0d6706c3bf43b5c43a56a49ad1632ab74fd726fd4b29326976070d0ee1f00100007d0030170000382066f7574707574810130c8bf1dd363ea01e68dcc907aa6b151279d7df8452a7da2bb7cf1c23c9458b696ff0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c07bdef93456b7a2f460e71a4482f214a38ed7f93a697dc7d2d0be9d9fefc54c65c0341f98e2e09c8e648e2ad9572b9a0a6c2fadeb87e5334650a4e0bb0abefd5f49fa10a0d6706c3bf43b5c43a56a49ad1632ab74fd726fd4b29326976070d0ee1f0000000500000000001f00250197df2be9ed7a1cc34521d82be23fe949a0f016900000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.929 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out index 3c3bbd6a90dc..0af868d7535b 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300026bce65bde33033eb7c782906b98edafc2b8072aad985db5cbf1ab05cf173e48a6bce65bde33033eb7c782906b98edafc2b8072aad985db5cbf1ab05cf173e48a00100007d0030170000382066f7574707574810130c8bf1dd363ea01e68dcc907aa6b151279d7df8452a7da2bb7cf1c23c9458b696ff0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c07bdef93456b7a2f460e71a4482f214a38ed7f93a697dc7d2d0be9d9fefc54c65c06cebd770767d6e9e746e42e5b2c772092c7874983cd57a5a7d57128ad2a26eb76bce65bde33033eb7c782906b98edafc2b8072aad985db5cbf1ab05cf173e48a0000000500000000001f00250197df2be9ed7a1cc34521d82be23fe949a0f016900000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.929 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out index 1d937e4db18b..2bf2303e00f8 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["3337204b54314e526e77786b703171704678706a564e7636714b444e4c4d633748793469794b59"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.701 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.701 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002c7813f75f7b36346ec4a6010e249f50931adc0a74bd9a50c8a442a44a00a7787c7813f75f7b36346ec4a6010e249f50931adc0a74bd9a50c8a442a44a00a778700100007d0030170000382066f7574707574810130c8c4f1477d639b957347be8f91ba313924a5e30b578059a03cdec2addccbf84e4f0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c0c46b9e42a3f4d547fbf5d6acd599f631472ec25f2a602c2226635892e2cd9c59c097354cf34106c0e824fd1b44d759ce74dc917914c3ab5b23d62120d4ff1dabd3c7813f75f7b36346ec4a6010e249f50931adc0a74bd9a50c8a442a44a00a77870000000500000000002300250197df2be9ed7a1cc34521d82be23fe949a0f01690000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.911 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- internal.out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- internal.out index e4b6bbcb305b..50614d629d8c 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- internal.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- internal.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002edb5f04499db8972767955068567e5421ca601364a20c1cd3e22b176084f8b94edb5f04499db8972767955068567e5421ca601364a20c1cd3e22b176084f8b9400100007d0030170000382066f7574707574810130c8c4f1477d639b957347be8f91ba313924a5e30b578059a03cdec2addccbf84e4f0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c0c46b9e42a3f4d547fbf5d6acd599f631472ec25f2a602c2226635892e2cd9c59c093cf7b0656a49a394fee9856478046aff511d04dd9d8cfcfa32a2182074c29c3edb5f04499db8972767955068567e5421ca601364a20c1cd3e22b176084f8b940000000500000000002300250197df2be9ed7a1cc34521d82be23fe949a0f01690000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.911 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out index 3ece7ff50184..c7a357800892 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.685 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.685 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002cedab059ceaadc4aed43f193789b0f68014da2ed65761c03a8fe7b58cfcd1648cedab059ceaadc4aed43f193789b0f68014da2ed65761c03a8fe7b58cfcd16480005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c03c8a412b606614757b99ab1cdad9c8355b06e80804cbda187baa6e341bfb09b1820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000080133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300060004c0135db12c9dff68c37e3ca222ff3610666772481b317188e348aff2b0f96247740003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02800000024000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578066c656e677468c001010136820468656164c00100066c656e677468c00100c0c9e4c229dd7bef220d2450007566e287ff2d159abe2d41f35a62cf6020bfce320134810d6d6573736167655f6c696d6974c002a401047761736dd0fe03ae018cf40eea79437f939ebfc1536e92d117f97c036943fe5a37a2a038b9cedab059ceaadc4aed43f193789b0f68014da2ed65761c03a8fe7b58cfcd16480000000500000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.478 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- interna.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- interna.out index fddb0ee30e13..efe79e59f4d4 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- interna.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- interna.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300023a8abde348e7b8563a9afbb96075cca91561a4e602e7ea15c165c1c9d714c0cf3a8abde348e7b8563a9afbb96075cca91561a4e602e7ea15c165c1c9d714c0cf0005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c008a566a6e047f5869527e0aa0fbbe7af6182e3f5bb9b9abb712cdac0ba8d3e4d820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000060133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300040003e00003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02800000024000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578066c656e677468c001010136820468656164c00100066c656e677468c00100c0ce13fd6c245acffc4c3c2ac8f373b58d30b0f11d1f1b11e8ef99563beb593eec0134810d6d6573736167655f6c696d6974c002a401047761736dd053d416b7282d6e92d846683e6b738a5dc1f374d3857e9d9cf8125b268f60bb053a8abde348e7b8563a9afbb96075cca91561a4e602e7ea15c165c1c9d714c0cf0000000500000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.062 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out index 5d31b0a8379e..9a87d344aa64 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["0000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.706 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.706 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300022d4381cd8e8ccb20a576a560f2a726f2c0c2ff04cc16286a2d7a566ea909c3292d4381cd8e8ccb20a576a560f2a726f2c0c2ff04cc16286a2d7a566ea909c3290005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c03c8a412b606614757b99ab1cdad9c8355b06e80804cbda187baa6e341bfb09b1820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000080133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300060004c0135db12c9dff68c37e3ca222ff3610666772481b317188e348aff2b0f96247740003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02c000000280000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74066c656e677468c001010136820468656164c00100066c656e677468c00100c0c9e4c229dd7bef220d2450007566e287ff2d159abe2d41f35a62cf6020bfce320134810d6d6573736167655f6c696d6974c002a401047761736dd0fe03ae018cf40eea79437f939ebfc1536e92d117f97c036943fe5a37a2a038b92d4381cd8e8ccb20a576a560f2a726f2c0c2ff04cc16286a2d7a566ea909c32900000005000000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.512 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- int.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- int.out index 42f217a1eb80..4cedba5291e0 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- int.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- int.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300021d4709e472794feeea584b82f83dc63c425a226a6334d1c08cad95799b575ca91d4709e472794feeea584b82f83dc63c425a226a6334d1c08cad95799b575ca90005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c008a566a6e047f5869527e0aa0fbbe7af6182e3f5bb9b9abb712cdac0ba8d3e4d820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000060133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300040003e00003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02c000000280000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74066c656e677468c001010136820468656164c00100066c656e677468c00100c0ce13fd6c245acffc4c3c2ac8f373b58d30b0f11d1f1b11e8ef99563beb593eec0134810d6d6573736167655f6c696d6974c002a401047761736dd053d416b7282d6e92d846683e6b738a5dc1f374d3857e9d9cf8125b268f60bb051d4709e472794feeea584b82f83dc63c425a226a6334d1c08cad95799b575ca900000005000000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.096 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out new file mode 100644 index 000000000000..677bf7b8e3f6 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - tx kernel should run e2e (kernel_e2e).out @@ -0,0 +1,191 @@ + +./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 +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.019077 + Expected counter: 1 + Gas limit: 2849 + Storage limit: 6578 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.019077 + payload fees(the block proposer) ....... +ꜩ0.019077 + Smart rollup origination: + Kind: wasm_2_0_0 + Parameter type: (pair string (ticket string)) + Kernel Blake2B hash: '1f1ec0db25f98f39d3932abb67a9ef15429d004da8751ffa18d8705864e3bf23' + 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 450 "Hello, Ticket!")' +Node is bootstrapped. +Estimated gas: 4058.254 units (will add 100 for safety) +Estimated storage: 67 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.000779 + Expected counter: 3 + Gas limit: 4159 + Storage limit: 87 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.000779 + payload fees(the block proposer) ....... +ꜩ0.000779 + Transaction: + Amount: ꜩ0 + From: [PUBLIC_KEY_HASH] + To: [CONTRACT_HASH] + Parameter: (Pair (Pair "[SMART_ROLLUP_HASH]" "[TX_ROLLUP_PUBLIC_KEY_HASH]") + (Pair 450 "Hello, Ticket!")) + This transaction was successfully applied + Updated storage: Unit + Storage size: 205 bytes + Paid storage size diff: 67 bytes + Consumed gas: 3050.860 + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.01675 + storage fees ........................... +ꜩ0.01675 + 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!" 450))) + This transaction was successfully applied + Consumed gas: 1007.394 + Ticket updates: + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Hello, Ticket!" + Account updates: + [SMART_ROLLUP_HASH] ... +450 + + +./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-smart-rollup-client-alpha rpc get /global/block/head/total_ticks +"143000000000" + +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 +Node is bootstrapped. +Estimated gas: 1003.828 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.000602 + Expected counter: 1 + Gas limit: 1104 + Storage limit: 0 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.000602 + payload fees(the block proposer) ....... +ꜩ0.000602 + Smart rollup messages submission: + This smart rollup messages submission was successfully applied + Consumed gas: 1003.828 + + +./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/total_ticks +"209000000000" + +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from bootstrap1 for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 +Node is bootstrapped. +Estimated gas: 8662.482 units (will add 100 for safety) +Estimated storage: 124 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.001864 + Expected counter: 14 + Gas limit: 8763 + Storage limit: 144 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.001864 + payload fees(the block proposer) ....... +ꜩ0.001864 + Smart rollup output message execution: + Address: [SMART_ROLLUP_HASH] + Cemented commitment: [SC_ROLLUP_COMMITMENT_HASH] + This smart output message execution was successfully applied + Paid storage size diff: 71 bytes + Consumed gas: 6328.344 + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.01775 + storage fees ........................... +ꜩ0.01775 + Ticket updates: + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Hello, Ticket!" + Account updates: + [SMART_ROLLUP_HASH] ... -399 + Internal operations: + Internal Transaction: + Amount: ꜩ0 + From: [SMART_ROLLUP_HASH] + To: [CONTRACT_HASH] + Entrypoint: receive_tickets + Parameter: (Pair [MICHELINE_KT1_BYTES] (Pair "Hello, Ticket!" 399)) + This transaction was successfully applied + Updated storage: + { Pair [MICHELINE_KT1_BYTES] (Pair "Hello, Ticket!" 399) } + Storage size: 175 bytes + Paid storage size diff: 53 bytes + Consumed gas: 2334.138 + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.01325 + storage fees ........................... +ꜩ0.01325 + Ticket updates: + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Hello, Ticket!" + Account updates: + [CONTRACT_HASH] ... +399 + diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out index 718b9da060b6..0c670ae7283b 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["3337204b54314e526e77786b703171704678706a564e7636714b444e4c4d633748793469794b5925617578"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.721 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.721 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002fa10a0d6706c3bf43b5c43a56a49ad1632ab74fd726fd4b29326976070d0ee1ffa10a0d6706c3bf43b5c43a56a49ad1632ab74fd726fd4b29326976070d0ee1f00100007d0030170000382066f7574707574810130c8bf1dd363ea01e68dcc907aa6b151279d7df8452a7da2bb7cf1c23c9458b696ff0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c07bdef93456b7a2f460e71a4482f214a38ed7f93a697dc7d2d0be9d9fefc54c65c0341f98e2e09c8e648e2ad9572b9a0a6c2fadeb87e5334650a4e0bb0abefd5f49fa10a0d6706c3bf43b5c43a56a49ad1632ab74fd726fd4b29326976070d0ee1f0000000500000000001f00250197df2be9ed7a1cc34521d82be23fe949a0f016900000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.929 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out index 3c3bbd6a90dc..0af868d7535b 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -aux- earliness- 0- internal).out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300026bce65bde33033eb7c782906b98edafc2b8072aad985db5cbf1ab05cf173e48a6bce65bde33033eb7c782906b98edafc2b8072aad985db5cbf1ab05cf173e48a00100007d0030170000382066f7574707574810130c8bf1dd363ea01e68dcc907aa6b151279d7df8452a7da2bb7cf1c23c9458b696ff0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c07bdef93456b7a2f460e71a4482f214a38ed7f93a697dc7d2d0be9d9fefc54c65c06cebd770767d6e9e746e42e5b2c772092c7874983cd57a5a7d57128ad2a26eb76bce65bde33033eb7c782906b98edafc2b8072aad985db5cbf1ab05cf173e48a0000000500000000001f00250197df2be9ed7a1cc34521d82be23fe949a0f016900000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.929 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- externa.out b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- externa.out index 1d937e4db18b..2bf2303e00f8 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- externa.out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- externa.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["3337204b54314e526e77786b703171704678706a564e7636714b444e4c4d633748793469794b59"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.701 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.701 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002c7813f75f7b36346ec4a6010e249f50931adc0a74bd9a50c8a442a44a00a7787c7813f75f7b36346ec4a6010e249f50931adc0a74bd9a50c8a442a44a00a778700100007d0030170000382066f7574707574810130c8c4f1477d639b957347be8f91ba313924a5e30b578059a03cdec2addccbf84e4f0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c0c46b9e42a3f4d547fbf5d6acd599f631472ec25f2a602c2226635892e2cd9c59c097354cf34106c0e824fd1b44d759ce74dc917914c3ab5b23d62120d4ff1dabd3c7813f75f7b36346ec4a6010e249f50931adc0a74bd9a50c8a442a44a00a77870000000500000000002300250197df2be9ed7a1cc34521d82be23fe949a0f01690000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.911 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- interna.out b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- interna.out index e4b6bbcb305b..50614d629d8c 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- interna.out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- arith - trigger exec output (entrypoint- -default- earliness- 0- interna.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002edb5f04499db8972767955068567e5421ca601364a20c1cd3e22b176084f8b94edb5f04499db8972767955068567e5421ca601364a20c1cd3e22b176084f8b9400100007d0030170000382066f7574707574810130c8c4f1477d639b957347be8f91ba313924a5e30b578059a03cdec2addccbf84e4f0c7061727365725f7374617465c8407f958990678e2e9fb06758bc6520dae46d838d39948a4c51a5b19bd079293dc0fa513fc9657217226bee9cf2242f01b8939ef07b7363a2c7ba435a57c2cbed83c0c46b9e42a3f4d547fbf5d6acd599f631472ec25f2a602c2226635892e2cd9c59c093cf7b0656a49a394fee9856478046aff511d04dd9d8cfcfa32a2182074c29c3edb5f04499db8972767955068567e5421ca601364a20c1cd3e22b176084f8b940000000500000000002300250197df2be9ed7a1cc34521d82be23fe949a0f01690000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6403.911 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- extern.out b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- extern.out index 3ece7ff50184..c7a357800892 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- extern.out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- extern.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.685 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.685 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x030002cedab059ceaadc4aed43f193789b0f68014da2ed65761c03a8fe7b58cfcd1648cedab059ceaadc4aed43f193789b0f68014da2ed65761c03a8fe7b58cfcd16480005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c03c8a412b606614757b99ab1cdad9c8355b06e80804cbda187baa6e341bfb09b1820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000080133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300060004c0135db12c9dff68c37e3ca222ff3610666772481b317188e348aff2b0f96247740003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02800000024000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578066c656e677468c001010136820468656164c00100066c656e677468c00100c0c9e4c229dd7bef220d2450007566e287ff2d159abe2d41f35a62cf6020bfce320134810d6d6573736167655f6c696d6974c002a401047761736dd0fe03ae018cf40eea79437f939ebfc1536e92d117f97c036943fe5a37a2a038b9cedab059ceaadc4aed43f193789b0f68014da2ed65761c03a8fe7b58cfcd16480000000500000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.478 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- intern.out b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- intern.out index fddb0ee30e13..efe79e59f4d4 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- intern.out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- intern.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300023a8abde348e7b8563a9afbb96075cca91561a4e602e7ea15c165c1c9d714c0cf3a8abde348e7b8563a9afbb96075cca91561a4e602e7ea15c165c1c9d714c0cf0005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c008a566a6e047f5869527e0aa0fbbe7af6182e3f5bb9b9abb712cdac0ba8d3e4d820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000060133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300040003e00003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02800000024000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578066c656e677468c001010136820468656164c00100066c656e677468c00100c0ce13fd6c245acffc4c3c2ac8f373b58d30b0f11d1f1b11e8ef99563beb593eec0134810d6d6573736167655f6c696d6974c002a401047761736dd053d416b7282d6e92d846683e6b738a5dc1f374d3857e9d9cf8125b268f60bb053a8abde348e7b8563a9afbb96075cca91561a4e602e7ea15c165c1c9d714c0cf0000000500000000001f002501ad75954076855de223815c6386d17c22aa5e72c70000000003617578 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.062 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ex.out b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ex.out index 5d31b0a8379e..9a87d344aa64 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ex.out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ex.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none send smart rollup message 'hex:["0000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74"]' from bootstrap2 +./octez-client --wait none send smart rollup message '[SMART_ROLLUP_EXTERNAL_MESSAGES]' from bootstrap2 Node is bootstrapped. Estimated gas: 1002.706 units (will add 100 for safety) Estimated storage: no bytes added @@ -58,7 +58,7 @@ This sequence of operations was run: Consumed gas: 1002.706 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300022d4381cd8e8ccb20a576a560f2a726f2c0c2ff04cc16286a2d7a566ea909c3292d4381cd8e8ccb20a576a560f2a726f2c0c2ff04cc16286a2d7a566ea909c3290005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c03c8a412b606614757b99ab1cdad9c8355b06e80804cbda187baa6e341bfb09b1820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000080133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300060004c0135db12c9dff68c37e3ca222ff3610666772481b317188e348aff2b0f96247740003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02c000000280000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74066c656e677468c001010136820468656164c00100066c656e677468c00100c0c9e4c229dd7bef220d2450007566e287ff2d159abe2d41f35a62cf6020bfce320134810d6d6573736167655f6c696d6974c002a401047761736dd0fe03ae018cf40eea79437f939ebfc1536e92d117f97c036943fe5a37a2a038b92d4381cd8e8ccb20a576a560f2a726f2c0c2ff04cc16286a2d7a566ea909c32900000005000000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.512 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- in.out b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- in.out index 42f217a1eb80..4cedba5291e0 100644 --- a/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- in.out +++ b/tezt/tests/expected/sc_rollup.ml/Mumbai- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- in.out @@ -33,7 +33,7 @@ This sequence of operations was run: storage fees ........................... +ꜩ1.638 -./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof 0x0300021d4709e472794feeea584b82f83dc63c425a226a6334d1c08cad95799b575ca91d4709e472794feeea584b82f83dc63c425a226a6334d1c08cad95799b575ca90005820764757261626c65d07eb5216be3fcfd8317136e559c80d1a5eeb8f7b684c2101e92efb2b1b9c5324603746167c00800000004536f6d650003c008a566a6e047f5869527e0aa0fbbe7af6182e3f5bb9b9abb712cdac0ba8d3e4d820576616c7565810370766d8107627566666572738205696e707574820468656164c00100066c656e677468c00100066f75747075740004820132810a6c6173745f6c6576656cc004000000060133810f76616c69646974795f706572696f64c00400013b0082013181086f7574626f78657300040003e00003c046249f852b8b3004ec9a6b9e479c88d4b0ead13b4dbc4f54f6483aa5b4a622708201350003810468656164c001008208636f6e74656e7473810130c02c000000280000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74066c656e677468c001010136820468656164c00100066c656e677468c00100c0ce13fd6c245acffc4c3c2ac8f373b58d30b0f11d1f1b11e8ef99563beb593eec0134810d6d6573736167655f6c696d6974c002a401047761736dd053d416b7282d6e92d846683e6b738a5dc1f374d3857e9d9cf8125b268f60bb051d4709e472794feeea584b82f83dc63c425a226a6334d1c08cad95799b575ca900000005000000000023002501ad75954076855de223815c6386d17c22aa5e72c7000000000764656661756c74 --burn-cap 10 +./octez-client --wait none execute outbox message of smart rollup '[SMART_ROLLUP_HASH]' from '[PUBLIC_KEY_HASH]' for commitment hash '[SC_ROLLUP_COMMITMENT_HASH]' and output proof '[SMART_ROLLUP_BYTES]' --burn-cap 10 Node is bootstrapped. Estimated gas: 6407.096 units (will add 100 for safety) Estimated storage: 5 bytes added (will add 20 for safety) diff --git a/tezt/tests/sc_rollup.ml b/tezt/tests/sc_rollup.ml index 713aeda28253..06263cad6ab6 100644 --- a/tezt/tests/sc_rollup.ml +++ b/tezt/tests/sc_rollup.ml @@ -32,7 +32,22 @@ open Base -let hooks = Tezos_regression.hooks +(* + SC tests may contain arbitrary/generated bytes in external messages, + and captured deposits/withdrawals contain byte sequences that change + for both proofs and contract addresses. + *) +let replace_variables string = + string + |> replace_string ~all:true (rex "0x01\\w{40}00") ~by:"[MICHELINE_KT1_BYTES]" + |> replace_string ~all:true (rex "0x.*") ~by:"[SMART_ROLLUP_BYTES]" + |> replace_string + ~all:true + (rex "hex\\:\\[\".*?\"\\]") + ~by:"[SMART_ROLLUP_EXTERNAL_MESSAGES]" + |> Tezos_regression.replace_variables + +let hooks = Tezos_regression.hooks_custom ~replace_variables () (* @@ -56,6 +71,14 @@ let get_last_published_commitment = let hex_encode (input : string) : string = match Hex.of_string input with `Hex s -> s +let load_kernel_file name : string = + let open Tezt.Base in + let kernel_file = + project_root // Filename.dirname __FILE__ + // "../../src/proto_alpha/lib_protocol/test/integration/wasm_kernel" // name + in + read_file kernel_file + (* [read_kernel filename] reads binary encoded WebAssembly module (e.g. `foo.wasm`) and returns a hex-encoded Wasm PVM boot sector, suitable for passing to [originate_sc_rollup] or [setup_rollup]. @@ -65,14 +88,7 @@ let hex_encode (input : string) : string = Note that this uses [Tezos_scoru_wasm.Gather_floppies.Complete_kernel], so the kernel must fit into a single Tezos operation. *) -let read_kernel name : string = - let open Tezt.Base in - let kernel_file = - project_root // Filename.dirname __FILE__ - // "../../src/proto_alpha/lib_protocol/test/integration/wasm_kernel" - // (name ^ ".wasm") - in - hex_encode (read_file kernel_file) +let read_kernel name : string = hex_encode (load_kernel_file (name ^ ".wasm")) (* Number of levels needed to process a head as finalized. This value should be the same as `node_context.block_finality_time`, where `node_context` is @@ -3485,6 +3501,334 @@ let test_refutation_reward_and_punishment ~kind = unit +(* Testing the installation of a larger kernel, with e2e messages. + + When a kernel is too large to be originated directly, we can install + it by using the 'reveal_installer' kernel. This leverages the reveal + preimage+DAC mechanism to install the tx kernel. + + We then deposit a ticket into the tx kernel, and verify that we are + able to withdraw. +*) +let prepare_installer_kernel ~dal_node installee = + let installer_dummy_hash = + "1acaa995ef84bc24cc8bb545dd986082fbbec071ed1c3e9954abea5edc441ccd3a" + in + let installer = load_kernel_file "reveal_installer.wasm" in + let installee = load_kernel_file (installee ^ ".wasm") in + let* root_hash, _ = + RPC.call + dal_node + (Rollup.Dal.RPC.dac_store_preimage + ~payload:installee + ~pagination_scheme:"Merkle_tree_V0") + in + (* 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 + in + return installer + +(* TX Kernel external message encodings *) +let tx_kernel_op_to_external_message sk operation = + let v1_batch_prefix = Bytes.make 1 @@ Char.chr 0 in + let transaction = Data_encoding.(Binary.to_bytes_exn bytes operation) in + let transaction_list = + Data_encoding.(Binary.to_bytes_exn bytes transaction) + in + let external_message = Bytes.cat v1_batch_prefix transaction_list in + let signature = Tezos_crypto.Signature.Bls.sign sk transaction in + let pk = Tezos_crypto.Signature.Bls.Secret_key.to_public_key sk in + assert ( + Tezos_crypto.Signature.Bls.aggregate_check + [(pk, None, transaction)] + signature) ; + + let signature = Tezos_crypto.Signature.Bls.to_bytes signature in + Hex.show @@ Hex.of_bytes @@ Bytes.cat external_message signature + +(* String ticket encoding for tx kernel. *) +let tx_kernel_string_ticket_repr ticketer contents amount = + let open Tezos_protocol_alpha.Protocol.Alpha_context in + let ticketer = Result.get_ok (Contract.of_b58check ticketer) in + Printf.sprintf + "\007\007\n\000\000\000\022%s\007\007\001%s\000%s" + Data_encoding.(Binary.to_string_exn Contract.encoding ticketer) + Data_encoding.(Binary.to_string_exn bytes @@ Bytes.of_string contents) + Data_encoding.(Binary.to_string_exn z @@ Z.of_int amount) + +(* Single withdrawal encoding *) +let tx_kernel_withdrawal_repr ~counter account_pk dest ticket entrypoint = + let open Tezos_protocol_alpha.Protocol in + let open Alpha_context in + let withdrawal_prefix = "\000" in + let contract_bytes = + Data_encoding.( + Binary.to_string_exn + Contract_hash.encoding + (Tezos_protocol_alpha.Protocol.Contract_hash.of_b58check_exn dest)) + in + let entrypoint_bytes = + Data_encoding.( + Binary.to_string_exn Entrypoint.simple_encoding + @@ Entrypoint.of_string_strict_exn entrypoint) + in + let withdrawal_operation = + Bytes.of_string @@ withdrawal_prefix ^ contract_bytes ^ ticket + ^ entrypoint_bytes + in + let signer_bytes = + "\000" (* PK signer tag *) + ^ Data_encoding.( + Binary.to_string_exn + Tezos_crypto.Signature.Bls.Public_key.encoding + Tezos_crypto.Signature.Bls.Public_key.(of_b58check_exn account_pk)) + in + let counter = Data_encoding.(Binary.to_string_exn int64 counter) in + let contents = + Data_encoding.(Binary.to_string_exn bytes withdrawal_operation) + in + signer_bytes ^ counter ^ contents + +(* 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 = + 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!")|} + sc_rollup_address + tz4_address + in + Client.transfer + client + ~hooks + ~amount:Tez.zero + ~giver:Constant.bootstrap1.alias + ~receiver:mint_and_deposit_contract + ~arg + ~burn_cap:(Tez.of_int 1000) + in + let* () = Client.bake_for_and_wait client in + let* _ = + Sc_rollup_node.wait_for_level ~timeout:30. sc_rollup_node (level + 1) + in + let*! state_hash = Sc_rollup_client.state_hash ~hooks sc_rollup_client in + let () = + Check.(state_hash <> prev_state_hash) + Check.string + ~error_msg:"State hash has not changed (%L <> %R)" + in + Lwt.return @@ (level + 1) + +let test_tx_kernel_e2e protocol = + let commitment_period = 2 and challenge_window = 5 in + Dal.with_layer1 ~protocol ~commitment_period ~challenge_window + @@ fun _parameters _cryptobox node client -> + Dal.with_dal_node node client @@ fun bootstrap1_key dal_node -> + (* Start a rollup node *) + let sc_rollup_node = + Sc_rollup_node.create + ~protocol + ~dal_node + Operator + node + client + ~default_operator:bootstrap1_key + in + (* Prepare DAL/DAC: put reveal data in rollup node directory. *) + let* () = Dal_node.terminate dal_node in + let reveal_data_dir = + Filename.concat (Sc_rollup_node.data_dir sc_rollup_node) "wasm_2_0_0" + in + let* () = Dal_node.Dac.set_parameters ~reveal_data_dir dal_node in + let* () = Dal_node.run dal_node ~wait_ready:true in + let* dac_member = Client.bls_gen_keys ~alias:"dac_member" client in + let* dac_member_info = Client.bls_show_address ~alias:dac_member client in + let dac_member_address = dac_member_info.aggregate_public_key_hash in + let* _dir = Dal_node.init_config dal_node in + let* () = + Dal_node.Dac.add_committee_member ~address:dac_member_address dal_node + in + (* We can now produce our installer *) + let* installer_kernel = prepare_installer_kernel ~dal_node "tx-kernel" in + let boot_sector = hex_encode installer_kernel in + (* Initialise the sc rollup *) + let* sc_rollup_address = + Client.Sc_rollup.originate + ~hooks + ~burn_cap:Tez.(of_int 9999999) + ~src:bootstrap1_key + ~kind:"wasm_2_0_0" + ~boot_sector + ~parameters_ty:"pair string (ticket string)" + client + in + let* () = Client.bake_for_and_wait client in + let* _configuration_filename = + Sc_rollup_node.config_init sc_rollup_node sc_rollup_address + in + + (* Run the rollup node, ensure origination succeeds. *) + let* genesis_info = + RPC.Client.call ~hooks client + @@ RPC.get_chain_block_context_smart_rollups_smart_rollup_genesis_info + 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_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 + in + Check.(level = init_level) + Check.int + ~error_msg:"Current level has moved past origination level (%L = %R)" ; + + (* Originate a contract that will mint and transfer tickets to the tx kernel. *) + (* Originate forwarder contract to send internal messages to rollup *) + let* _, mint_and_deposit_contract = + Client.originate_contract_at (* ~alias:"rollup_deposit" *) + ~amount:Tez.zero + ~src:Constant.bootstrap1.alias + ~init:"Unit" + ~burn_cap:Tez.(of_int 1) + client + ["mini_scenarios"; "smart_rollup_mint_and_deposit_ticket"] + protocol + in + let* () = Client.bake_for_and_wait client in + Log.info + "The mint and deposit contract %s was successfully originated" + mint_and_deposit_contract ; + let level = init_level + 1 in + + (* gen tz4 account *) + let pkh, pk, sk = 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 + @@ Tezos_crypto.Signature.Bls.Public_key_hash.to_b58check pkh + in + (* originate ticket receiver contract *) + let* _, receive_tickets_contract = + Client.originate_contract_at + ~amount:Tez.zero + ~src:Constant.bootstrap1.alias + ~init:"{}" + ~burn_cap:Tez.(of_int 1) + client + ["mini_scenarios"; "smart_rollup_receive_tickets"] + protocol + in + let* () = Client.bake_for_and_wait client in + Log.info + "The receiver contract %s was successfully originated" + receive_tickets_contract ; + let level = level + 1 in + (* Construct withdrawal *) + let withdraw_ticket = + tx_kernel_string_ticket_repr mint_and_deposit_contract "Hello, Ticket!" 399 + in + let withdraw_op = + tx_kernel_withdrawal_repr + (Tezos_crypto.Signature.Bls.Public_key.to_b58check pk) + receive_tickets_contract + ~counter:0L + withdraw_ticket + "receive_tickets" + in + let message = + tx_kernel_op_to_external_message sk (Bytes.of_string withdraw_op) + in + (* 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]" message) in + let withdrawal_level = level + 1 in + let* _ = + Sc_rollup_node.wait_for_level ~timeout:30. sc_rollup_node withdrawal_level + in + let*! state_hash = Sc_rollup_client.state_hash ~hooks sc_rollup_client in + Check.(state_hash <> prev_state_hash) + Check.string + ~error_msg:"State hash has not changed (%L <> %R)" ; + + let*! ticks = Sc_rollup_client.total_ticks ~hooks sc_rollup_client in + Check.(ticks >= prev_ticks) + Check.int + ~error_msg:"Tick counter did not advance (%L >= %R)" ; + + (* EXECUTE withdrawal *) + let blocks_to_wait = 1 + (2 * commitment_period) + challenge_window in + let* () = + repeat blocks_to_wait @@ fun () -> Client.bake_for_and_wait client + in + let*! outbox = + Sc_rollup_client.outbox ~outbox_level:withdrawal_level sc_rollup_client + in + Log.info "Outbox is %s" @@ JSON.encode outbox ; + let* answer = + let message_index = 0 in + let outbox_level = withdrawal_level in + let destination = receive_tickets_contract in + let open Tezos_protocol_alpha.Protocol.Alpha_context in + let ticketer = + mint_and_deposit_contract |> Contract.of_b58check |> Result.get_ok + |> Data_encoding.(Binary.to_string_exn Contract.encoding) + |> hex_encode + in + let parameters = + Printf.sprintf + {|Pair 0x%s (Pair \"%s\" %s)|} + ticketer + "Hello, Ticket!" + (Int.to_string 399) + in + Sc_rollup_client.outbox_proof_single + sc_rollup_client + ~message_index + ~outbox_level + ~destination + ~entrypoint:"receive_tickets" + ~parameters + in + let* () = + match answer with + | None -> failwith "Unexpected error during proof generation" + | Some {commitment_hash; proof} -> + let* () = Client.bake_for_and_wait client in + let*! () = + Client.Sc_rollup.execute_outbox_message + ~hooks + ~burn_cap:(Tez.of_int 10) + ~rollup:sc_rollup_address + ~src:Constant.bootstrap1.alias + ~commitment_hash + ~proof + client + in + Client.bake_for_and_wait client + in + unit + +let test_tx_kernel_e2e = + register_test + ~regression:true + ~__FILE__ + ~tags:["wasm"; "kernel"; "wasm_2_0_0"; "kernel_e2e"] + ~title:(Printf.sprintf "wasm_2_0_0 - tx kernel should run e2e (kernel_e2e)") + test_tx_kernel_e2e + (* Testing the execution of outbox messages ---------------------------------------- @@ -4318,4 +4662,7 @@ let register ~protocols = test_accuser protocols ; (* Shared tezts - will be executed for both PVMs. *) register ~kind:"wasm_2_0_0" ~protocols ; - register ~kind:"arith" ~protocols + register ~kind:"arith" ~protocols ; + (* TODO: https://gitlab.com/tezos/tezos/-/issues/4652 + re-enable Mumbai when DAC is separated from Dal node. *) + test_tx_kernel_e2e [Alpha] -- GitLab