diff --git a/Cargo.lock b/Cargo.lock index 3e7cdda39..6790e726c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,9 +59,9 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.9.4" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" +checksum = "bc3be92e19a7ef47457b8e6f90707e12b6ac5d20c6f3866584fa3be0787d839f" dependencies = [ "aead", "aes", @@ -181,12 +181,6 @@ version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" -[[package]] -name = "array-bytes" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6" - [[package]] name = "array-bytes" version = "6.1.0" @@ -762,12 +756,13 @@ dependencies = [ "hex", "pallet-contracts-primitives", "predicates", + "primitive-types", "regex", "semver", "serde", "serde_json", - "sp-core 21.0.0", - "sp-weights 20.0.0", + "sp-core", + "sp-weights", "substrate-build-script-utils", "subxt", "tempfile", @@ -949,6 +944,26 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const_env" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9e4f72c6e3398ca6da372abd9affd8f89781fe728869bbf986206e9af9627e" +dependencies = [ + "const_env_impl", +] + +[[package]] +name = "const_env_impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4f51209740b5e1589e702b3044cdd4562cef41b6da404904192ffffb852d62" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -1022,9 +1037,9 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-weights 20.0.0", + "sp-core", + "sp-runtime", + "sp-weights", "subxt", "subxt-signer", "tempfile", @@ -1070,7 +1085,7 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-core 22.0.0", + "sp-core", "sp-keyring", "strsim", "thiserror", @@ -1207,9 +1222,9 @@ dependencies = [ [[package]] name = "crypto-mac" -version = "0.11.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" dependencies = [ "generic-array 0.14.7", "subtle", @@ -1217,9 +1232,9 @@ dependencies = [ [[package]] name = "ctr" -version = "0.8.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +checksum = "a232f92a03f37dd7d7dd2adc67166c77e9cd88de5b019b9a9eecfaeaf7bfd481" dependencies = [ "cipher", ] @@ -1258,13 +1273,14 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f711ade317dd348950a9910f81c5947e3d8907ebd2b83f76203ff1807e6a2bc2" +checksum = "622178105f911d937a42cdb140730ba4a3ed2becd8ae6ce39c7d28b5d75d4588" dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", + "digest 0.10.7", "fiat-crypto", "platforms", "rustc_version", @@ -1576,19 +1592,6 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" -[[package]] -name = "env_logger" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - [[package]] name = "environmental" version = "1.1.4" @@ -1666,9 +1669,9 @@ checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] name = "fiat-crypto" -version = "0.1.20" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" [[package]] name = "fixed-hash" @@ -2015,7 +2018,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac 0.11.0", "digest 0.9.0", ] @@ -2082,12 +2085,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" version = "0.14.27" @@ -2245,9 +2242,9 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "ink" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9fd4f77d66c94aa7f27a7cf41cd2edbc2229afe34ec475c3f32b6e8fdf561a0" +checksum = "4c208b4e7cd39a9d1ccbfc513bc8c8353a2c9c7b61453e5f3ab5493025d50115" dependencies = [ "derive_more", "ink_env", @@ -2257,33 +2254,32 @@ dependencies = [ "ink_primitives", "ink_storage", "parity-scale-codec", + "scale-info", ] [[package]] name = "ink_allocator" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870914970470fd77a3f42d3c5d1918b562817af127fd063ee8b1d9fbf59aa1fe" +checksum = "688a37ac26b6e101f6a263ab8e8b0ceac84b36cb805129a666cefed3ebf362e8" dependencies = [ "cfg-if", ] [[package]] name = "ink_codegen" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22d79057b2565df31a10af6510a44b161093f110c5f9c22ad02c20af9cea4c29" +checksum = "640caaa107cdef532c3488bf8beb6cb84d99fc155af6d771dbf56d62e9c2f338" dependencies = [ "blake2", "derive_more", "either", - "env_logger", "heck", "impl-serde", "ink_ir", "ink_primitives", - "itertools 0.10.5", - "log", + "itertools 0.11.0", "parity-scale-codec", "proc-macro2", "quote", @@ -2294,9 +2290,9 @@ dependencies = [ [[package]] name = "ink_engine" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "722ec3a5eb557124b001c60ff8f961079f6d566af643edea579f152b15822fe5" +checksum = "d34dd340d4a2c2d1bb81cf52c8bdef71698871bba13a065f500a69508f23a171" dependencies = [ "blake2", "derive_more", @@ -2309,13 +2305,13 @@ dependencies = [ [[package]] name = "ink_env" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584e73bc0982f6f1a067bb63ebc75262f6dc54ed2a17060efa73eaba84dc9308" +checksum = "16a28d3afbae0b316a0a5e86cd81704d67c98244d8c299fe88eee13f5c4dac0e" dependencies = [ - "arrayref", "blake2", "cfg-if", + "const_env", "derive_more", "ink_allocator", "ink_engine", @@ -2329,6 +2325,7 @@ dependencies = [ "scale-decode", "scale-encode", "scale-info", + "schnorrkel 0.11.1", "secp256k1 0.27.0", "sha2 0.10.7", "sha3", @@ -2337,13 +2334,14 @@ dependencies = [ [[package]] name = "ink_ir" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b529c941518e8f450395fab9fe8ebba0a7acbb18778fc7e0a87f6248286ec72" +checksum = "1d7eb70a17374b1dbda2b903a36c0da7bf917f261e9d04e4c9a839252be6ac1a" dependencies = [ "blake2", "either", - "itertools 0.10.5", + "ink_prelude", + "itertools 0.11.0", "proc-macro2", "quote", "syn 2.0.29", @@ -2351,9 +2349,9 @@ dependencies = [ [[package]] name = "ink_macro" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8579576c995ca9baa032584beca19155cbd63b6739570aa9da4d35a0415f4be8" +checksum = "73351daeaea90e9b08e320cc7f14cdb411aec321c5b0f13923108c42a75c1180" dependencies = [ "ink_codegen", "ink_ir", @@ -2367,32 +2365,34 @@ dependencies = [ [[package]] name = "ink_metadata" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fddff95ce3e01f42002fdaf96edda691dbccb08c9ae76d7101daa1fa634e601" +checksum = "2ad9535f950e210bf584ba008df5bf4f013e634cf0a468c2cbc6342bbed32014" dependencies = [ "derive_more", "impl-serde", "ink_prelude", "ink_primitives", + "linkme", "scale-info", + "schemars", "serde", ] [[package]] name = "ink_prelude" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8cfdf91d2b442f08efb34dd3780fd6fbd3d033f63b42f62684fe47534948ef6" +checksum = "74705c00d6993ccadb97675524b5b5d98e7292c49126c2daf87d1da63bed6aa7" dependencies = [ "cfg-if", ] [[package]] name = "ink_primitives" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6414bcad12ebf0c3abbbb192a09e4d06e22f662cf3e19545204e1b0684be12a1" +checksum = "513e93039a85caf84637746e35d0ed0b71ac0ace7e5268650f3d90e413ba989b" dependencies = [ "derive_more", "ink_prelude", @@ -2405,9 +2405,9 @@ dependencies = [ [[package]] name = "ink_storage" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd728409de235de0489f71ee2d1beb320613fdb50dda9fa1c564825f4ad06daa" +checksum = "8b15e73e6fdf15666b057b39515bd992088ba5fe19a708db778b1bca0d5b8830" dependencies = [ "array-init", "cfg-if", @@ -2423,9 +2423,9 @@ dependencies = [ [[package]] name = "ink_storage_traits" -version = "4.3.0" +version = "5.0.0-alpha" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8dcb50f70377ac35c28d63b06383a0a3cbb79542ea4cdc5b00e3e2b3de4a549" +checksum = "23206662b622a5b9053cb21b55bf7b7263b874836c98747717a62073797c5b3e" dependencies = [ "ink_metadata", "ink_prelude", @@ -2780,6 +2780,26 @@ dependencies = [ "cc", ] +[[package]] +name = "linkme" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f948366ad5bb46b5514ba7a7a80643726eef08b06632592699676748c8bc33b" +dependencies = [ + "linkme-impl", +] + +[[package]] +name = "linkme-impl" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc28438cad73dcc90ff3466fc329a9252b1b8ba668eb0d5668ba97088cf4eef0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + [[package]] name = "linux-raw-sys" version = "0.1.4" @@ -3113,16 +3133,16 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pallet-contracts-primitives" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fdf0acfe33532b58fe2d8859585c0e8b323ec0687eba26292c826333b366e82" +checksum = "3b9764b128f0712530bcd14cb01f1d8529f98c4e67866a22221b84fbe5854d93" dependencies = [ "bitflags 1.3.2", "parity-scale-codec", "scale-info", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-weights 20.0.0", + "sp-runtime", + "sp-std 9.0.0", + "sp-weights", ] [[package]] @@ -3199,7 +3219,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac 0.11.0", ] [[package]] @@ -3908,6 +3928,7 @@ dependencies = [ "derive_more", "parity-scale-codec", "scale-info-derive", + "schemars", "serde", ] @@ -3952,6 +3973,30 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "schemars" +version = "0.8.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763f8cd0d4c71ed8389c90cb8100cba87e763bd01a8e614d4f0af97bcd50a161" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0f696e21e10fa546b7ffb1c9672c6de8fbc7a81acf59524386d8639bf12737" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", +] + [[package]] name = "schnellru" version = "0.2.1" @@ -3998,6 +4043,24 @@ dependencies = [ "zeroize", ] +[[package]] +name = "schnorrkel" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064aaec4e66d5dfcb6ea6c91bec9dc282b3505b5dd897cf0601dea6ded7c9824" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "curve25519-dalek 4.1.0", + "merlin 3.0.0", + "rand 0.8.5", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.7", + "subtle", + "zeroize", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -4132,6 +4195,17 @@ dependencies = [ "syn 2.0.29", ] +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "serde_json" version = "1.0.105" @@ -4438,7 +4512,7 @@ dependencies = [ "aes-gcm", "blake2", "chacha20poly1305", - "curve25519-dalek 4.0.0", + "curve25519-dalek 4.1.0", "rand_core 0.6.4", "rustc_version", "sha2 0.10.7", @@ -4480,20 +4554,6 @@ dependencies = [ "sha-1", ] -[[package]] -name = "sp-application-crypto" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899492ea547816d5dfe9a5a2ecc32f65a7110805af6da3380aa4902371b31dc2" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-std 8.0.0", -] - [[package]] name = "sp-application-crypto" version = "24.0.0" @@ -4503,26 +4563,11 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 22.0.0", - "sp-io 24.0.0", + "sp-core", + "sp-io", "sp-std 9.0.0", ] -[[package]] -name = "sp-arithmetic" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6020576e544c6824a51d651bc8df8e6ab67cd59f1c9ac09868bb81a5199ded" -dependencies = [ - "integer-sqrt", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-std 8.0.0", - "static_assertions", -] - [[package]] name = "sp-arithmetic" version = "17.0.0" @@ -4538,58 +4583,13 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "sp-core" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f18d9e2f67d8661f9729f35347069ac29d92758b59135176799db966947a7336" -dependencies = [ - "array-bytes 4.2.0", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58 0.4.0", - "dyn-clonable", - "ed25519-zebra", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde", - "lazy_static", - "libsecp256k1", - "log", - "merlin 2.0.1", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types", - "rand 0.8.5", - "regex", - "scale-info", - "schnorrkel 0.9.1", - "secp256k1 0.24.3", - "secrecy", - "serde", - "sp-core-hashing 9.0.0", - "sp-debug-derive 8.0.0", - "sp-externalities 0.19.0", - "sp-runtime-interface 17.0.0", - "sp-std 8.0.0", - "sp-storage 13.0.0", - "ss58-registry", - "substrate-bip39", - "thiserror", - "tiny-bip39", - "zeroize", -] - [[package]] name = "sp-core" version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0de478e02efd547693b33ad02515e09933d5b69b7f3036fa890b92e50fd9dfc" dependencies = [ - "array-bytes 6.1.0", + "array-bytes", "bitflags 1.3.2", "blake2", "bounded-collections", @@ -4616,11 +4616,11 @@ dependencies = [ "secrecy", "serde", "sp-core-hashing 10.0.0", - "sp-debug-derive 9.0.0", - "sp-externalities 0.20.0", - "sp-runtime-interface 18.0.0", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", "sp-std 9.0.0", - "sp-storage 14.0.0", + "sp-storage", "ss58-registry", "substrate-bip39", "thiserror", @@ -4658,17 +4658,6 @@ dependencies = [ "twox-hash", ] -[[package]] -name = "sp-debug-derive" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f531814d2f16995144c74428830ccf7d94ff4a7749632b83ad8199b181140c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] - [[package]] name = "sp-debug-derive" version = "9.0.0" @@ -4680,18 +4669,6 @@ dependencies = [ "syn 2.0.29", ] -[[package]] -name = "sp-externalities" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f71c671e01a8ca60da925d43a1b351b69626e268b8837f8371e320cf1dd100" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std 8.0.0", - "sp-storage 13.0.0", -] - [[package]] name = "sp-externalities" version = "0.20.0" @@ -4701,34 +4678,7 @@ dependencies = [ "environmental", "parity-scale-codec", "sp-std 9.0.0", - "sp-storage 14.0.0", -] - -[[package]] -name = "sp-io" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d597e35a9628fe7454b08965b2442e3ec0f264b0a90d41328e87422cec02e99" -dependencies = [ - "bytes", - "ed25519", - "ed25519-dalek", - "futures", - "libsecp256k1", - "log", - "parity-scale-codec", - "rustversion", - "secp256k1 0.24.3", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-keystore 0.27.0", - "sp-runtime-interface 17.0.0", - "sp-state-machine 0.28.0", - "sp-std 8.0.0", - "sp-tracing 10.0.0", - "sp-trie 22.0.0", - "tracing", - "tracing-core", + "sp-storage", ] [[package]] @@ -4745,14 +4695,14 @@ dependencies = [ "parity-scale-codec", "rustversion", "secp256k1 0.24.3", - "sp-core 22.0.0", - "sp-externalities 0.20.0", - "sp-keystore 0.28.0", - "sp-runtime-interface 18.0.0", - "sp-state-machine 0.29.0", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", "sp-std 9.0.0", - "sp-tracing 11.0.0", - "sp-trie 23.0.0", + "sp-tracing", + "sp-trie", "tracing", "tracing-core", ] @@ -4764,25 +4714,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8a8e92be047fe992109220cdfd47f626a85a1e6579d1163703d05137a1068b1" dependencies = [ "lazy_static", - "sp-core 22.0.0", - "sp-runtime 25.0.0", + "sp-core", + "sp-runtime", "strum 0.24.1", ] -[[package]] -name = "sp-keystore" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be3cdd67cc1d9c1db17c5cbc4ec4924054a8437009d167f21f6590797e4aa45" -dependencies = [ - "futures", - "parity-scale-codec", - "parking_lot", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "thiserror", -] - [[package]] name = "sp-keystore" version = "0.28.0" @@ -4791,22 +4727,11 @@ checksum = "6eda1d2572a15340927a9f7db75ffe74366b645eaf9212015b4a96ad8e9d4c46" dependencies = [ "parity-scale-codec", "parking_lot", - "sp-core 22.0.0", - "sp-externalities 0.20.0", + "sp-core", + "sp-externalities", "thiserror", ] -[[package]] -name = "sp-panic-handler" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd2de46003fa8212426838ca71cd42ee36a26480ba9ffea983506ce03131033" -dependencies = [ - "backtrace", - "lazy_static", - "regex", -] - [[package]] name = "sp-panic-handler" version = "9.0.0" @@ -4818,29 +4743,6 @@ dependencies = [ "regex", ] -[[package]] -name = "sp-runtime" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21c5bfc764a1a8259d7e8f7cfd22c84006275a512c958d3ff966c92151e134d5" -dependencies = [ - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "paste", - "rand 0.8.5", - "scale-info", - "serde", - "sp-application-crypto 23.0.0", - "sp-arithmetic 16.0.0", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-std 8.0.0", - "sp-weights 20.0.0", -] - [[package]] name = "sp-runtime" version = "25.0.0" @@ -4856,31 +4758,12 @@ dependencies = [ "rand 0.8.5", "scale-info", "serde", - "sp-application-crypto 24.0.0", - "sp-arithmetic 17.0.0", - "sp-core 22.0.0", - "sp-io 24.0.0", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", "sp-std 9.0.0", - "sp-weights 21.0.0", -] - -[[package]] -name = "sp-runtime-interface" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e676128182f90015e916f806cba635c8141e341e7abbc45d25525472e1bbce8" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "primitive-types", - "sp-externalities 0.19.0", - "sp-runtime-interface-proc-macro 11.0.0", - "sp-std 8.0.0", - "sp-storage 13.0.0", - "sp-tracing 10.0.0", - "sp-wasm-interface 14.0.0", - "static_assertions", + "sp-weights", ] [[package]] @@ -4893,28 +4776,15 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "primitive-types", - "sp-externalities 0.20.0", - "sp-runtime-interface-proc-macro 12.0.0", + "sp-externalities", + "sp-runtime-interface-proc-macro", "sp-std 9.0.0", - "sp-storage 14.0.0", - "sp-tracing 11.0.0", - "sp-wasm-interface 15.0.0", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", "static_assertions", ] -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d5bd5566fe5633ec48dfa35ab152fd29f8a577c21971e1c6db9f28afb9bbb9" -dependencies = [ - "Inflector", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.29", -] - [[package]] name = "sp-runtime-interface-proc-macro" version = "12.0.0" @@ -4928,27 +4798,6 @@ dependencies = [ "syn 2.0.29", ] -[[package]] -name = "sp-state-machine" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef45d31f9e7ac648f8899a0cd038a3608f8499028bff55b6c799702592325b6" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot", - "rand 0.8.5", - "smallvec", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-panic-handler 8.0.0", - "sp-std 8.0.0", - "sp-trie 22.0.0", - "thiserror", - "tracing", -] - [[package]] name = "sp-state-machine" version = "0.29.0" @@ -4961,11 +4810,11 @@ dependencies = [ "parking_lot", "rand 0.8.5", "smallvec", - "sp-core 22.0.0", - "sp-externalities 0.20.0", - "sp-panic-handler 9.0.0", + "sp-core", + "sp-externalities", + "sp-panic-handler", "sp-std 9.0.0", - "sp-trie 23.0.0", + "sp-trie", "thiserror", "tracing", "trie-db", @@ -4983,20 +4832,6 @@ version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bbc9339227d1b6a9b7ccd9b2920c818653d40eef1512f1e2e824d72e7a336" -[[package]] -name = "sp-storage" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94294be83f11d4958cfea89ed5798f0b6605f5defc3a996948848458abbcc18e" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive 8.0.0", - "sp-std 8.0.0", -] - [[package]] name = "sp-storage" version = "14.0.0" @@ -5007,23 +4842,10 @@ dependencies = [ "parity-scale-codec", "ref-cast", "serde", - "sp-debug-derive 9.0.0", + "sp-debug-derive", "sp-std 9.0.0", ] -[[package]] -name = "sp-tracing" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357f7591980dd58305956d32f8f6646d0a8ea9ea0e7e868e46f53b68ddf00cec" -dependencies = [ - "parity-scale-codec", - "sp-std 8.0.0", - "tracing", - "tracing-core", - "tracing-subscriber 0.2.25", -] - [[package]] name = "sp-tracing" version = "11.0.0" @@ -5037,30 +4859,6 @@ dependencies = [ "tracing-subscriber 0.2.25", ] -[[package]] -name = "sp-trie" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4eeb7ef23f79eba8609db79ef9cef242f994f1f87a3c0387b4b5f177fda74" -dependencies = [ - "ahash 0.8.3", - "hash-db", - "hashbrown 0.13.2", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot", - "scale-info", - "schnellru", - "sp-core 21.0.0", - "sp-std 8.0.0", - "thiserror", - "tracing", - "trie-db", - "trie-root", -] - [[package]] name = "sp-trie" version = "23.0.0" @@ -5077,7 +4875,7 @@ dependencies = [ "parking_lot", "scale-info", "schnellru", - "sp-core 22.0.0", + "sp-core", "sp-std 9.0.0", "thiserror", "tracing", @@ -5085,20 +4883,6 @@ dependencies = [ "trie-root", ] -[[package]] -name = "sp-wasm-interface" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19c122609ca5d8246be6386888596320d03c7bc880959eaa2c36bcd5acd6846" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-std 8.0.0", - "wasmtime", -] - [[package]] name = "sp-wasm-interface" version = "15.0.0" @@ -5113,22 +4897,6 @@ dependencies = [ "wasmtime", ] -[[package]] -name = "sp-weights" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d084c735544f70625b821c3acdbc7a2fc1893ca98b85f1942631284692c75b" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 16.0.0", - "sp-core 21.0.0", - "sp-debug-derive 8.0.0", - "sp-std 8.0.0", -] - [[package]] name = "sp-weights" version = "21.0.0" @@ -5139,9 +4907,9 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 17.0.0", - "sp-core 22.0.0", - "sp-debug-derive 9.0.0", + "sp-arithmetic", + "sp-core", + "sp-debug-derive", "sp-std 9.0.0", ] @@ -5255,9 +5023,9 @@ checksum = "9aa9303045de87997d05bb772a4540cd8af36685e7deb715611933c225a33ac2" [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subtle-ng" @@ -5886,9 +5654,9 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "universal-hash" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" dependencies = [ "generic-array 0.14.7", "subtle", diff --git a/crates/build/templates/new/_Cargo.toml b/crates/build/templates/new/_Cargo.toml index 681e0fc0b..bb450e156 100644 --- a/crates/build/templates/new/_Cargo.toml +++ b/crates/build/templates/new/_Cargo.toml @@ -5,14 +5,11 @@ authors = ["[your_name] <[your_email]>"] edition = "2021" [dependencies] -ink = { version = "4.3.0", default-features = false } +ink = { version = "5.0.0-alpha", default-features = false } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2.6", default-features = false, features = ["derive"], optional = true } -[dev-dependencies] -ink_e2e = "4.3.0" - [lib] path = "lib.rs" diff --git a/crates/cargo-contract/Cargo.toml b/crates/cargo-contract/Cargo.toml index 85762968d..8cd4b46ae 100644 --- a/crates/cargo-contract/Cargo.toml +++ b/crates/cargo-contract/Cargo.toml @@ -25,6 +25,7 @@ contract-metadata = { version = "4.0.0-alpha", path = "../metadata" } anyhow = "1.0.75" clap = { version = "4.4.2", features = ["derive", "env"] } +primitive-types = { version = "0.12.1", default-features = false, features = ["codec", "scale-info", "serde"] } tracing = "0.1.37" tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } which = "4.4.2" @@ -39,9 +40,9 @@ semver = "1.0" # dependencies for extrinsics (deploying and calling a contract) tokio = { version = "1", features = ["macros", "rt-multi-thread"] } subxt = "0.31.0" -sp-core = "21.0.0" -sp-weights = "20.0.0" -pallet-contracts-primitives = "24.0.0" +sp-core = "22.0.0" +sp-weights = "21.0.0" +pallet-contracts-primitives = "25.0.0" hex = "0.4.3" [build-dependencies] diff --git a/crates/cargo-contract/src/cmd/decode.rs b/crates/cargo-contract/src/cmd/decode.rs index 8da7759fc..d665f5cbb 100644 --- a/crates/cargo-contract/src/cmd/decode.rs +++ b/crates/cargo-contract/src/cmd/decode.rs @@ -19,6 +19,10 @@ use anyhow::{ Context, Result, }; +use clap::{ + Args, + Subcommand, +}; use colored::Colorize as _; use contract_build::{ util, @@ -26,25 +30,47 @@ use contract_build::{ }; use contract_transcode::ContractMessageTranscoder; -#[derive(Debug, Clone, clap::Args)] -#[clap( - name = "decode", - about = "Decodes the input or output data of a contract" -)] +#[derive(Debug, Args)] pub struct DecodeCommand { - /// The type of data to encode. - #[clap(value_enum, short, long)] - r#type: DataType, + #[clap(subcommand)] + commands: DecodeCommands, +} + +#[derive(Debug, Subcommand)] +pub enum DecodeCommands { + #[clap(name = "message")] + Message(DecodeMessage), + /// Upload contract code + #[clap(name = "constructor")] + Constructor(DecodeConstructor), + /// Instantiate a contract + #[clap(name = "event")] + Event(DecodeEvent), +} + +#[derive(Debug, Clone, Args)] +pub struct DecodeMessage { + /// The data to decode; this has to be a hex value starting with `0x`. + #[clap(short, long)] + data: String, +} + +#[derive(Debug, Clone, Args)] +pub struct DecodeConstructor { /// The data to decode; this has to be a hex value starting with `0x`. #[clap(short, long)] data: String, } -#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, clap::ValueEnum)] -enum DataType { - Event, - Message, - Constructor, +#[derive(Debug, Clone, Args)] +pub struct DecodeEvent { + /// The signature topic of the event to be decoded; this has to be a hex value + /// starting with `0x`. + #[clap(short, long)] + signature_topic: String, + /// The data to decode; this has to be a hex value starting with `0x`. + #[clap(short, long)] + data: String, } impl DecodeCommand { @@ -54,20 +80,25 @@ impl DecodeCommand { let transcoder = ContractMessageTranscoder::load(crate_metadata.metadata_path())?; const ERR_MSG: &str = "Failed to decode specified data as a hex value"; - let decoded_data = match self.r#type { - DataType::Event => { + let decoded_data = match &self.commands { + DecodeCommands::Event(event) => { + let signature_topic_data = + util::decode_hex(&event.signature_topic).context(ERR_MSG)?; + let signature_topic = + primitive_types::H256::from_slice(&signature_topic_data); transcoder.decode_contract_event( - &mut &util::decode_hex(&self.data).context(ERR_MSG)?[..], + &signature_topic, + &mut &util::decode_hex(&event.data).context(ERR_MSG)?[..], )? } - DataType::Message => { + DecodeCommands::Message(message) => { transcoder.decode_contract_message( - &mut &util::decode_hex(&self.data).context(ERR_MSG)?[..], + &mut &util::decode_hex(&message.data).context(ERR_MSG)?[..], )? } - DataType::Constructor => { + DecodeCommands::Constructor(constructor) => { transcoder.decode_contract_constructor( - &mut &util::decode_hex(&self.data).context(ERR_MSG)?[..], + &mut &util::decode_hex(&constructor.data).context(ERR_MSG)?[..], )? } }; diff --git a/crates/cargo-contract/tests/decode.rs b/crates/cargo-contract/tests/decode.rs index 776d5c37e..a54d13ca8 100644 --- a/crates/cargo-contract/tests/decode.rs +++ b/crates/cargo-contract/tests/decode.rs @@ -82,10 +82,9 @@ fn decode_works() { // message data is being decoded properly cargo_contract(&project_dir) .arg("decode") + .arg("message") .arg("--data") .arg(msg_data) - .arg("-t") - .arg("message") .assert() .success() .stdout(predicates::str::contains(msg_decoded)); @@ -98,42 +97,45 @@ fn decode_works() { // wrong message data is being handled properly cargo_contract(&project_dir) .arg("decode") + .arg("message") .arg("--data") .arg(wrong_msg_data) - .arg("-t") - .arg("message") .assert() .failure() .stderr(predicates::str::contains(error_msg)); // when - let event_data: &str = "080001"; + let signature_topic = + "325c98ff66bd0d9d1c10789ae1f2a17bdfb2dcf6aa3d8092669afafdef1cb72d"; + let event_data: &str = "0001"; let event_decoded: &str = r#"Switched { new_value: true }"#; // then // event data is being decoded properly cargo_contract(&project_dir) .arg("decode") + .arg("event") + .arg("--signature-topic") + .arg(signature_topic) .arg("--data") .arg(event_data) - .arg("-t") - .arg("event") .assert() .success() .stdout(predicates::str::contains(event_decoded)); // and when - let wrong_event_data: &str = "0800010C"; + let wrong_event_data: &str = "00010C"; let error_msg: &str = "input length was longer than expected by 1 byte(s).\nManaged to decode `Switched`, `new_value` but `0C` bytes were left unread"; // then // wrong event data is being handled properly cargo_contract(&project_dir) .arg("decode") + .arg("event") + .arg("--signature-topic") + .arg(signature_topic) .arg("--data") .arg(wrong_event_data) - .arg("-t") - .arg("event") .assert() .failure() .stderr(predicates::str::contains(error_msg)); @@ -146,10 +148,9 @@ fn decode_works() { // constructor data is being decoded properly cargo_contract(&project_dir) .arg("decode") + .arg("constructor") .arg("-d") .arg(constructor_data) - .arg("-t") - .arg("constructor") .assert() .success() .stdout(predicates::str::contains(constructor_decoded)); @@ -162,10 +163,9 @@ fn decode_works() { // wrong constructor data is being handled properly cargo_contract(&project_dir) .arg("decode") + .arg("constructor") .arg("-d") .arg(wrong_constructor_data) - .arg("-t") - .arg("constructor") .assert() .failure() .stderr(predicates::str::contains(error_msg)); diff --git a/crates/extrinsics/Cargo.toml b/crates/extrinsics/Cargo.toml index c8ed7de87..d1068c68c 100644 --- a/crates/extrinsics/Cargo.toml +++ b/crates/extrinsics/Cargo.toml @@ -29,10 +29,10 @@ serde_json = "1.0.105" url = { version = "2.4.1", features = ["serde"] } rust_decimal = "1.32" tokio = { version = "1", features = ["macros", "rt-multi-thread"] } -sp-core = "21.0.0" -sp-runtime = "24.0.0" -sp-weights = "20.0.0" -pallet-contracts-primitives = "24.0.0" +sp-core = "22.0.0" +sp-runtime = "25.0.0" +sp-weights = "21.0.0" +pallet-contracts-primitives = "25.0.0" scale-info = "2.8.0" subxt = "0.31.0" subxt-signer = { version = "0.31.0", features = ["subxt", "sr25519"] } diff --git a/crates/extrinsics/src/events.rs b/crates/extrinsics/src/events.rs index 91f60a4dc..f9cd722fd 100644 --- a/crates/extrinsics/src/events.rs +++ b/crates/extrinsics/src/events.rs @@ -110,6 +110,7 @@ impl DisplayEvents { }; let event_data = &mut event.field_bytes(); + let event_sig_topic = event.topics().iter().next(); let mut unnamed_field_name = 0; for field_metadata in event_fields { if ::is_event( @@ -121,6 +122,7 @@ impl DisplayEvents { let field = contract_event_data_field( transcoder, field_metadata, + event_sig_topic, event_data, )?; event_entry.fields.push(field); @@ -212,18 +214,24 @@ impl DisplayEvents { fn contract_event_data_field( transcoder: Option<&ContractMessageTranscoder>, field_metadata: &scale_info::Field, + event_sig_topic: Option<&sp_core::H256>, event_data: &mut &[u8], ) -> Result { let event_value = if let Some(transcoder) = transcoder { - match transcoder.decode_contract_event(event_data) { - Ok(contract_event) => contract_event, - Err(err) => { - tracing::warn!( - "Decoding contract event failed: {:?}. It might have come from another contract.", - err - ); - Value::Hex(Hex::from_str(&hex::encode(&event_data))?) + if let Some(event_sig_topic) = event_sig_topic { + match transcoder.decode_contract_event(event_sig_topic, event_data) { + Ok(contract_event) => contract_event, + Err(err) => { + tracing::warn!( + "Decoding contract event failed: {:?}. It might have come from another contract.", + err + ); + Value::Hex(Hex::from_str(&hex::encode(&event_data))?) + } } + } else { + tracing::info!("Anonymous event not decoded. Data displayed as raw hex."); + Value::Hex(Hex::from_str(&hex::encode(event_data))?) } } else { Value::Hex(Hex::from_str(&hex::encode(event_data))?) diff --git a/crates/transcode/Cargo.toml b/crates/transcode/Cargo.toml index a4b9a4676..a9e81fbdf 100644 --- a/crates/transcode/Cargo.toml +++ b/crates/transcode/Cargo.toml @@ -24,8 +24,8 @@ contract-metadata = { version = "4.0.0-alpha", path = "../metadata" } escape8259 = "0.5.2" hex = "0.4.3" indexmap = "2.0.0" -ink_env = "4.3.0" -ink_metadata = "4.3.0" +ink_env = "5.0.0-alpha" +ink_metadata = "5.0.0-alpha" itertools = "0.11.0" tracing = "0.1.37" nom = "7.1.3" @@ -40,7 +40,7 @@ strsim = "0.10.0" [dev-dependencies] assert_matches = "1.5.0" -ink = "4.3.0" +ink = "5.0.0-alpha" sp-core = "22.0.0" sp-keyring = "25.0.0" diff --git a/crates/transcode/src/lib.rs b/crates/transcode/src/lib.rs index 61906699a..8fb318113 100644 --- a/crates/transcode/src/lib.rs +++ b/crates/transcode/src/lib.rs @@ -286,21 +286,31 @@ impl ContractMessageTranscoder { .find(|msg| msg.label() == &name.to_string()) } - pub fn decode_contract_event(&self, data: &mut &[u8]) -> Result { + pub fn decode_contract_event( + &self, + event_sig_topic: &primitive_types::H256, + data: &mut &[u8], + ) -> Result { // data is an encoded `Vec` so is prepended with its length `Compact`, // which we ignore because the structure of the event data is known for // decoding. let _len = >::decode(data)?; - let variant_index = data.read_byte()?; let event_spec = self .metadata .spec() .events() - .get(variant_index as usize) + .iter() + .find(|event| { + if let Some(sig_topic) = event.signature_topic() { + sig_topic.as_bytes() == event_sig_topic.as_bytes() + } else { + false + } + }) .ok_or_else(|| { anyhow::anyhow!( - "Event variant {} not found in contract metadata", - variant_index + "Event with signature topic {} not found in contract metadata", + hex::encode(event_sig_topic) ) })?; tracing::debug!("Decoding contract event '{}'", event_spec.label()); @@ -490,6 +500,7 @@ impl CompositeTypeFields { #[cfg(test)] mod tests { use super::*; + use primitive_types::H256; use scale::Encode; use scon::Value; use std::str::FromStr; @@ -767,11 +778,16 @@ mod tests { let metadata = generate_metadata(); let transcoder = ContractMessageTranscoder::new(metadata); - // raw encoded event with event index prefix - let encoded = (0u8, [0u32; 8], [1u32; 8]).encode(); + let signature_topic: H256 = + ::SIGNATURE_TOPIC + .unwrap() + .into(); + // raw encoded event + let encoded = ([0u32; 8], [1u32; 8]).encode(); // encode again as a Vec which has a len prefix. let encoded_bytes = encoded.encode(); - let _ = transcoder.decode_contract_event(&mut &encoded_bytes[..])?; + let _ = transcoder + .decode_contract_event(&signature_topic, &mut &encoded_bytes[..])?; Ok(()) } @@ -785,11 +801,16 @@ mod tests { 52u8, 40, 235, 225, 70, 245, 184, 36, 21, 218, 130, 114, 75, 207, 117, 240, 83, 118, 135, 56, 220, 172, 95, 131, 171, 125, 130, 167, 10, 15, 242, 222, ]; + let signature_topic: H256 = + ::SIGNATURE_TOPIC + .unwrap() + .into(); // raw encoded event with event index prefix - let encoded = (0u8, hash, [0u32; 8]).encode(); + let encoded = (hash, [0u32; 8]).encode(); // encode again as a Vec which has a len prefix. let encoded_bytes = encoded.encode(); - let decoded = transcoder.decode_contract_event(&mut &encoded_bytes[..])?; + let decoded = transcoder + .decode_contract_event(&signature_topic, &mut &encoded_bytes[..])?; if let Value::Map(ref map) = decoded { let name_field = &map[&Value::String("name".into())]; @@ -842,12 +863,16 @@ mod tests { let metadata = generate_metadata(); let transcoder = ContractMessageTranscoder::new(metadata); + let signature_topic: H256 = + ::SIGNATURE_TOPIC + .unwrap() + .into(); // raw encoded event with event index prefix - let encoded = (0u8, [0u32; 8], [1u32; 8], [12u8, 16u8]).encode(); + let encoded = ([0u32; 8], [1u32; 8], [12u8, 16u8]).encode(); // encode again as a Vec which has a len prefix. let encoded_bytes = encoded.encode(); let _ = transcoder - .decode_contract_event(&mut &encoded_bytes[..]) + .decode_contract_event(&signature_topic, &mut &encoded_bytes[..]) .unwrap(); } }