diff --git a/Cargo.lock b/Cargo.lock index 0dd90f3c01848..0291e56e9acb8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -671,7 +671,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -693,7 +693,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -704,7 +704,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -851,7 +851,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -1341,7 +1341,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -1831,7 +1831,7 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -1848,7 +1848,7 @@ checksum = "4a076022ece33e7686fb76513518e219cca4fce5750a8ae6d1ce6c0f48fd1af9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -2116,7 +2116,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -2153,7 +2153,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.18", + "syn 2.0.25", "termcolor", "walkdir", ] @@ -2348,7 +2348,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -2429,7 +2429,7 @@ dependencies = [ "fs-err", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -2703,7 +2703,7 @@ dependencies = [ "quote", "scale-info", "sp-arithmetic", - "syn 2.0.18", + "syn 2.0.25", "trybuild", ] @@ -2850,7 +2850,7 @@ dependencies = [ "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -2861,7 +2861,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -2870,7 +2870,7 @@ version = "3.0.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -3090,7 +3090,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -4855,7 +4855,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -4868,7 +4868,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -4879,7 +4879,7 @@ checksum = "93d7d9e6e234c040dafc745c7592738d56a03ad04b1fa04ab60821deb597466a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -4890,7 +4890,7 @@ checksum = "ffd19f13cfd2bfbd83692adfef8c244fe5109b3eb822a1fb4e0a6253b406cd81" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -6320,6 +6320,7 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "hex", "impl-trait-for-tuples", "log", "pallet-balances", @@ -6335,6 +6336,7 @@ dependencies = [ "rand_pcg", "scale-info", "serde", + "serde_json", "smallvec", "sp-api", "sp-core", @@ -6365,7 +6367,7 @@ version = "4.0.0-dev" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -7372,7 +7374,7 @@ dependencies = [ "proc-macro2", "quote", "sp-runtime", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -7858,7 +7860,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -7899,7 +7901,7 @@ checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -8114,7 +8116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b69d39aab54d069e7f2fe8cb970493e7834601ca2d8c65fd7bbd183578080d1" dependencies = [ "proc-macro2", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -8173,14 +8175,14 @@ checksum = "70550716265d1ec349c41f70dd4f964b4fd88394efe4405f0c1da679c4799a07" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da" dependencies = [ "unicode-ident", ] @@ -8555,7 +8557,7 @@ checksum = "8d2275aab483050ab2a7364c1a46604865ee7d6906684e08db0f090acf74f9e7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -9027,7 +9029,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -10239,7 +10241,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -10527,22 +10529,22 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -10801,7 +10803,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -11186,7 +11188,7 @@ version = "9.0.0" dependencies = [ "quote", "sp-core-hashing", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -11230,7 +11232,7 @@ version = "8.0.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -11462,7 +11464,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -11695,7 +11697,7 @@ dependencies = [ "proc-macro2", "quote", "sp-version", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -12122,7 +12124,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -12179,9 +12181,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" dependencies = [ "proc-macro2", "quote", @@ -12296,7 +12298,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -12452,7 +12454,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -12632,7 +12634,7 @@ checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] @@ -13163,7 +13165,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", "wasm-bindgen-shared", ] @@ -13197,7 +13199,7 @@ checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -14188,7 +14190,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.25", ] [[package]] diff --git a/frame/contracts/Cargo.toml b/frame/contracts/Cargo.toml index f23e44741a6cb..00ad986996df6 100644 --- a/frame/contracts/Cargo.toml +++ b/frame/contracts/Cargo.toml @@ -60,6 +60,8 @@ pallet-insecure-randomness-collective-flip = { version = "4.0.0-dev", path = ".. pallet-utility = { version = "4.0.0-dev", path = "../utility" } pallet-proxy = { version = "4.0.0-dev", path = "../proxy" } sp-keystore = { version = "0.27.0", path = "../../primitives/keystore" } +serde_json = "1.0.85" +hex = { version = "0.4.3", default-features = false } [features] default = ["std"] diff --git a/frame/contracts/fixtures/flipper.contract b/frame/contracts/fixtures/flipper.contract new file mode 100644 index 0000000000000..ec5af33efdd0e --- /dev/null +++ b/frame/contracts/fixtures/flipper.contract @@ -0,0 +1,372 @@ +{ + "source": { + "hash": "0x77f5094ccc845ed626eace015ec017ceb3a1d82a0a03b45d20bce72e8a88f8d3", + "language": "ink! 4.2.0", + "compiler": "rustc 1.69.0", + "wasm": "0x0061736d0100000001450c60027f7f017f60037f7f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60000060047f7f7f7f0060017f017e60057f7f7f7f7f006000017f60017f017f028a0107057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650000057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100335340102030a0b030400020201020403020206060001010300030007020406020200040004080000090507050000030901000000000704050170010f0f0608017f01418080040b0711020463616c6c0016066465706c6f7900170914010041010b0e0d30253827313637261a1c1e35290a9d43342b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2601017f230041106b22022400200220003a000f20012002410f6a41011008200241106a24000b5c01037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b20012002418897041033200020033602080f0b41b09504411c41e89604101d000b2003200541f89604100b000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141d88104100b000b20000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4103360200200341e08e0436021020034100360208200341033602242003200341206a3602182003200341046a36022820032003360220200341086a2002100e000b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141a49404360208200141003602002001410136021c200120003602182001200141186a360210200141bc8204100e000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241a494043602102002410036020820024102360224200220002d0000410274220041d099046a28020036022c2002200041e499046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a1034200241306a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241b08a0436020c200241a49504360208200241086a1028000b4701017f230041106b220224002002410036020c024020012002410c6a410410104504402000200228020c360001200041003a00000c010b200041013a00000b200241106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a41002002200028020022061039200120022003280208200328020c41c09904103320032002200420061039200020032903003702000b200341106a240020050b3f01017f230041106b22022400200242808001370204200241809a0436020020022001047f20024101101541010541000b101520002002280208100a1014000bae0102057f017e230041306b2201240020014100360218200142808001370224200141809a043602202001410036021c200141206a22022001411c6a4104100820012001290320370310200141086a200141106a220320012802281013200128020c2104200128020820012903102106200141003602282001200637032020002002100720012001290320370310200120032001280228101320042001280200200128020410041a200141306a24000b4501017f2002200128020422034b044041cc9504412341a89704101d000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d00200041809a0420011005000ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4103360200200041848a0436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a41989704100e000bbe0501077f230041406a22002400024002400240024002400240100941ff0171410546044020004180800136022041809a04200041206a100220002802202201418180014f0d0120002001360224200041809a04360220200041106a200041206a100f20002d00100d0520002800112201411876210220014110762104200141087621030240200141ff01712201412f470440200141e30047200341ff0171413a4772200441ff017141a50147720d0741012101200241d100460d010c070b200341ff017141860147200441ff017141db0047720d0641002101200241d901470d060b20004100360218200042808001370224200041809a043602202000410036023c200041206a22032000413c6a4104100820002000290320370310200041086a200041106a20002802281013200028020c210520002802082000280210210220002000280214220436022020052002200310002103200420002802202205490d02024002400240410c20032003410c4f1b0e0400060601060b2000200536022420002002360220200041003a003c200041206a2000413c6a4101101045044020002d003c22024102490d020b2000412c6a4101360200200041346a4100360200200041f482043602280c080b2000412c6a4101360200200041346a41003602002000419483043602280c070b2001450d042002451012410041001011000b200041043a0020200041206a100c000b20014180800141e48004100b000b2005200441e48004100b000b2000412c6a4101360200200041346a4100360200200041848204360228200041a4950436023020004100360220200041206a418c8204100e000b230041106b22002400200042808001370204200041809a0436020020004100101520024100472000100741002000280208100a1014000b410141011011000b200041a4950436023020004100360220200041206a41bc8204100e000bc70101027f230041106b2200240002400240100941ff01712201410546044020004180800136020041809a042000100220002802002201418180014f0d0120002001360204200041809a04360200200041086a2000100f20002d0008450440200028000941ed97f5dc01460d030b410141011011000b200020013a00002000100c000b20014180800141e48004100b000b41001012230041106b22002400200042808001370204200041809a0436020020004100101520004100101541002000280208100a1014000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a419c8304200241086a1019200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110000450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a103220032003290310370320200341086a2005200141046a103220032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110000450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002101b41000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002101f2004280208200428020c1020200028020821030b200028020420036a2001200210061a2003200220036a22014b044041c08304411c41808904101d000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b101b0c020b230041106b22042400200441086a200020034101101f2004280208200428020c1020200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08304411c41f08804101d000b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341a49504360210200341003602002003200136021c200320003602182003200341186a36020820032002100e000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1018200241206a24000bac0401067f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22062002490d0141082006200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d012006200310232006280204210220062802000c040b0c040b20072802042209450440200641086a20031023200628020c210220062802080c030b20032102410041f89904280200220520036a22082005490d021a2007280200210741fc99042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241fc99042002360200200321024100200320056a22082005490d031a0b41f89904200836020041002005450d021a20052007200910060c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08304412141fc8404101d000b1f00024020014181808080784704402001450d0120001021000b0f0b1022000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141c08604360218200141003602102001410336022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041d086043602142000200141106a360210200041b08a0436020c200041a49504360208200041086a1028000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041a08504360210200041a4950436021820004100360208200041086a41a88504100e000ba10101027f027f410041f89904280200220220016a22032002490d001a024041fc99042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141fc990420033602004100200120026a22032002490d021a0b41f89904200336020020020c010b41000b210320002001360204200020033602000b5301027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20011023200228020822030d0120011021000b1022000b2000200336020420002001360200200241106a24000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db8b046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db8b046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db8b046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db8b046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b2102410021042005410471044041a495042104200241a4950441a49504102a20026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a280200220120072004102d0d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a20072004102d0d02200341106a2001200920026b4101102e20032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a102f0d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a280200220120072004102d0d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b4101102e200328020c2205418080c400460d00200328020820012802002202200141046a280200220120072004102d0d00200220082006200128020c1101000d00200520022001102f21000b200341406b240020000f0b41908904411c418c8e04101d000b41b089044121418c9404101d000b0300010b0e0020002802001a03400c000b000baa05020a7f017e230041406a220124002001200036020c2001412c6a4102360200200141346a4101360200200141f09504360228200141003602202001410436023c2001200141386a36023020012001410c6a360238200141106a210641002100230041306b22022400200141206a220441146a2802002107200428020821050240024002400240200241086a027f024002400240200241106a027f024002402004410c6a28020022080e020001040b20070d0241a49504210341000c010b20070d022005280200210320052802040b22001024200228021021042006200228021422053602042006200436020020052003200010061a200620003602080c040b200428021021090c010b200541046a21032008410374210a2004280210210903402000200020032802006a22004b0d04200341086a2103200a41086b220a0d000b20002007450d011a2000410f4b0d0041002005280204450d011a0b200020006a22034100200020034d1b0b10242002290308210b200641003602082006200b3702002002200736022c200220093602282002200836022420022005360220200220042902003703182006200241186a10180d020b200241306a24000c020b41c08304411c41fc9304101d000b230041406a220024002000413336020c200041e086043602082000418484043602142000200241186a360210200041246a41023602002000412c6a41023602002000413c6a4106360200200041e48a0436022020004100360218200041023602342000200041306a3602282000200041106a3602382000200041086a360230200041186a41f88704100e000b2001280214210020012802182101024041809a052d000045044041819a052d00004101710d010b410c20002001100322002000410c4f1b410947044041809a0541013a00000b41819a0541013a00000b000b0d0042c3e1e2fba0c0d8f6db000ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d0020012000102b2206200020016a22082004417c716a2004410371102b6a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41dc8f04102c200328020c21052003280208210820032003280200200328020422002000417c7141c09104102c200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41908904411c41d09104101d000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441908904411c41809204101d000b41908904411c41e09104101d000b41908904411c41f09104101d000b41908904411c41b09104101d000b20012002102b21020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41908904411c41fc9304101d000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41cc950441232004101d000b39000240027f2002418080c40047044041012000200220012802101100000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41908904411c419c8e04101d000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110000450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110000450d000b200441016b0b2000490bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41908904411c41f89204101d000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003102a22024b0440200941086a2001200020026b4100102e41012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001102f21000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1100000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000b8501002001200346044020002002200110061a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4103360200200041ac900436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a2004100e000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1019200341206a24000b18002001280200419c94044105200128020428020c1101000b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1019200241206a24000b0b002000280200200110300b990301037f230041406a22022400200028020021034101210002402001280200220441c08a04410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241d08a0436023020024100360228200241073602142002200241106a36023820022002410c6a36021020042001200241286a1034450d010c020b20032802002200200328020428020c11080042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241d08a0436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a10340d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4103360200200241346a4103360200200241988a043602182002410036021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103421000b200241406b240020000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41c09804412141a49804101d000b0bee190400418080040bb1032f55736572732f70672f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e302f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300000000010062000000e4000000140000002f55736572732f70672f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e302f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e727374000100640000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72e80001001c0000007400010064000000ed000000170000002f55736572732f70672f6769746875622f666c69707065722f6c69622e7273001c0101001f0000000500000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279004c0101002700000073746f7261676520656e7472792077617320656d707479007c010100170000000900000004000000040000000a0000000b0000000c0041c083040be411617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000900000000000000010000000d0000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727314020100680000008f0100001c0000006361706163697479206f766572666c6f770000008c0201001100000014020100680000000d020000050000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65641e03010015000000330301000d000000b8020100660000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e727300930301006400000064020000200000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730804010068000000350700000d0000000804010068000000a307000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320d204010020000000f2040100120000003a000000a40a010000000000140501000100000014050100010000000900000000000000010000000e00000070616e69636b65642061742027272c204c050100010000004d050100030000003a200000a40a01000000000060050100020000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730000a306010067000000750500000d000000a3060100670000000506000038000000206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e6465782000004e070100100000002c070100220000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000700701006a000000c005000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028ec07010015000000010801002b000000d1040100010000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000004408010069000000470000001500000044080100690000004f000000320000004408010069000000540000001100000044080100690000005a00000009000000440801006900000064000000110000004408010069000000660000000d0000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273100901006800000091000000110000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273000000880901007100000095000000010000007405010067000000cd010000050000004572726f72000000a40a0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f720041b095040b8103617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290aa40a010000000000ef0a0100010000002f55736572732f70672f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e302f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000000b0100650000005a0000001c000000000b0100650000005a00000009000000000b0100650000005a00000031000000000b0100650000006500000009000000000b0100650000008d000000210000002f55736572732f70672f2e7275737475702f746f6f6c636861696e732f312e36392d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300b80b01006b00000082010000470041c098040bb701617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f70672f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e352e302f7372632f636f6465632e7273610c01005f000000780000000e000000190000001c0000001600000014000000190000008b0a01006f0a0100590a0100450a01002c0a01008a21046e616d6501c1203a004b5f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e33657874367761736d33323373797331316765745f73746f72616765313768326234376534663863333062633862334501515f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e33657874367761736d333233737973313776616c75655f7472616e73666572726564313768366166393930313761346561333762634502445f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e33657874367761736d33323373797335696e7075743137683262633064663737386637353566356545034d5f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e33657874367761736d333233737973313364656275675f6d6573736167653137683530383030666363383463303938373745044b5f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e33657874367761736d33323373797331317365745f73746f726167653137686164373062383965633566653965306545054b5f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e33657874367761736d33323373797331317365616c5f72657475726e313768653264646133316433643633613236304506066d656d63707907425f5a4e31387061726974795f7363616c655f636f64656335636f64656336456e636f646539656e636f64655f746f31376836393932316332643563343863656561450884015f5a4e3130305f244c5424696e6b5f656e762e2e656e67696e652e2e6f6e5f636861696e2e2e6275666665722e2e456e636f646553636f70652475323024617324753230247061726974795f7363616c655f636f6465632e2e636f6465632e2e4f757470757424475424357772697465313768626238396333383732326534393538334509445f5a4e33696e6b37636f646567656e38646973706174636839657865637574696f6e313264656e795f7061796d656e7431376832383937613762373633623961643431450a7a5f5a4e34636f726535736c69636535696e64657837345f244c5424696d706c2475323024636f72652e2e6f70732e2e696e6465782e2e496e646578244c542449244754242475323024666f72247532302424753562245424753564242447542435696e64657831376839643762653633363537353066636334450b425f5a4e34636f726535736c69636535696e6465783234736c6963655f656e645f696e6465785f6c656e5f6661696c31376864643934306665336464653964343966450c355f5a4e34636f72653970616e69636b696e67313370616e69635f646973706c617931376831653034396161656636626336346532450d695f5a4e37365f244c5424696e6b2e2e7265666c6563742e2e64697370617463682e2e44697370617463684572726f72247532302461732475323024636f72652e2e666d742e2e446973706c61792447542433666d7431376864396362393232336635666639383439450e305f5a4e34636f72653970616e69636b696e673970616e69635f666d7431376838386235616135396262333538356566450f6c5f5a4e37365f244c5424247535622454247533622424753230244e24753564242475323024617324753230247061726974795f7363616c655f636f6465632e2e636f6465632e2e4465636f646524475424366465636f6465313768643733653331356333366565653932344510635f5a4e36395f244c5424245246242475356224753824753564242475323024617324753230247061726974795f7363616c655f636f6465632e2e636f6465632e2e496e707574244754243472656164313768333737396165326162393363643731384511315f5a4e37696e6b5f656e7633617069313272657475726e5f76616c7565313768363639653738333531343331636538384512395f5a4e37696e6b5f656e763361706932307365745f636f6e74726163745f73746f72616765313768376538623166356634363539623764644513495f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e36627566666572313253636f7065644275666665723474616b65313768313738393065356238653361396632324514485f5a4e37696e6b5f656e7636656e67696e65386f6e5f636861696e33657874367761736d3332313272657475726e5f76616c756531376866663066326561306234326266366166451588015f5a4e3130305f244c5424696e6b5f656e762e2e656e67696e652e2e6f6e5f636861696e2e2e6275666665722e2e456e636f646553636f70652475323024617324753230247061726974795f7363616c655f636f6465632e2e636f6465632e2e4f75747075742447542439707573685f627974653137683163643431313261306333663532623445160463616c6c17066465706c6f7918305f5a4e34636f726533666d743557726974653977726974655f666d74313768643263646234303366653239376136344519265f5a4e34636f726533666d7435777269746531376836616164306563646434353164383131451a555f5a4e35305f244c5424245246246d7574247532302457247532302461732475323024636f72652e2e666d742e2e5772697465244754243977726974655f73747231376832333738306633316330616365633938451b465f5a4e35616c6c6f63337665633136566563244c54245424432441244754243137657874656e645f66726f6d5f736c69636531376830666431326539303331303630396565451c575f5a4e35305f244c5424245246246d7574247532302457247532302461732475323024636f72652e2e666d742e2e577269746524475424313077726974655f6368617231376833623961353764346165623239396164451d2c5f5a4e34636f72653970616e69636b696e673570616e696331376865336262336231636462633362643863451e555f5a4e35305f244c5424245246246d7574247532302457247532302461732475323024636f72652e2e666d742e2e5772697465244754243977726974655f666d7431376835333461633566653865353330393631451f4a5f5a4e35616c6c6f63377261775f7665633139526177566563244c5424542443244124475424313467726f775f616d6f7274697a6564313768383763653366396434393437386266644520355f5a4e35616c6c6f63377261775f766563313468616e646c655f72657365727665313768326333376630363438663237333133374521375f5a4e35616c6c6f6335616c6c6f63313868616e646c655f616c6c6f635f6572726f72313768333637366138643563316335363635634522385f5a4e35616c6c6f63377261775f766563313763617061636974795f6f766572666c6f77313768333230373963623461616536363166364523365f5a4e35616c6c6f6335616c6c6f6336476c6f62616c3130616c6c6f635f696d706c313768316164386438656130353964636138314524475f5a4e35616c6c6f63377261775f7665633139526177566563244c54245424432441244754243131616c6c6f636174655f696e313768393931393436316633633161376232384525625f5a4e34636f726533666d74336e756d33696d7035325f244c5424696d706c2475323024636f72652e2e666d742e2e446973706c61792475323024666f7224753230247533322447542433666d74313768633835336633623633303138316639304526475f5a4e34636f726533707472333764726f705f696e5f706c616365244c5424636f72652e2e666d742e2e4572726f72244754243137683131653838306236323433353939356645273a5f5a4e34636f7265336f70733866756e6374696f6e36466e4f6e63653963616c6c5f6f6e636531376838303239343630363065383237373861452811727573745f626567696e5f756e77696e6429455f5a4e33365f244c542454247532302461732475323024636f72652e2e616e792e2e416e792447542437747970655f696431376830653961646439666538366639613362452a705f5a4e38315f244c5424636f72652e2e7374722e2e697465722e2e4368617273247532302461732475323024636f72652e2e697465722e2e7472616974732e2e6974657261746f722e2e4974657261746f722447542435636f756e7431376830653035376238643832313337323662452b3f5f5a4e34636f72653373747235636f756e743233636861725f636f756e745f67656e6572616c5f6361736531376833653964636632373731656365386334452c4a5f5a4e34636f726535736c69636532395f244c5424696d706c24753230242475356224542475356424244754243873706c69745f617431376839373539393966336362333639373638452d465f5a4e34636f726533666d7439466f726d617474657231327061645f696e74656772616c313277726974655f70726566697831376831666231313631343865303164316236452e325f5a4e34636f726533666d7439466f726d61747465723770616464696e6731376866393231646135633536383430376334452f335f5a4e34636f726533666d743131506f737450616464696e67357772697465313768323034313862386465313138656663394530495f5a4e34345f244c54242452462454247532302461732475323024636f72652e2e666d742e2e446973706c61792447542433666d74313768626332396539386336396163323763654531475f5a4e34325f244c54242452462454247532302461732475323024636f72652e2e666d742e2e44656275672447542433666d74313768346666383665613061393530363431394532295f5a4e34636f726533666d7438676574636f756e74313768326633376633626533366535633830374533525f5a4e34636f726535736c69636532395f244c5424696d706c24753230242475356224542475356424244754243135636f70795f66726f6d5f736c696365313768393338343463633461353239343135314534345f5a4e34636f726533666d7439466f726d61747465723977726974655f666d74313768343236613635353435336436353032374535525f5a4e35335f244c5424636f72652e2e666d742e2e4572726f72247532302461732475323024636f72652e2e666d742e2e44656275672447542433666d74313768653561323331633934623831376363384536495f5a4e34345f244c54242452462454247532302461732475323024636f72652e2e666d742e2e446973706c61792447542433666d74313768386532316131376462666331393265384537495f5a4e34345f244c54242452462454247532302461732475323024636f72652e2e666d742e2e446973706c61792447542433666d74313768346433323234303133396264633762344538495f5a4e34345f244c54242452462454247532302461732475323024636f72652e2e666d742e2e446973706c61792447542433666d7431376838353464336165343437366138393338453993015f5a4e3130365f244c5424636f72652e2e6f70732e2e72616e67652e2e52616e6765244c54247573697a6524475424247532302461732475323024636f72652e2e736c6963652e2e696e6465782e2e536c696365496e646578244c54242475356224542475356424244754242447542431336765745f756e636865636b65643137683634623435396633303365346637353345071201000f5f5f737461636b5f706f696e746572092b0400072e726f6461746101092e726f646174612e3102092e726f646174612e3203092e726f646174612e33", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.0.1", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": true, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "flipper", + "version": "0.1.0", + "authors": [ + "[your_name] <[your_email]>" + ] + }, + "spec": { + "constructors": [ + { + "args": [], + "default": false, + "docs": [ + "Constructor that initializes the `bool` value to `false`." + ], + "label": "default", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 1 + }, + "selector": "0xed4b9d1b" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 5 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 8 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 11 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 12 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 9 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 10 + } + }, + "events": [], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 3 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [ + " A message that can be called on instantiated contracts.", + " This one flips the value of the stored `bool` from `true`", + " to `false` and vice versa." + ], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 1 + }, + "selector": "0x633aa551" + }, + { + "args": [], + "default": false, + "docs": [ + " Simply returns the current value of our `bool`." + ], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 4 + }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "value" + } + ], + "name": "Flipper" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 8, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 11, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 12, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": "4" +} diff --git a/frame/contracts/src/lib.rs b/frame/contracts/src/lib.rs index d36a0f93f339b..93773661267f8 100644 --- a/frame/contracts/src/lib.rs +++ b/frame/contracts/src/lib.rs @@ -712,13 +712,18 @@ pub mod pallet { let data_len = data.len() as u32; let salt_len = salt.len() as u32; + log::debug!(target: LOG_TARGET, "Called instantiate_with_code with data: {data:?}, code_len: {code_len}, data_len: {data_len}"); + + let mut debug_message = + if cfg!(test) { Some(DebugBufferVec::::default()) } else { None }; + let common = CommonInput { origin: Origin::from_account_id(origin), value, data, gas_limit, storage_deposit_limit, - debug_message: None, + debug_message: debug_message.as_mut(), }; let mut output = @@ -1491,6 +1496,7 @@ impl Pallet { ensure!(storage_deposit_limit >= deposit, >::StorageDepositLimitExhausted); } + log::debug!(target:LOG_TARGET, "uploading code with hash {:?}", module.code_hash()); Ok((module, deposit)) } diff --git a/frame/contracts/src/tests.rs b/frame/contracts/src/tests.rs index f67be602695d6..1e5db591e89c7 100644 --- a/frame/contracts/src/tests.rs +++ b/frame/contracts/src/tests.rs @@ -505,6 +505,17 @@ impl ExtBuilder { } } +/// Get the path to a fixture file. +fn fixture_path(file_name: impl AsRef) -> String { + [ + // When `CARGO_MANIFEST_DIR` is not set, Rust resolves relative paths from the root folder + std::env::var("CARGO_MANIFEST_DIR").as_deref().unwrap_or("frame/contracts"), + "/fixtures/", + file_name.as_ref(), + ] + .concat() +} + /// Load a given wasm module represented by a .wat file and returns a wasm binary contents along /// with it's hash. /// @@ -513,14 +524,8 @@ fn compile_module(fixture_name: &str) -> wat::Result<(Vec, , + } + + #[derive(Deserialize)] + struct Constructor { + selector: String, + } + + let contract = std::fs::File::open(fixture_path("flipper.contract")).expect("File not found."); + let Root { source, spec } = serde_json::from_reader(contract).expect("Invalid json."); + let bytes = hex::decode(source.wasm[2..].to_owned()).expect("Invalid wasm code."); + + let hex_selector = &spec.constructors[0].selector; + let selector = u32::from_str_radix(&hex_selector[2..], 16).expect("Invalid selector"); + let data = selector.to_be_bytes().encode().to_vec(); + + ExtBuilder::default().build().execute_with(|| { + let _ = Balances::deposit_creating(&ALICE, 100_000_000_000_000); + assert_ok!(Contracts::instantiate_with_code( + RuntimeOrigin::signed(ALICE), + 0, + Weight::MAX, + Some(10_000_000_000_000.into()), + bytes, + data, + vec![], + )); + }); +} + #[test] fn migration_in_progress_works() { let (wasm, code_hash) = compile_module::("dummy").unwrap(); diff --git a/frame/contracts/src/wasm/runtime.rs b/frame/contracts/src/wasm/runtime.rs index b2e2ed0e5401e..b2c282be566c8 100644 --- a/frame/contracts/src/wasm/runtime.rs +++ b/frame/contracts/src/wasm/runtime.rs @@ -513,6 +513,7 @@ impl<'a, E: Ext + 'a> Runtime<'a, E> { } } // Otherwise the trap came from the contract itself. + log::debug!(target: crate::LOG_TARGET, "Contract trap code: {:?}", trap); Err(Error::::ContractTrapped.into()) }, // Any other error is returned only if instantiation or linking failed (i.e.