diff --git a/crates/jstzd/resources/test/bootstrap_smart_rollup/sr1Upj1Zguseor6FdP6mMGgf7VoYxEVQvNZX.json b/crates/jstzd/resources/test/bootstrap_smart_rollup/sr1Upj1Zguseor6FdP6mMGgf7VoYxEVQvNZX.json new file mode 100644 index 00000000..54c5a1b2 --- /dev/null +++ b/crates/jstzd/resources/test/bootstrap_smart_rollup/sr1Upj1Zguseor6FdP6mMGgf7VoYxEVQvNZX.json @@ -0,0 +1,7 @@ +{ + "pvm_kind": "wasm_2_0_0", + "kernel": "0061736d0100000001610e60037f7f7f017f60027f7f017f60027f7f0060057f7f7f7f7f017f60047f7f7f7f017f60037f7f7f0060017f0060000060087f7f7f7f7f7f7f7f0060047f7f7f7f0060067f7f7f7f7f7f017f60017f017e60057f7f7f7f7f0060037e7f7f017f02a6020911736d6172745f726f6c6c75705f636f72650b77726974655f6465627567000211736d6172745f726f6c6c75705f636f72650973746f72655f686173000111736d6172745f726f6c6c75705f636f72650a73746f72655f72656164000311736d6172745f726f6c6c75705f636f72650b73746f72655f7772697465000311736d6172745f726f6c6c75705f636f72650c73746f72655f64656c657465000111736d6172745f726f6c6c75705f636f72650a73746f72655f6d6f7665000411736d6172745f726f6c6c75705f636f72650a73746f72655f636f7079000411736d6172745f726f6c6c75705f636f72650f72657665616c5f707265696d616765000411736d6172745f726f6c6c75705f636f72651073746f72655f76616c75655f73697a6500010341400500000301050607080602050909090502020205010602070705000a0a000303030001060602050500050501000a0b0c0101000001010001010103010d0100000405017001111105030100110619037f01418080c0000b7f0041c190c0000b7f0041d090c0000b073204066d656d6f727902000a6b65726e656c5f72756e00100a5f5f646174615f656e6403010b5f5f686561705f6261736503020916010041010b101244342b3a392d372c3b3d3e3f4041460a966840850404037f027e017f017e23808080800041e080016b22032480808080000240024002400240024020022802000e03000102000b200341106a200241046a10938080800020032802144121470d0220032802102204450d02200441026a2d00002105200441136a29000021062004290003210720042f00002108200429000b2109200341d8006a2004411b6a280000360200200341c8006a41086a2006370300200341dc006a2004411f6a2f00003b0100200341e0006a41086a22042006370300200341266a41026a20053a0000200341e0006a410e6a2205200341c8006a410e6a29010037010020032009370360200320083b0126200341266a41136a20042903003700002003413f6a20052901003700002003200329036037003120032007370029200341e0006a41004180800110c7808080001a20032002410c6a3602482003410036024c200341086a20014100200341266a200341e0006a418080014104200341c8006a109180808000200328020c2102200328020821010c030b419880c0800041002001200241046a2002410c6a108b808080001b2101412c21020c020b200341186a200241046a10938080800041c480c08000410020012002410c6a2003280218200328021c4100108c808080001b2101412a21020c010b418080c080002101411821020b2000200236020420002001360200200341e080016a2480808080000bf00101037f23808080800041c0006b2203248080808000200341306a2001109f8080800020032802302104200341286a2001109f80808000200341386a20002004200328022c10a380808000109b8080800041712104024020032802380d00200328023c417f6a41024b0d00200341206a2001109f8080800020032802202104200341186a2001109f80808000200328021c2101200341106a2002109f8080800020032802102105200341086a2002109f80808000200341386a2000200420012005200328020c10a880808000109b80808000200328023c410020032802381b21040b200341c0006a24808080800020040bf00101037f23808080800041c0006b2203248080808000200341306a2001109f8080800020032802302104200341286a2001109f80808000200341386a20002004200328022c10a380808000109b8080800041712104024020032802380d00200328023c417f6a41024b0d00200341206a2001109f8080800020032802202104200341186a2001109f80808000200328021c2101200341106a2002109f8080800020032802102105200341086a2002109f80808000200341386a2000200420012005200328020c10a780808000109b80808000200328023c410020032802381b21040b200341c0006a24808080800020040bcb0201027f23808080800041c0006b2205248080808000024002402003418110490d000340200541306a2001109f8080800020052802302106200541286a2001109f80808000200541386a20002006200528022c2004200241801010a580808000109b8080800002402005280238450d00200528023c22060d030b20024180106a210220044180106a210420034180706a22034180104b0d000b200541206a2001109f8080800020052802202106200541186a2001109f80808000200541386a20002006200528021c20042002200310a580808000109b80808000200528023c410020052802381b21060c010b200541106a2001109f8080800020052802102106200541086a2001109f80808000200541386a20002006200528020c20042002200310a580808000109b80808000200528023c410020052802381b21060b200541c0006a24808080800020060bc20101027f23808080800041306b2202248080808000200241206a2001109f8080800020022802202103200241186a2001109f80808000200241286a20002003200228021c10a380808000109b8080800041712103024020022802280d00200228022c417f6a41024b0d00200241106a2001109f8080800020022802102103200241086a2001109f80808000200241286a20002003200228020c10a680808000109b80808000200228022c410020022802281b21030b200241306a24808080800020030bec0101027f23808080800041306b2203248080808000200341206a2002109f8080800020032802202104200341186a2002109f80808000200341286a20012004200328021c10a380808000109b8080800002400240024020032802280d00200328022c417f6a41024b0d00200341106a2002109f8080800020032802102104200341086a2002109f80808000200341286a20012004200328020c10aa80808000109b8080800020032802280d012000200328022c360204200041003602000c020b20004281808080907e3702000c010b2000200328022c360204200041013602000b200341306a2480808080000b170041fe81c08000410e41a882c0800010b280808000000b900801077f2380808080004180056b220024808080800010a08080800010a18080800020004111360254200041ed81c08000360250200041d8006a200041f8046a200041d0006a108e808080000240024002400240024020002802580d00200028025c2101200041003602d804200041c8006a200041d0006a109f8080800020002802482102200041c0006a200041d0006a109f80808000200041d8006a200041f8046a200220002802442001417c6a200041d8046a410410a480808000109b808080002000280258450d010b4125210241b882c0800021010c010b20002802d8042101200041d8006a410041e70310c7808080001a200041d8046a200041f8046a200041d0006a108e80808000024020002802d804450d0041a483c080002101412421020c010b20002802dc0421020240200041f8046a200041d0006a418c83c08000108a80808000450d0041c883c080002101413221020c010b02402002417c6a220320016b220420034f0d00024002400340200041003602c004200041386a418c83c08000109f8080800020002802382101200041306a418c83c08000109f80808000200041d8046a200041f8046a200120002802342004200041c0046a410410a480808000109b80808000024020002802d804450d0041ec84c080002101412321020c050b20002802c004220541e8034f0d01200441046a210402402005450d00200041d8006a2106200521010340200041286a418c83c08000109f8080800020002802282102200041206a418c83c08000109f80808000200041d8046a200041f8046a2002200028022420042006200110a480808000109b80808000024020002802d804450d00419c81c080002101413321020c070b200120002802dc042202490d04200620026a2106200220046a2104200120026b22010d000b0b200041d8046a200041d8006a2005109480808000024020002802e00422014103470d0041fa83c080002101412221020c050b024020002802dc04450d0041d984c080002101411321020c050b20002802e804210220002802e4042106200020002902ec043702cc04200020023602c804200020063602c404200020013602c004200041186a200041f8046a200041c0046a1089808080000240200028021822010d00200420034f0d040c010b0b200028021c21020c030b200541e703419483c0800010b080808000000b20022001418c81c0800010af80808000000b200041f8046a418c83c08000108d80808000450d01419c84c080002101413d21020b200041f8046a2001200210a2808080000c010b200041106a41e481c08000109f8080800020002802102101200041086a41e481c08000109f80808000200041d8006a200041f8046a2001200028020c410041ec81c08000410110a580808000109b808080000b20004180056a2480808080000b910401047f23808080800041306b22082480808080000240024020022006490d0041b285c080002102412b21060c010b200841186a2001200341212004200510a980808000109b8080800002402008280218450d00419486c080002102411b21060c010b0240200828021c220920054b0d00200841186a200420091098808080000240200828021822034102470d0041dd85c080002102413721060c020b2008280220210a200828021c210b024020034101460d0020072802002105200728020421022008200a36021c2008200b360218200841086a200841186a1099808080000240200120052008280208200828020c22062002108c80808000450d00418f85c080002102412321060c030b2007200620026a360204410021020c020b2008200a3602142008200b360210200841186a200841106a109a80808000200828021c21030240024002402008280228220a4121470d00200520096b210a200420096a2104200241016a210920082802182105034020034121490d0220082001200920052004200a20062007109180808000200541216a21052003415f6a210320082802002202450d000b200828020421060c040b2003200a4f0d010b410021020c020b41fc86c080004117200841186a419487c0800041a487c0800010b880808000000b41b487c08000412341ec86c0800010b280808000000b2000200636020420002002360200200841306a2480808080000b02000b0c00200020012902003703000ba70402067f017e23808080800041206b2203248080808000024002400240024002400240024002402002450d00200141016a21042002417f6a210220012d00000e03040302010b2000428380808010370208200041186a41173a0000200041146a4100360200200041106a20013602000c060b2000428380808010370208200041186a41003a0000200041146a2002360200200041106a20043602000c050b2003200341186a2004200210958080800020032802002202450d022003280214210120032802102104200328020c21052003280208210620032802042107410221080c030b2003200341186a20042002109680808000024020032802002202450d002003280214210120032802102104200328020c21052003280208210620032802042107410121080c030b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c030b2003200341186a20042002109580808000024020032802002202450d002003280214210120032802102104200328020c21052003280208210620032802042107410021080c020b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c020b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c010b200020013602182000200636020c20002008360208200020073602042000200236020020002004ad4220862005ad843702100b200341206a2480808080000bdf0201077f23808080800041306b22042480808080002004418010360214200441186a200441146a20022003109780808000200428021c210502400240024020042802182206450d0020050d0041242107410121050c010b20042802282107200428022421032004280220210220060d0002400240024020020d0041002102411721060c010b200541016a21082002417f6a2109412f2106024020052d0000220a41f2014d0d0020092102200821050c010b412421062009200a4f0d010b2000428080808010370200200041106a20063602002000410c6a2002360200200041086a20053602000c020b200441086a2008200a109c80808000200020042903083702102000200736020c2000200336020820002009200a6b36020420002008200a6a3602000c010b2000200536020420004100360200200041106a20073602002000410c6a2003360200200041086a20023602000b200441306a2480808080000bf30201057f23808080800041106b220424808080800002400240024020030d0041002103411721050c010b200241016a21062003417f6a2107412f2105024020022d0000220841f2014d0d0020072103200621020c010b4124210520072008490d00200441086a20062008109c80808000200620086a2103024002400240200720086b22020d0041172105410021020c010b200341016a21062002417f6a2107412f2105024020032d0000220841f2014d0d0020062103200721020c010b41242105200720084f0d010b2000428080808010370200200041106a20053602002000410c6a2002360200200041086a20033602000c020b200428020c210320042802082102200420062008109c80808000200020042903003702102000200336020c200020023602082000200720086b3602042000200620086a3602000c010b2000428080808010370200200041106a20053602002000410c6a2003360200200041086a20023602000b200441106a2480808080000bbf0101027f411721040240024020034104490d00200241046a21052003417c6a2103412f21042002280000220220012802004d0d01200521020b20004101360204200041106a20043602002000410c6a2003360200200041086a2002360200200041013602000f0b0240200220034b0d00200041106a20023602002000410c6a2005360200200041086a200320026b3602002000200520026a360204200041003602000f0b20004100360204200041086a200220036b360200200041013602000bcc0201037f0240024020020d000c010b0240024002400240024020012d000022030e020001050b20024105490d022001280001220341187420034180fe03714108747220034108764180fe037120034118767272220341046a22042002417f6a4b0d022003417c490d014104200441f087c0800010b380808000000b024020024105490d002001280001220341187420034180fe03714108747220034108764180fe03712003411876727222034121702104200341046a22052002417f6a4b0d0020040d002003417c4f0d0320002003360208200041013602002000200141056a3602040f0b20004102360200200041023b01040f0b20002003360208200041003602002000200141056a3602040f0b20004102360200200041023b01040f0b41042005418088c0800010b380808000000b20004102360200200041056a20033a0000200020024100473a00040b0c00200020012902003703000b3e01027f20004121360210200020012802002202360200200020012802042201412170220336020c2000200120036b22013602042000200220016a3602080b310002402001417f4a0d00200020014178200141744b1b360204200041013602000f0b20002001360204200041003602000b240020012002109d8080800041ff0171109e8080800020002002360204200020013602000bbe0301037f4100210202400240024020010e020201000b0240200120006a417f6a2d0000412f470d0041030f0b41012102200141f2014b0d014102210220002d0000412f470d01412f2102410121030340200241ff01712104200020036a2d0000210202402004412f470d00200241ff0171412f470d0041030f0b0240200241ff01712204412f460d002004412d460d00200441df00460d002004412e460d00200241506a41ff0171410a490d002002415f7141bf7f6a41ff0171411a490d0041040f0b2001200341016a2203470d000b0240024020014109460d0041062102200141094d0d0320002d000141f200470d0320002d000241e500470d0320002d000341e100470d0320002d000441e400470d0320002d000541ef00470d0320002d000641ee00470d0320002d000741ec00470d0320002d000841f900470d0320002d0009412f470d030c010b4106210220002d000141f200470d0220002d000241e500470d0220002d000341e100470d0220002d000441e400470d0220002d000541ef00470d0220002d000641ee00470d0220002d000741ec00470d0220002d000841f900470d020b41050f0b4103410220002d0000412f461b21020b20020ba40301017f23808080800041206b22012480808080000240024002400240024002400240200041ff017122004106460d0020000e06010203040506010b200141206a2480808080000f0b200141146a42003702002001410136020c200141c08cc080003602082001419088c08000360210200141086a41c88cc0800010ae80808000000b200141146a42003702002001410136020c200141fc8bc080003602082001419088c08000360210200141086a41848cc0800010ae80808000000b200141146a42003702002001410136020c200141c48bc080003602082001419088c08000360210200141086a41cc8bc0800010ae80808000000b200141146a42003702002001410136020c200141848bc080003602082001419088c08000360210200141086a418c8bc0800010ae80808000000b200141146a42003702002001410136020c200141d08ac080003602082001419088c08000360210200141086a41d88ac0800010ae80808000000b200141146a42003702002001410136020c200141b889c080003602082001419088c08000360210200141086a41d089c0800010ae80808000000b0c00200020012902003703000b02000b02000b0c00200120021080808080000b0c00200120021081808080000b1200200120022003200420051082808080000b1200200120022003200420051083808080000b0c00200120021084808080000b100020012002200320041085808080000b100020012002200320041086808080000b100020012002200320041087808080000b0c00200120021088808080000b0d0020002802001a037f0c000b0b02000b02000b4c01017f23808080800041206b220224808080800020022000360214200241dc8cc0800036020c200241d88cc08000360208200241013a001820022001360210200241086a108f80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c200341bc8fc0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c200341dc8fc0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000bc90701087f02400240200028020022032000280208220472450d0002402004450d00200120026a21052000410c6a28020041016a2106410021072001210802400340200821042006417f6a2206450d0120042005460d020240024020042c00002209417f4c0d00200441016a2108200941ff017121090c010b20042d0001413f71210a2009411f71210802402009415f4b0d002008410674200a722109200441026a21080c010b200a41067420042d0002413f7172210a0240200941704f0d00200a2008410c74722109200441036a21080c010b200a41067420042d0003413f71722008411274418080f00071722209418080c400460d03200441046a21080b200720046b20086a21072009418080c400470d000c020b0b20042005460d00024020042c00002208417f4a0d0020084160490d0020084170490d0020042d0002413f7141067420042d0001413f71410c747220042d0003413f7172200841ff0171411274418080f0007172418080c400460d010b024002402007450d00024020072002490d004100210420072002460d010c020b41002104200120076a2c00004140480d010b200121040b2007200220041b21022004200120041b21010b024020030d00200028021420012002200041186a28020028020c118080808000000f0b200028020421070240024020024110490d002001200210c28080800021080c010b024020020d00410021080c010b2002410371210902400240200241044f0d0041002108200121040c010b2002417c71210641002108200121040340200820042c000041bf7f4a6a20042c000141bf7f4a6a20042c000241bf7f4a6a20042c000341bf7f4a6a2108200441046a21042006417c6a22060d000b0b2009450d000340200820042c000041bf7f4a6a2108200441016a21042009417f6a22090d000b0b0240200720084d0d0041002104200720086b2208210702400240024020002d00200e0402000102020b41002107200821040c010b20084101762104200841016a41017621070b200441016a2104200041186a2802002109200041146a280200210620002802102108024003402004417f6a2204450d0120062008200928021011818080800000450d000b41010f0b410121042008418080c400460d02200620012002200928020c118080808000000d02410021040340024020072004470d0020072007490f0b200441016a210420062008200928021011818080800000450d000b2004417f6a2007490f0b200028021420012002200041186a28020028020c118080808000000f0b200028021420012002200041186a28020028020c1180808080000021040b20040b5401017f23808080800041206b22032480808080002003410c6a420037020020034101360204200341d88cc080003602082003200136021c200320003602182003200341186a3602002003200210ae80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c2003419090c0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000b110020003502004101200110c5808080000bca05010a7f23808080800041306b2203248080808000200341206a2001360200200341033a00282003412036021841002104200341003602242003200036021c20034100360210200341003602080240024002400240200228021022050d002002410c6a2802002200450d0120022802082101200041037421062000417f6a41ffffffff017141016a21042002280200210003400240200041046a2802002207450d00200328021c20002802002007200328022028020c118080808000000d040b2001280200200341086a200141046a280200118180808000000d03200141086a2101200041086a2100200641786a22060d000c020b0b200241146a2802002201450d00200141057421082001417f6a41ffffff3f7141016a2104200228020021004100210603400240200041046a2802002201450d00200328021c20002802002001200328022028020c118080808000000d030b2003200520066a220141106a28020036021820032001411c6a2d00003a00282003200141186a2802003602242001410c6a28020021092002280208210a4100210b41002107024002400240200141086a2802000e03010002010b2009410374210c41002107200a200c6a220c280204418480808000470d01200c28020028020021090b410121070b2003200936020c20032007360208200141046a280200210702400240024020012802000e03010002010b20074103742109200a20096a2209280204418480808000470d01200928020028020021070b4101210b0b200320073602142003200b360210200a200141146a2802004103746a2201280200200341086a2001280204118180808000000d02200041086a21002008200641206a2206470d000b0b0240200420022802044f0d00200328021c200228020020044103746a22012802002001280204200328022028020c118080808000000d010b410021010c010b410121010b200341306a24808080800020010bc40601077f024002402001450d00412b418080c400200028021c220641017122011b2107200120056a21080c010b200541016a2108200028021c2106412d21070b0240024020064104710d00410021020c010b0240024020034110490d002002200310c28080800021090c010b024020030d00410021090c010b2003410371210a02400240200341044f0d0041002109200221010c010b2003417c71210b41002109200221010340200920012c000041bf7f4a6a20012c000141bf7f4a6a20012c000241bf7f4a6a20012c000341bf7f4a6a2109200141046a2101200b417c6a220b0d000b0b200a450d000340200920012c000041bf7f4a6a2109200141016a2101200a417f6a220a0d000b0b200920086a21080b0240024020002802000d0041012101200041146a2802002209200041186a280200220020072002200310c3808080000d01200920042005200028020c118080808000000f0b024002400240024002402000280204220b20084d0d0020064108710d04200b20086b2209210820002d002022010e0403010201030b41012101200041146a2802002209200041186a280200220020072002200310c3808080000d04200920042005200028020c118080808000000f0b41002108200921010c010b20094101762101200941016a41017621080b200141016a2101200041186a280200210a200041146a280200210b20002802102109024003402001417f6a2201450d01200b2009200a28021011818080800000450d000b41010f0b410121012009418080c400460d01200b200a20072002200310c3808080000d01200b20042005200a28020c118080808000000d014100210102400340024020082001470d00200821010c020b200141016a2101200b2009200a28021011818080800000450d000b2001417f6a21010b200120084921010c010b200028021021062000413036021020002d0020210c41012101200041013a0020200041146a2802002209200041186a280200220a20072002200310c3808080000d00200b20086b41016a2101024003402001417f6a2201450d0120094130200a28021011818080800000450d000b41010f0b41012101200920042005200a28020c118080808000000d002000200c3a00202000200636021041000f0b20010b0d00429ed883c9bebbf3f78b7f0b990101017f23808080800041c0006b22052480808080002005200136020c200520003602082005200336021420052002360210200541186a410c6a4202370200200541306a410c6a4185808080003602002005410236021c200541f08cc0800036021820054186808080003602342005200541306a3602202005200541106a3602382005200541086a360230200541186a200410ae80808000000b140020012000280200200028020410b1808080000b180020002802002001200028020428020c118180808000000bcc04010b7f2000280204210320002802002104200028020821054100210641002107410021084100210902400340200941ff01710d0102400240200820024b0d000340200120086a210a02400240200220086b220b4108490d00024002400240200a41036a417c712200200a460d002000200a6b220c450d00410021000340200a20006a2d0000410a460d05200c200041016a2200470d000b200c200b41786a220d4d0d010c020b200b41786a210d4100210c0b0340200a200c6a22092802002200417f732000418a94a8d0007341fffdfb776a71418081828478710d01200941046a2802002200417f732000418a94a8d0007341fffdfb776a71418081828478710d01200c41086a220c200d4d0d000b0b0240200b200c470d00200221080c040b03400240200a200c6a2d0000410a470d00200c21000c030b200b200c41016a220c470d000b200221080c030b024020082002470d00200221080c030b410021000340200a20006a2d0000410a460d01200b200041016a2200470d000b200221080c020b200820006a220041016a21080240200020024f0d00200120006a2d0000410a470d00410021092008210d200821000c030b200820024d0d000b0b410121092007210d2002210020072002460d020b0240024020052d0000450d00200441988dc080004104200328020c118080808000000d010b200120076a210c200020076b210a4100210b024020002007460d00200a200c6a417f6a2d0000410a46210b0b2005200b3a0000200d21072004200c200a200328020c11808080800000450d010b0b410121060b20060b910302057f017e23808080800041c0006b22032480808080000240024020002d0008450d0020002802002104410121050c010b200028020021040240200041046a280200220628021c22074104710d00410121052006280214419e8dc0800041a28dc0800020041b4102410120041b200641186a28020028020c118080808000000d0120012006200228020c1181808080000021050c010b024020040d000240200628021441a08dc080004102200641186a28020028020c11808080800000450d0041012105410021040c020b200628021c21070b41012105200341013a0017200341306a41808dc08000360200200320062902143703082003200341176a36021020032006290208370320200629020021082003200736023420032006280210360228200320062d00203a0038200320083703182003200341086a36022c2001200341186a200228020c118180808000000d00200328022c419c8dc080004102200328023028020c1180808080000021050b200020053a00082000200441016a360200200341c0006a24808080800020000b860201017f23808080800041106b22022480808080002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110bb808080002101200241106a24808080800020010b7101017f23808080800041206b220224808080800020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41ec8ec08000200241086a10b5808080002101200241206a24808080800020010b110020002802002001200210bb808080000b8d0201017f23808080800041106b2202248080808000200028020021002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110bb808080002101200241106a24808080800020010b7801017f23808080800041206b220224808080800020002802002100200241086a41106a200141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820022000360204200241046a41ec8ec08000200241086a10b5808080002101200241206a24808080800020010bf20601097f02400240200041036a417c71220220006b220320014b0d00200120036b22044104490d00200441037121054100210641002101024020022000460d00200341037121070240024020022000417f736a41034f0d0041002101200021020c010b2003417c71210841002101200021020340200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a21022008417c6a22080d000b0b2007450d000340200120022c000041bf7f4a6a2101200241016a21022007417f6a22070d000b0b200020036a210002402005450d0020002004417c716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21070340200021062003450d02200341c001200341c001491b220441037121052004410274210902400240200441fc0171220a0d00410021020c010b2006200a4102746a2108410021022006210003402000450d012000410c6a2802002201417f73410776200141067672418182840871200041086a2802002201417f73410776200141067672418182840871200041046a2802002201417f7341077620014106767241818284087120002802002201417f7341077620014106767241818284087120026a6a6a6a2102200041106a22002008470d000b0b200320046b2103200620096a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620076a21072005450d000b0240024020060d00410021000c010b2006200a4102746a22022802002200417f73410776200041067672418182840871210020054101460d0020022802042201417f7341077620014106767241818284087120006a210020054102460d0020022802082202417f7341077620024106767241818284087120006a21000b200041087641ff811c71200041ff81fc07716a418180046c41107620076a0f0b024020010d0041000f0b2001410371210202400240200141044f0d00410021070c010b2001417c712101410021070340200720002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2107200041046a21002001417c6a22010d000b0b2002450d000340200720002c000041bf7f4a6a2107200041016a21002002417f6a22020d000b0b20070b4a01017f0240024002402002418080c400460d0041012105200020022001280210118180808000000d010b20030d01410021050b20050f0b200020032004200128020c118080808000000b960201027f23808080800041206b22022480808080002002200036020c2002200128021441b090c080004111200141186a28020028020c118080808000003a001820022001360214200241003a001920024100360210200241106a2002410c6a41a090c0800010bc80808000210120022d0018210002400240200128020022030d00200041ff017141004721010c010b41012101200041ff01710d0020022802142100024020034101470d0020022d001941ff0171450d0020002d001c4104710d0041012101200028021441a38dc080004101200041186a28020028020c118080808000000d010b200028021441d88cc080004101200041186a28020028020c1180808080000021010b200241206a24808080800020010be90203027f017e037f23808080800041306b2203248080808000412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce008022054290ce007e7da7220741ffff037141e4006e220841017441a48dc080006a2f00003b00002006417e6a2007200841e4006c6b41ffff037141017441a48dc080006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004d0d00200341096a2004417e6a22046a2005a72206200641ffff037141e4006e220641e4006c6b41ffff037141017441a48dc080006a2f00003b00000b024002402006410a490d00200341096a2004417e6a22046a200641017441a48dc080006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141d88cc080004100200341096a20046a412720046b10b6808080002104200341306a24808080800020040b1200200141848fc08000410210b1808080000b0e0020002001200210c8808080000bb50101037f024002402002410f4b0d00200021030c010b2000410020006b41037122046a210502402004450d00200021030340200320013a0000200341016a22032005490d000b0b2005200220046b2204417c7122026a2103024020024101480d00200141ff017141818284086c2102034020052002360200200541046a22052003490d000b0b200441037121020b02402002450d00200320026a21050340200320013a0000200341016a22032005490d000b0b20000b0bcb100100418080c0000bc110496e76616c6964206861736820636f6e76657273696f6e2e436f756c646e2774206d6f7665207061746820647572696e6720636f6e666967206170706c69636174696f6e436f756c646e277420736574206b657920647572696e6720636f6e666967206170706c69636174696f6e696e7374616c6c65722d6b65726e656c2f7372632f696e7374722e7273006e0010001d00000025000000170000004661696c656420746f2072656164206b65726e656c20626f6f74207061746820696e20726561645f696e737472756374696f6e2f6b65726e656c2f656e762f7265626f6f74000000cf00100012000000002f6b65726e656c2f626f6f742e7761736d6578706c696369742070616e6963696e7374616c6c65722d6b65726e656c2f7372632f6c69622e7273000c0110001b0000003c000000050000004661696c656420746f20726561642073697a65206f6620636f6e6669672070726f6772616d2f5f5f696e7374616c6c65725f6b65726e656c2f617578696c696172792f6b65726e656c2f626f6f742e7761736d005d0110002e0000000c0110001b00000068000000160000004661696c656420746f2072656164206b65726e656c20626f6f7420706174682073697a654661696c656420746f20636f7079206b65726e656c20626f6f74206265666f726520636f6e66696720657865637574696f6e436f756c646e2774206465636f646520636f6e66696720696e737472756374696f6e4661696c656420746f2064656c65746520617578696c69617279206b65726e656c20626f6f7420616674657220636f6e66696720657865637574696f6e496e636f6d706c657465642070617273696e67436f756c646e277420726561642066726f6d206b65726e656c20626f6f7420706174684661696c656420746f207772697465206b65726e656c20636f6e74656e74207061676544414320707265696d616765207472656520636f6e7461696e7320746f6f206d616e79206c6576656c732e556e61626c6520746f206465636f64652044414320706167653a204465636f646520696e746f20536c69636550616765206661696c65644661696c656420746f20726574726965766520707265696d6167652f6275696c64732f74657a6f732f74657a6f732f7372632f6b65726e656c5f73646b2f656e636f64696e672f7372632f6461632f70616765732e7273002f0310003c0000003e0100001f00000047756172616e7465656420746f2062652065786163742e00010000000000000001000000020000002f0310003c0000001f0100002b000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e2829656e636f64696e672f7372632f6461632f70616765732e7273d7031000190000000201000015000000d703100019000000310100001500000050617468206d757374206e6f74207374617274206279202f726561646f6e6c792c207468697320697320612072657365727665640a2020202020202020202020202020202070617274206f66207468652073746f726167652e20557365732074686520617070726f7072696174652066756e6374696f6e20746f0a202020202020202020202020202020206c6f6f6b2076616c75657320696e20746869732073746f726167652e0010041000a7000000686f73742f7372632f706174682e7273c004100010000000cb0000000d000000506174682073746570206279746573206d7573742062652061736369695f616c7068616e756d65726963206f720a2020202020202020202020206f6e65206f662074686520666f6c6c6f77696e672073796d626f6c73202262272e2722202c202262275f2722202c202262272d272200e00410006f000000c004100010000000c50000000d00000050617468207374657073206d757374206265206e6f6e20656d707479680510001c000000c004100010000000c30000002d00000050617468206d75737420626567696e20776974682061207061746820736570617261746f720000009c05100025000000c004100010000000c2000000290000005061746820636f6e7461696e656420746f6f206d616e79206279746573000000dc0510001d000000c004100010000000c10000002800000050617468206d75737420636f6e7461696e206174206c65617374206f6e6520656d70747920737465700000001406100029000000c004100010000000c00000002600000029000000070000000000000001000000080000003a20000058061000000000006c06100002000000090000000c000000040000000a0000000b0000000c000000202020202c0a2c20280a282c30303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390900000004000000040000000d0000000e0000000f000000282972616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682000008607100012000000980710002200000072616e676520656e6420696e64657820cc071000100000009807100022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000ec07100016000000020810000d0000000900000004000000040000001000000054727946726f6d536c6963654572726f7200840106636f6e666967420000000021000000009ce9036027377311e720593b269ce39c217cafbd6b47d03561f535bccd81bad11b2f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d2f000000011b2f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d112f6b65726e656c2f626f6f742e7761736d79000000", + "parameters_ty": { + "prim": "bytes" + } +} diff --git a/crates/jstzd/src/protocol/bootstrap.rs b/crates/jstzd/src/protocol/bootstrap.rs index 4695558a..5eaedde9 100644 --- a/crates/jstzd/src/protocol/bootstrap.rs +++ b/crates/jstzd/src/protocol/bootstrap.rs @@ -1,6 +1,8 @@ +use std::fmt::Display; + use jstz_crypto::public_key::PublicKey; use serde_json::Value; -use tezos_crypto_rs::hash::ContractKt1Hash; +use tezos_crypto_rs::hash::{ContractKt1Hash, SmartRollupHash}; #[derive(Clone, PartialEq, Eq, Debug)] pub struct BootstrapAccount { @@ -97,16 +99,108 @@ impl From for Value { } } +#[derive(Clone, PartialEq, Eq, Debug)] +pub enum SmartRollupPvmKind { + Wasm, + Arith, + Riscv, +} + +impl Display for SmartRollupPvmKind { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(match self { + Self::Wasm => "wasm_2_0_0", + Self::Arith => "arith", + Self::Riscv => "riscv", + }) + } +} + +impl TryFrom<&str> for SmartRollupPvmKind { + type Error = anyhow::Error; + + fn try_from(value: &str) -> anyhow::Result { + match value { + "wasm_2_0_0" => Ok(Self::Wasm), + "arith" => Ok(Self::Arith), + "riscv" => Ok(Self::Riscv), + _ => Err(anyhow::anyhow!("Unknown PVM type '{}'", value)), + } + } +} + +#[derive(Clone)] +pub struct BootstrapSmartRollup { + /// Rollup address. + address: SmartRollupHash, + /// Type of Proof-generating Virtual Machine (PVM) that interprets the kernel. + pvm_kind: SmartRollupPvmKind, + /// Smart rollup kernel in hex string. + kernel: String, + /// Michelson type of the rollup entrypoint in JSON format. + parameters_ty: Value, +} + +impl BootstrapSmartRollup { + pub fn new( + address: &str, + pvm_kind: SmartRollupPvmKind, + kernel: &str, + parameters_ty: Value, + ) -> anyhow::Result { + Ok(Self { + address: SmartRollupHash::from_base58_check(address)?, + pvm_kind, + kernel: kernel.to_owned(), + parameters_ty, + }) + } +} + +#[derive(Default)] +pub struct BootstrapSmartRollups { + pub rollups: Vec, +} + +impl From for Value { + fn from(value: BootstrapSmartRollups) -> Self { + Value::Array( + value + .rollups + .iter() + .map(|v| { + Value::Object({ + let mut map = serde_json::Map::new(); + map.insert("parameters_ty".to_owned(), v.parameters_ty.clone()); + map.insert("kernel".to_owned(), Value::String(v.kernel.clone())); + map.insert( + "pvm_kind".to_owned(), + Value::String(v.pvm_kind.to_string()), + ); + map.insert( + "address".to_owned(), + Value::String(v.address.to_string()), + ); + map + }) + }) + .collect(), + ) + } +} + #[cfg(test)] mod tests { use super::{ BootstrapAccount, BootstrapAccounts, BootstrapContract, BootstrapContracts, + BootstrapSmartRollup, BootstrapSmartRollups, SmartRollupPvmKind, }; use serde_json::Value; const ACCOUNT_PUBLIC_KEY: &str = "edpkubRfnPoa6ts5vBdTB5syvjeK2AyEF3kyhG4Sx7F9pU3biku4wv"; const CONTRACT_HASH: &str = "KT1QuofAgnsWffHzLA7D78rxytJruGHDe7XG"; + const SMART_ROLLUP_ADDRESS: &str = "sr1Upj1Zguseor6FdP6mMGgf7VoYxEVQvNZX"; #[test] fn bootstrap_account_new() { @@ -183,4 +277,78 @@ mod tests { "dummy-script-no-hash" ); } + + #[test] + fn bootstrap_smart_rollup_new() { + let rollup = BootstrapSmartRollup::new( + SMART_ROLLUP_ADDRESS, + SmartRollupPvmKind::Riscv, + "dummy-kernel", + Value::String("dummy-params".to_owned()), + ) + .unwrap(); + assert_eq!(rollup.address.to_string(), SMART_ROLLUP_ADDRESS); + assert_eq!(rollup.pvm_kind, SmartRollupPvmKind::Riscv); + assert_eq!(rollup.kernel, "dummy-kernel"); + assert_eq!(rollup.parameters_ty.as_str().unwrap(), "dummy-params"); + } + + #[test] + fn serde_value_from_bootstrap_smart_rollups() { + let rollups = BootstrapSmartRollups { + rollups: vec![BootstrapSmartRollup::new( + SMART_ROLLUP_ADDRESS, + SmartRollupPvmKind::Riscv, + "dummy-kernel", + Value::String("dummy-params".to_owned()), + ) + .unwrap()], + }; + let value = Value::from(rollups); + let arr = value.as_array().unwrap(); + assert_eq!(arr.len(), 1); + let rollup = arr.last().unwrap().as_object().unwrap(); + assert_eq!(rollup.get("address").unwrap(), SMART_ROLLUP_ADDRESS); + assert_eq!( + rollup.get("pvm_kind").unwrap().as_str().unwrap(), + SmartRollupPvmKind::Riscv.to_string() + ); + assert_eq!( + rollup.get("kernel").unwrap().as_str().unwrap(), + "dummy-kernel" + ); + assert_eq!( + rollup.get("parameters_ty").unwrap().as_str().unwrap(), + "dummy-params" + ); + } + + #[test] + fn pvm_kind_fmt() { + assert_eq!(SmartRollupPvmKind::Arith.to_string(), "arith"); + assert_eq!(SmartRollupPvmKind::Riscv.to_string(), "riscv"); + assert_eq!(SmartRollupPvmKind::Wasm.to_string(), "wasm_2_0_0"); + } + + #[test] + fn pvm_kind_from_str() { + assert_eq!( + SmartRollupPvmKind::try_from("arith").unwrap(), + SmartRollupPvmKind::Arith + ); + assert_eq!( + SmartRollupPvmKind::try_from("riscv").unwrap(), + SmartRollupPvmKind::Riscv + ); + assert_eq!( + SmartRollupPvmKind::try_from("wasm_2_0_0").unwrap(), + SmartRollupPvmKind::Wasm + ); + assert_eq!( + SmartRollupPvmKind::try_from("dummy") + .unwrap_err() + .to_string(), + "Unknown PVM type 'dummy'" + ) + } } diff --git a/crates/jstzd/src/protocol/mod.rs b/crates/jstzd/src/protocol/mod.rs index 1f1ef5c8..80b2f049 100644 --- a/crates/jstzd/src/protocol/mod.rs +++ b/crates/jstzd/src/protocol/mod.rs @@ -1,12 +1,15 @@ mod bootstrap; -pub use bootstrap::{BootstrapAccount, BootstrapContract}; -use bootstrap::{BootstrapAccounts, BootstrapContracts}; +pub use bootstrap::{BootstrapAccount, BootstrapContract, BootstrapSmartRollup}; +use bootstrap::{BootstrapAccounts, BootstrapContracts, BootstrapSmartRollups}; use rust_embed::Embed; use serde_json::Value; use std::fmt::Display; use std::path::{Path, PathBuf}; +#[cfg(test)] +use bootstrap::SmartRollupPvmKind; + #[derive(PartialEq, Eq, Debug)] pub enum ProtocolConstants { Sandbox, @@ -72,6 +75,7 @@ pub struct ProtocolParameterBuilder { protocol: Protocol, constants: ProtocolConstants, bootstrap_contracts: BootstrapContracts, + bootstrap_smart_rollups: BootstrapSmartRollups, bootstrap_accounts: BootstrapAccounts, path: Option, } @@ -107,6 +111,14 @@ impl ProtocolParameterBuilder { self } + pub fn set_bootstrap_smart_rollups( + &mut self, + rollups: Vec, + ) -> &mut Self { + self.bootstrap_smart_rollups.rollups = rollups; + self + } + pub fn set_path(&mut self, path: &str) -> &mut Self { self.path = Some(PathBuf::from(path)); self @@ -132,6 +144,10 @@ impl ProtocolParameterBuilder { "bootstrap_contracts".to_owned(), Value::from(self.bootstrap_contracts), ); + json.insert( + "bootstrap_smart_rollups".to_owned(), + Value::from(self.bootstrap_smart_rollups), + ); drop(f); let path = self .path @@ -145,13 +161,14 @@ impl ProtocolParameterBuilder { #[cfg(test)] mod tests { use super::{ - BootstrapAccount, BootstrapContract, Protocol, ProtocolConstants, - ProtocolParameterBuilder, + BootstrapAccount, BootstrapContract, BootstrapSmartRollup, Protocol, + ProtocolConstants, ProtocolParameterBuilder, SmartRollupPvmKind, }; const ACCOUNT_PUBLIC_KEY: &str = "edpktzB3sirfeX6PrgAgWvRVT8Fd28jVLbWXKJmaUrYmK2UoSHc1eJ"; const CONTRACT_HASH: &str = "KT1QuofAgnsWffHzLA7D78rxytJruGHDe7XG"; + const SMART_ROLLUP_ADDRESS: &str = "sr1Upj1Zguseor6FdP6mMGgf7VoYxEVQvNZX"; #[test] fn parameter_builder() { @@ -187,6 +204,7 @@ mod tests { assert_eq!(builder.protocol, Protocol::Alpha); assert!(builder.bootstrap_accounts.accounts.is_empty()); assert!(builder.bootstrap_contracts.contracts.is_empty()); + assert!(builder.bootstrap_smart_rollups.rollups.is_empty()); } #[tokio::test] @@ -206,6 +224,13 @@ mod tests { 900, Some(CONTRACT_HASH), ) + .unwrap()]) + .set_bootstrap_smart_rollups(vec![BootstrapSmartRollup::new( + SMART_ROLLUP_ADDRESS, + SmartRollupPvmKind::Riscv, + "dummy-kernel", + serde_json::Value::String("dummy-params".to_owned()), + ) .unwrap()]); let output_path = builder.build().await.unwrap(); assert_eq!(expected_output_path, output_path); @@ -238,5 +263,27 @@ mod tests { contract.get("script").unwrap().as_str().unwrap(), "test-contract" ); + + // Check rollups + let rollups = json + .get("bootstrap_smart_rollups") + .unwrap() + .as_array() + .unwrap(); + assert_eq!(rollups.len(), 1); + let rollup = rollups.last().unwrap().as_object().unwrap(); + assert_eq!(rollup.get("address").unwrap(), SMART_ROLLUP_ADDRESS); + assert_eq!( + rollup.get("pvm_kind").unwrap().as_str().unwrap(), + SmartRollupPvmKind::Riscv.to_string() + ); + assert_eq!( + rollup.get("kernel").unwrap().as_str().unwrap(), + "dummy-kernel" + ); + assert_eq!( + rollup.get("parameters_ty").unwrap().as_str().unwrap(), + "dummy-params" + ); } }