From 2350545d3ae4088c8073affec23f4a82cd408b5a Mon Sep 17 00:00:00 2001 From: Jiyuan Zheng Date: Tue, 16 Jul 2024 11:23:40 +0800 Subject: [PATCH] fix no_std for xcq-extension (#37) --- Cargo.lock | 1458 +++-------------------- Cargo.toml | 3 +- poc/runtime/Cargo.toml | 16 +- poc/runtime/src/xcq.rs | 40 +- xcq-extension-core/Cargo.toml | 1 + xcq-extension-core/src/lib.rs | 2 + xcq-extension-fungibles/Cargo.toml | 1 + xcq-extension-fungibles/src/lib.rs | 2 + xcq-extension/procedural/src/lib.rs | 2 +- xcq-runtime-api/procedural/src/utils.rs | 71 ++ xcq-test-runner/Cargo.toml | 4 + xcq-test-runner/src/main.rs | 138 ++- xcq-types/Cargo.toml | 6 +- xcq-types/src/ty/primitive.rs | 2 +- 14 files changed, 370 insertions(+), 1376 deletions(-) create mode 100644 xcq-runtime-api/procedural/src/utils.rs diff --git a/Cargo.lock b/Cargo.lock index bb8a9a7..b9d52de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,15 +12,6 @@ dependencies = [ "regex", ] -[[package]] -name = "addr2line" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" -dependencies = [ - "gimli 0.27.3", -] - [[package]] name = "addr2line" version = "0.22.0" @@ -139,7 +130,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -149,7 +140,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -365,7 +356,7 @@ version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ - "addr2line 0.22.0", + "addr2line", "cc", "cfg-if", "libc", @@ -392,15 +383,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -606,7 +588,7 @@ dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets 0.52.5", + "windows-targets", ] [[package]] @@ -681,7 +663,7 @@ dependencies = [ "lazy_static", "libc", "unicode-width", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -728,15 +710,6 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" -[[package]] -name = "cpp_demangle" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" -dependencies = [ - "cfg-if", -] - [[package]] name = "cpufeatures" version = "0.2.12" @@ -746,24 +719,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cranelift-entity" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" -dependencies = [ - "serde", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - [[package]] name = "crunchy" version = "0.2.2" @@ -963,17 +918,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "displaydoc" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "docify" version = "0.2.8" @@ -1155,7 +1099,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -1180,12 +1124,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - [[package]] name = "fallible-iterator" version = "0.3.0" @@ -1223,7 +1161,7 @@ dependencies = [ "cfg-if", "libc", "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -1254,15 +1192,6 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - [[package]] name = "fortuples" version = "0.9.1" @@ -1289,14 +1218,14 @@ dependencies = [ "paste", "scale-info", "serde", - "sp-api 31.0.0", - "sp-application-crypto 35.0.0", - "sp-core 32.0.0", - "sp-io 35.0.0", - "sp-runtime 36.0.0", - "sp-runtime-interface 27.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", "sp-std", - "sp-storage 21.0.0", + "sp-storage", "static_assertions", ] @@ -1313,11 +1242,11 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-core 32.0.0", - "sp-io 35.0.0", - "sp-runtime 36.0.0", + "sp-core", + "sp-io", + "sp-runtime", "sp-std", - "sp-tracing 17.0.0", + "sp-tracing", ] [[package]] @@ -1355,21 +1284,21 @@ dependencies = [ "serde", "serde_json", "smallvec", - "sp-api 31.0.0", - "sp-arithmetic 26.0.0", - "sp-core 32.0.0", + "sp-api", + "sp-arithmetic", + "sp-core", "sp-crypto-hashing-proc-macro", "sp-debug-derive", "sp-genesis-builder", "sp-inherents", - "sp-io 35.0.0", - "sp-metadata-ir 0.7.0", - "sp-runtime 36.0.0", + "sp-io", + "sp-metadata-ir", + "sp-runtime", "sp-staking", - "sp-state-machine 0.40.0", + "sp-state-machine", "sp-std", - "sp-tracing 17.0.0", - "sp-weights 31.0.0", + "sp-tracing", + "sp-weights", "static_assertions", "tt-call", ] @@ -1431,12 +1360,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 32.0.0", - "sp-io 35.0.0", - "sp-runtime 36.0.0", + "sp-core", + "sp-io", + "sp-runtime", "sp-std", - "sp-version 34.0.0", - "sp-weights 31.0.0", + "sp-version", + "sp-weights", ] [[package]] @@ -1446,7 +1375,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54771ae481dd08825d4de28b1b3623163efd9e7c4b59a6db1fb048dcdf73789e" dependencies = [ "parity-scale-codec", - "sp-api 31.0.0", + "sp-api", ] [[package]] @@ -1457,8 +1386,8 @@ checksum = "8f542a58bd43234882faff12062ce94838b3bbca1b6ed6b32180ee153350905f" dependencies = [ "frame-support", "parity-scale-codec", - "sp-api 31.0.0", - "sp-runtime 36.0.0", + "sp-api", + "sp-runtime", "sp-std", ] @@ -1605,24 +1534,13 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "gimli" -version = "0.27.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" -dependencies = [ - "fallible-iterator 0.2.0", - "indexmap 1.9.3", - "stable_deref_trait", -] - [[package]] name = "gimli" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" dependencies = [ - "fallible-iterator 0.3.0", + "fallible-iterator", "stable_deref_trait", ] @@ -1771,136 +1689,6 @@ dependencies = [ "cc", ] -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "idna" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed" -dependencies = [ - "icu_normalizer", - "icu_properties", - "smallvec", - "utf8_iter", -] - [[package]] name = "impl-codec" version = "0.6.0" @@ -1949,17 +1737,6 @@ dependencies = [ "quote", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - [[package]] name = "indexmap" version = "2.2.6" @@ -1979,17 +1756,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.0" @@ -2130,24 +1896,12 @@ dependencies = [ "nalgebra", ] -[[package]] -name = "linux-raw-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" - [[package]] name = "linux-raw-sys" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litemap" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" - [[package]] name = "lock_api" version = "0.4.12" @@ -2164,15 +1918,6 @@ version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" -[[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" -dependencies = [ - "libc", -] - [[package]] name = "macro_magic" version = "0.5.0" @@ -2255,24 +2000,6 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -[[package]] -name = "memfd" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" -dependencies = [ - "rustix 0.38.34", -] - -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - [[package]] name = "memory-db" version = "0.32.0" @@ -2413,18 +2140,6 @@ dependencies = [ "libc", ] -[[package]] -name = "object" -version = "0.30.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" -dependencies = [ - "crc32fast", - "hashbrown 0.13.2", - "indexmap 1.9.3", - "memchr", -] - [[package]] name = "object" version = "0.32.2" @@ -2473,8 +2188,8 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-core 32.0.0", - "sp-runtime 36.0.0", + "sp-core", + "sp-runtime", "sp-std", ] @@ -2491,7 +2206,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 36.0.0", + "sp-runtime", "sp-std", ] @@ -2507,8 +2222,8 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-io 35.0.0", - "sp-runtime 36.0.0", + "sp-io", + "sp-runtime", "sp-std", ] @@ -2526,10 +2241,10 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-inherents", - "sp-io 35.0.0", - "sp-runtime 36.0.0", + "sp-io", + "sp-runtime", "sp-std", - "sp-storage 21.0.0", + "sp-storage", "sp-timestamp", ] @@ -2544,9 +2259,9 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 32.0.0", - "sp-io 35.0.0", - "sp-runtime 36.0.0", + "sp-core", + "sp-io", + "sp-runtime", "sp-std", ] @@ -2558,9 +2273,9 @@ checksum = "f274055d2c61888689889d6e9b9266b163e1ed298967b55bf961db26b11a60fe" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", - "sp-api 31.0.0", - "sp-runtime 36.0.0", - "sp-weights 31.0.0", + "sp-api", + "sp-runtime", + "sp-weights", ] [[package]] @@ -2629,7 +2344,7 @@ dependencies = [ "libc", "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.52.5", + "windows-targets", ] [[package]] @@ -2659,12 +2374,6 @@ dependencies = [ "password-hash", ] -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -2738,12 +2447,14 @@ dependencies = [ "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", - "poc-executor", - "poc-extensions", "polkadot-sdk-frame", "scale-info", "sp-genesis-builder", "substrate-wasm-builder", + "xcq-executor", + "xcq-extension", + "xcq-extension-core", + "xcq-extension-fungibles", ] [[package]] @@ -2760,20 +2471,20 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-api 31.0.0", - "sp-arithmetic 26.0.0", + "sp-api", + "sp-arithmetic", "sp-block-builder", "sp-consensus-aura", "sp-consensus-grandpa", - "sp-core 32.0.0", + "sp-core", "sp-inherents", - "sp-io 35.0.0", + "sp-io", "sp-offchain", - "sp-runtime 36.0.0", + "sp-runtime", "sp-session", "sp-std", "sp-transaction-pool", - "sp-version 34.0.0", + "sp-version", ] [[package]] @@ -2794,12 +2505,6 @@ dependencies = [ "log", ] -[[package]] -name = "polkavm-common" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" - [[package]] name = "polkavm-common" version = "0.9.0" @@ -2813,34 +2518,13 @@ dependencies = [ "log", ] -[[package]] -name = "polkavm-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" -dependencies = [ - "polkavm-derive-impl-macro 0.8.0", -] - [[package]] name = "polkavm-derive" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" dependencies = [ - "polkavm-derive-impl-macro 0.9.0", -] - -[[package]] -name = "polkavm-derive-impl" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" -dependencies = [ - "polkavm-common 0.8.0", - "proc-macro2", - "quote", - "syn 2.0.66", + "polkavm-derive-impl-macro", ] [[package]] @@ -2855,23 +2539,13 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "polkavm-derive-impl-macro" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" -dependencies = [ - "polkavm-derive-impl 0.8.0", - "syn 2.0.66", -] - [[package]] name = "polkavm-derive-impl-macro" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" dependencies = [ - "polkavm-derive-impl 0.9.0", + "polkavm-derive-impl", "syn 2.0.66", ] @@ -2976,15 +2650,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "psm" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" -dependencies = [ - "cc", -] - [[package]] name = "quote" version = "1.0.36" @@ -3174,20 +2839,6 @@ dependencies = [ "semver 1.0.23", ] -[[package]] -name = "rustix" -version = "0.36.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.45.0", -] - [[package]] name = "rustix" version = "0.38.34" @@ -3197,8 +2848,8 @@ dependencies = [ "bitflags 2.5.0", "errno", "libc", - "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", + "linux-raw-sys", + "windows-sys", ] [[package]] @@ -3517,29 +3168,6 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -[[package]] -name = "sp-api" -version = "29.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3fb2cdf7ee9b8d6ec7c2d8740b1a506e393dc18c7c2776764b47136d72dce7" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "scale-info", - "sp-api-proc-macro 17.0.1", - "sp-core 31.0.0", - "sp-externalities 0.27.0", - "sp-metadata-ir 0.6.0", - "sp-runtime 34.0.0", - "sp-runtime-interface 26.0.0", - "sp-state-machine 0.38.0", - "sp-std", - "sp-trie 32.0.0", - "sp-version 32.0.0", - "thiserror", -] - [[package]] name = "sp-api" version = "31.0.0" @@ -3550,34 +3178,19 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-api-proc-macro 19.0.0", - "sp-core 32.0.0", - "sp-externalities 0.28.0", - "sp-metadata-ir 0.7.0", - "sp-runtime 36.0.0", - "sp-runtime-interface 27.0.0", - "sp-state-machine 0.40.0", + "sp-api-proc-macro", + "sp-core", + "sp-externalities", + "sp-metadata-ir", + "sp-runtime", + "sp-runtime-interface", + "sp-state-machine", "sp-std", - "sp-trie 34.0.0", - "sp-version 34.0.0", + "sp-trie", + "sp-version", "thiserror", ] -[[package]] -name = "sp-api-proc-macro" -version = "17.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63a5680d94c55e1c7dc54e9e09b4827314fab44f9300f0be170898dc402318de" -dependencies = [ - "Inflector", - "blake2", - "expander", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "sp-api-proc-macro" version = "19.0.0" @@ -3595,47 +3208,18 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "33.0.0" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" +checksum = "57541120624a76379cc993cbb85064a5148957a92da032567e54bce7977f51fc" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 31.0.0", - "sp-io 33.0.0", - "sp-std", -] - -[[package]] -name = "sp-application-crypto" -version = "35.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57541120624a76379cc993cbb85064a5148957a92da032567e54bce7977f51fc" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 32.0.0", - "sp-io 35.0.0", + "sp-core", + "sp-io", "sp-std", ] -[[package]] -name = "sp-arithmetic" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910c07fa263b20bf7271fdd4adcb5d3217dfdac14270592e0780223542e7e114" -dependencies = [ - "integer-sqrt", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-std", - "static_assertions", -] - [[package]] name = "sp-arithmetic" version = "26.0.0" @@ -3658,9 +3242,9 @@ version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51cf3d8fb96de98aecdd32cdd4a735af4d84fae274314f411f95c89d4dff6ad3" dependencies = [ - "sp-api 31.0.0", + "sp-api", "sp-inherents", - "sp-runtime 36.0.0", + "sp-runtime", ] [[package]] @@ -3672,11 +3256,11 @@ dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "sp-api 31.0.0", - "sp-application-crypto 35.0.0", + "sp-api", + "sp-application-crypto", "sp-consensus-slots", "sp-inherents", - "sp-runtime 36.0.0", + "sp-runtime", "sp-timestamp", ] @@ -3691,11 +3275,11 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-api 31.0.0", - "sp-application-crypto 35.0.0", - "sp-core 32.0.0", - "sp-keystore 0.38.0", - "sp-runtime 36.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "sp-runtime", ] [[package]] @@ -3710,53 +3294,6 @@ dependencies = [ "sp-timestamp", ] -[[package]] -name = "sp-core" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" -dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde", - "itertools", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types", - "rand", - "scale-info", - "schnorrkel", - "secp256k1", - "secrecy", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.27.0", - "sp-runtime-interface 26.0.0", - "sp-std", - "sp-storage 20.0.0", - "ss58-registry", - "substrate-bip39 0.5.0", - "thiserror", - "tracing", - "w3f-bls", - "zeroize", -] - [[package]] name = "sp-core" version = "32.0.0" @@ -3792,12 +3329,12 @@ dependencies = [ "serde", "sp-crypto-hashing", "sp-debug-derive", - "sp-externalities 0.28.0", - "sp-runtime-interface 27.0.0", + "sp-externalities", + "sp-runtime-interface", "sp-std", - "sp-storage 21.0.0", + "sp-storage", "ss58-registry", - "substrate-bip39 0.6.0", + "substrate-bip39", "thiserror", "tracing", "w3f-bls", @@ -3840,18 +3377,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "sp-externalities" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d6a4572eadd4a63cff92509a210bf425501a0c5e76574b30a366ac77653787" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std", - "sp-storage 20.0.0", -] - [[package]] name = "sp-externalities" version = "0.28.0" @@ -3860,7 +3385,7 @@ checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" dependencies = [ "environmental", "parity-scale-codec", - "sp-storage 21.0.0", + "sp-storage", ] [[package]] @@ -3872,8 +3397,8 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde_json", - "sp-api 31.0.0", - "sp-runtime 36.0.0", + "sp-api", + "sp-runtime", ] [[package]] @@ -3886,37 +3411,10 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 36.0.0", + "sp-runtime", "thiserror", ] -[[package]] -name = "sp-io" -version = "33.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" -dependencies = [ - "bytes", - "ed25519-dalek", - "libsecp256k1", - "log", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "rustversion", - "secp256k1", - "sp-core 31.0.0", - "sp-crypto-hashing", - "sp-externalities 0.27.0", - "sp-keystore 0.37.0", - "sp-runtime-interface 26.0.0", - "sp-state-machine 0.38.0", - "sp-std", - "sp-tracing 16.0.0", - "sp-trie 32.0.0", - "tracing", - "tracing-core", -] - [[package]] name = "sp-io" version = "35.0.0" @@ -3928,34 +3426,22 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "polkavm-derive 0.9.1", + "polkavm-derive", "rustversion", "secp256k1", - "sp-core 32.0.0", + "sp-core", "sp-crypto-hashing", - "sp-externalities 0.28.0", - "sp-keystore 0.38.0", - "sp-runtime-interface 27.0.0", - "sp-state-machine 0.40.0", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", "sp-std", - "sp-tracing 17.0.0", - "sp-trie 34.0.0", + "sp-tracing", + "sp-trie", "tracing", "tracing-core", ] -[[package]] -name = "sp-keystore" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" -dependencies = [ - "parity-scale-codec", - "parking_lot", - "sp-core 31.0.0", - "sp-externalities 0.27.0", -] - [[package]] name = "sp-keystore" version = "0.38.0" @@ -3964,8 +3450,8 @@ checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" dependencies = [ "parity-scale-codec", "parking_lot", - "sp-core 32.0.0", - "sp-externalities 0.28.0", + "sp-core", + "sp-externalities", ] [[package]] @@ -3978,18 +3464,6 @@ dependencies = [ "zstd", ] -[[package]] -name = "sp-metadata-ir" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0b5e87e56c1bb26d9524d48dd127121d630f895bd5914a34f0b017489f7c1d" -dependencies = [ - "frame-metadata", - "parity-scale-codec", - "scale-info", - "sp-std", -] - [[package]] name = "sp-metadata-ir" version = "0.7.0" @@ -4007,9 +3481,9 @@ version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2cbbd2096fda34c2f6f9f268c808ca280c08565e759309ea24f17dcd0808097b" dependencies = [ - "sp-api 31.0.0", - "sp-core 32.0.0", - "sp-runtime 36.0.0", + "sp-api", + "sp-core", + "sp-runtime", ] [[package]] @@ -4023,31 +3497,6 @@ dependencies = [ "regex", ] -[[package]] -name = "sp-runtime" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 33.0.0", - "sp-arithmetic 25.0.0", - "sp-core 31.0.0", - "sp-io 33.0.0", - "sp-std", - "sp-weights 30.0.0", -] - [[package]] name = "sp-runtime" version = "36.0.0" @@ -4065,32 +3514,12 @@ dependencies = [ "scale-info", "serde", "simple-mermaid", - "sp-application-crypto 35.0.0", - "sp-arithmetic 26.0.0", - "sp-core 32.0.0", - "sp-io 35.0.0", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", "sp-std", - "sp-weights 31.0.0", -] - -[[package]] -name = "sp-runtime-interface" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.8.0", - "primitive-types", - "sp-externalities 0.27.0", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage 20.0.0", - "sp-tracing 16.0.0", - "sp-wasm-interface 20.0.0", - "static_assertions", + "sp-weights", ] [[package]] @@ -4102,14 +3531,14 @@ dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.9.1", + "polkavm-derive", "primitive-types", - "sp-externalities 0.28.0", + "sp-externalities", "sp-runtime-interface-proc-macro", "sp-std", - "sp-storage 21.0.0", - "sp-tracing 17.0.0", - "sp-wasm-interface 21.0.0", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", "static_assertions", ] @@ -4135,10 +3564,10 @@ checksum = "9c558f85486882433adcfdfe05c5e82972a7be1a6d7fa68a6213b70ec1d86068" dependencies = [ "parity-scale-codec", "scale-info", - "sp-api 31.0.0", - "sp-core 32.0.0", - "sp-keystore 0.38.0", - "sp-runtime 36.0.0", + "sp-api", + "sp-core", + "sp-keystore", + "sp-runtime", "sp-staking", ] @@ -4152,30 +3581,8 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 32.0.0", - "sp-runtime 36.0.0", -] - -[[package]] -name = "sp-state-machine" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot", - "rand", - "smallvec", - "sp-core 31.0.0", - "sp-externalities 0.27.0", - "sp-panic-handler", - "sp-std", - "sp-trie 32.0.0", - "thiserror", - "tracing", - "trie-db 0.28.0", + "sp-core", + "sp-runtime", ] [[package]] @@ -4190,13 +3597,13 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 32.0.0", - "sp-externalities 0.28.0", + "sp-core", + "sp-externalities", "sp-panic-handler", - "sp-trie 34.0.0", + "sp-trie", "thiserror", "tracing", - "trie-db 0.29.1", + "trie-db", ] [[package]] @@ -4205,20 +3612,6 @@ version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" -[[package]] -name = "sp-storage" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive", - "sp-std", -] - [[package]] name = "sp-storage" version = "21.0.0" @@ -4241,23 +3634,10 @@ dependencies = [ "async-trait", "parity-scale-codec", "sp-inherents", - "sp-runtime 36.0.0", + "sp-runtime", "thiserror", ] -[[package]] -name = "sp-tracing" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0351810b9d074df71c4514c5228ed05c250607cba131c1c9d1526760ab69c05c" -dependencies = [ - "parity-scale-codec", - "sp-std", - "tracing", - "tracing-core", - "tracing-subscriber 0.2.25", -] - [[package]] name = "sp-tracing" version = "17.0.0" @@ -4276,33 +3656,8 @@ version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "207cb372504cf86237fa63953a0aa40d7596d1c9cf21175a56346ed1744eb8fe" dependencies = [ - "sp-api 31.0.0", - "sp-runtime 36.0.0", -] - -[[package]] -name = "sp-trie" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" -dependencies = [ - "ahash 0.8.11", - "hash-db", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot", - "rand", - "scale-info", - "schnellru", - "sp-core 31.0.0", - "sp-externalities 0.27.0", - "sp-std", - "thiserror", - "tracing", - "trie-db 0.28.0", - "trie-root", + "sp-api", + "sp-runtime", ] [[package]] @@ -4321,32 +3676,14 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 32.0.0", - "sp-externalities 0.28.0", + "sp-core", + "sp-externalities", "thiserror", "tracing", - "trie-db 0.29.1", + "trie-db", "trie-root", ] -[[package]] -name = "sp-version" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c0219b1aeb89e36d13bd43a718920a9087dbb66c567e672c4639cefb2fefc05" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "parity-wasm", - "scale-info", - "serde", - "sp-crypto-hashing-proc-macro", - "sp-runtime 34.0.0", - "sp-std", - "sp-version-proc-macro 13.0.0", - "thiserror", -] - [[package]] name = "sp-version" version = "34.0.0" @@ -4359,24 +3696,12 @@ dependencies = [ "scale-info", "serde", "sp-crypto-hashing-proc-macro", - "sp-runtime 36.0.0", + "sp-runtime", "sp-std", - "sp-version-proc-macro 14.0.0", + "sp-version-proc-macro", "thiserror", ] -[[package]] -name = "sp-version-proc-macro" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9bc3fed32d6dacbbbfb28dd1fe0224affbb737cb6cbfca1d9149351c2b69a7d" -dependencies = [ - "parity-scale-codec", - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "sp-version-proc-macro" version = "14.0.0" @@ -4389,20 +3714,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "sp-wasm-interface" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef97172c42eb4c6c26506f325f48463e9bc29b2034a587f1b9e48c751229bee" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-std", - "wasmtime", -] - [[package]] name = "sp-wasm-interface" version = "21.0.0" @@ -4414,22 +3725,6 @@ dependencies = [ "parity-scale-codec", ] -[[package]] -name = "sp-weights" -version = "30.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af6c661fe3066b29f9e1d258000f402ff5cc2529a9191972d214e5871d0ba87" -dependencies = [ - "bounded-collections", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 25.0.0", - "sp-debug-derive", - "sp-std", -] - [[package]] name = "sp-weights" version = "31.0.0" @@ -4441,7 +3736,7 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-debug-derive", ] @@ -4529,19 +3824,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "substrate-bip39" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b564c293e6194e8b222e52436bcb99f60de72043c7f845cf6c4406db4df121" -dependencies = [ - "hmac 0.12.1", - "pbkdf2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - [[package]] name = "substrate-bip39" version = "0.6.0" @@ -4603,29 +3885,12 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "tap" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" -[[package]] -name = "target-lexicon" -version = "0.12.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" - [[package]] name = "tempfile" version = "3.10.1" @@ -4634,8 +3899,8 @@ checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", - "rustix 0.38.34", - "windows-sys 0.52.0", + "rustix", + "windows-sys", ] [[package]] @@ -4686,16 +3951,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" version = "1.6.0" @@ -4738,7 +3993,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.6", + "indexmap", "toml_datetime", "winnow 0.5.40", ] @@ -4749,7 +4004,7 @@ version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ - "indexmap 2.2.6", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -4860,19 +4115,6 @@ dependencies = [ "tracing-log 0.2.0", ] -[[package]] -name = "trie-db" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff28e0f815c2fea41ebddf148e008b077d2faddb026c9555b29696114d602642" -dependencies = [ - "hash-db", - "hashbrown 0.13.2", - "log", - "rustc-hex", - "smallvec", -] - [[package]] name = "trie-db" version = "0.29.1" @@ -4957,29 +4199,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" -[[package]] -name = "url" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -5132,148 +4351,6 @@ dependencies = [ "cxx-build", ] -[[package]] -name = "wasmparser" -version = "0.102.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48134de3d7598219ab9eaf6b91b15d8e50d31da76b8519fe4ecfcec2cf35104b" -dependencies = [ - "indexmap 1.9.3", - "url", -] - -[[package]] -name = "wasmtime" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f907fdead3153cb9bfb7a93bbd5b62629472dc06dee83605358c64c52ed3dda9" -dependencies = [ - "anyhow", - "bincode", - "cfg-if", - "indexmap 1.9.3", - "libc", - "log", - "object 0.30.4", - "once_cell", - "paste", - "psm", - "serde", - "target-lexicon", - "wasmparser", - "wasmtime-environ", - "wasmtime-jit", - "wasmtime-runtime", - "windows-sys 0.45.0", -] - -[[package]] -name = "wasmtime-asm-macros" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b9daa7c14cd4fa3edbf69de994408d5f4b7b0959ac13fa69d465f6597f810d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "wasmtime-environ" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a990198cee4197423045235bf89d3359e69bd2ea031005f4c2d901125955c949" -dependencies = [ - "anyhow", - "cranelift-entity", - "gimli 0.27.3", - "indexmap 1.9.3", - "log", - "object 0.30.4", - "serde", - "target-lexicon", - "thiserror", - "wasmparser", - "wasmtime-types", -] - -[[package]] -name = "wasmtime-jit" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de48df552cfca1c9b750002d3e07b45772dd033b0b206d5c0968496abf31244" -dependencies = [ - "addr2line 0.19.0", - "anyhow", - "bincode", - "cfg-if", - "cpp_demangle", - "gimli 0.27.3", - "log", - "object 0.30.4", - "rustc-demangle", - "serde", - "target-lexicon", - "wasmtime-environ", - "wasmtime-jit-icache-coherence", - "wasmtime-runtime", - "windows-sys 0.45.0", -] - -[[package]] -name = "wasmtime-jit-debug" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" -dependencies = [ - "once_cell", -] - -[[package]] -name = "wasmtime-jit-icache-coherence" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aecae978b13f7f67efb23bd827373ace4578f2137ec110bbf6a4a7cde4121bbd" -dependencies = [ - "cfg-if", - "libc", - "windows-sys 0.45.0", -] - -[[package]] -name = "wasmtime-runtime" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658cf6f325232b6760e202e5255d823da5e348fdea827eff0a2a22319000b441" -dependencies = [ - "anyhow", - "cc", - "cfg-if", - "indexmap 1.9.3", - "libc", - "log", - "mach", - "memfd", - "memoffset", - "paste", - "rand", - "rustix 0.36.17", - "wasmtime-asm-macros", - "wasmtime-environ", - "wasmtime-jit-debug", - "windows-sys 0.45.0", -] - -[[package]] -name = "wasmtime-types" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" -dependencies = [ - "cranelift-entity", - "serde", - "thiserror", - "wasmparser", -] - [[package]] name = "wide" version = "0.7.24" @@ -5306,7 +4383,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -5321,25 +4398,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", + "windows-targets", ] [[package]] @@ -5348,37 +4407,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets", ] [[package]] @@ -5387,64 +4416,28 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.5" @@ -5457,72 +4450,24 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.5" @@ -5547,18 +4492,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "wyz" version = "0.5.1" @@ -5599,6 +4532,7 @@ name = "xcq-extension-core" version = "0.1.0" dependencies = [ "parity-scale-codec", + "scale-info", "xcq-extension", ] @@ -5607,6 +4541,7 @@ name = "xcq-extension-fungibles" version = "0.1.0" dependencies = [ "parity-scale-codec", + "scale-info", "xcq-extension", ] @@ -5632,8 +4567,20 @@ dependencies = [ name = "xcq-runtime-api" version = "0.1.0" dependencies = [ - "sp-api 29.0.0", + "sp-api", "xcq-primitives", + "xcq-runtime-api-procedural", +] + +[[package]] +name = "xcq-runtime-api-procedural" +version = "0.1.0" +dependencies = [ + "Inflector", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.66", ] [[package]] @@ -5641,10 +4588,14 @@ name = "xcq-test-runner" version = "0.1.0" dependencies = [ "clap", + "parity-scale-codec", "polkavm", "tracing", "tracing-subscriber 0.3.18", "xcq-executor", + "xcq-extension", + "xcq-extension-core", + "xcq-extension-fungibles", ] [[package]] @@ -5668,30 +4619,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "yoke" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", - "synstructure", -] - [[package]] name = "zerocopy" version = "0.7.34" @@ -5712,27 +4639,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "zerofrom" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", - "synstructure", -] - [[package]] name = "zeroize" version = "1.8.1" @@ -5753,28 +4659,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "zerovec" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "zstd" version = "0.12.4" diff --git a/Cargo.toml b/Cargo.toml index 3a4dfa7..bf31395 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ xcq-types = { path = "xcq-types", default-features = false } polkavm = { path = "vendor/polkavm/crates/polkavm", default-features = false } # polkadot-sdk -sp-api = { version = "29.0.0", default-features = false } +sp-api = { version = "31.0.0", default-features = false } # nostd parity-scale-codec = { version = "3.6.12", default-features = false, features = [ @@ -72,3 +72,4 @@ syn = { version = "2", features = ["full", "extra-traits"] } quote = "1" proc-macro2 = "1" proc-macro-crate = "3" +Inflector = { version = "0.11.4" } diff --git a/poc/runtime/Cargo.toml b/poc/runtime/Cargo.toml index bd23224..8a72f3c 100644 --- a/poc/runtime/Cargo.toml +++ b/poc/runtime/Cargo.toml @@ -4,8 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] -parity-scale-codec = { version = "3.0.0", default-features = false } -scale-info = { version = "2.6.0", default-features = false } +parity-scale-codec = { workspace = true } +scale-info = { workspace = true } # this is a frame-based runtime, thus importing `frame` with runtime feature enabled. frame = { version = "0.2.0", package = "polkadot-sdk-frame", default-features = false, features = [ "experimental", @@ -23,8 +23,10 @@ pallet-transaction-payment-rpc-runtime-api = { version = "33.0.0", default-featu # genesis builder that allows us to interacto with runtime genesis config sp-genesis-builder = { version = "0.12.0", default-features = false } -poc-executor = { path = "../executor", default-features = false } -poc-extensions = { path = "../extensions", default-features = false } +xcq-executor = { workspace = true } +xcq-extension = { workspace = true } +xcq-extension-core = { workspace = true } +xcq-extension-fungibles = { workspace = true } [dev-dependencies] hex = "0.4" @@ -49,6 +51,8 @@ std = [ "sp-genesis-builder/std", "substrate-wasm-builder", - "poc-executor/std", - "poc-extensions/std", + "xcq-executor/std", + "xcq-extension/std", + "xcq-extension-core/std", + "xcq-extension-fungibles/std", ] diff --git a/poc/runtime/src/xcq.rs b/poc/runtime/src/xcq.rs index eb6418e..bb4dd03 100644 --- a/poc/runtime/src/xcq.rs +++ b/poc/runtime/src/xcq.rs @@ -7,9 +7,7 @@ pub type XcqResponse = Vec; pub type XcqError = String; pub type XcqResult = Result; -use poc_extensions::extension_core::{self, ExtensionCore}; -use poc_extensions::extension_fungibles::{self, ExtensionFungibles}; -use poc_extensions::{ExtensionsExecutor, Guest, Input, InvokeSource, Method}; +use xcq_extension::{ExtensionsExecutor, Guest, Input, InvokeSource, Method}; decl_runtime_apis! { pub trait XcqApi { fn execute_query(query: Vec, input: Vec) -> XcqResult; @@ -17,48 +15,42 @@ decl_runtime_apis! { } // extension_core impls -pub struct ExtensionCoreImpl; +pub struct ExtensionImpl; -pub struct ExtensionCoreConfigImpl; -impl extension_core::Config for ExtensionCoreConfigImpl { +impl xcq_extension_core::Config for ExtensionImpl { type ExtensionId = u64; } -impl ExtensionCore for ExtensionCoreImpl { - type Config = ExtensionCoreConfigImpl; - fn has_extension(id: ::ExtensionId) -> bool { +impl xcq_extension_core::ExtensionCore for ExtensionImpl { + type Config = ExtensionImpl; + fn has_extension(id: ::ExtensionId) -> bool { matches!(id, 0 | 1) } } // extension_fungibles impls -pub struct ExtensionFungiblesImpl; - -pub struct ExtensionFungiblesConfigImpl; - -impl extension_fungibles::Config for ExtensionFungiblesConfigImpl { +impl xcq_extension_fungibles::Config for ExtensionImpl { type AccountId = crate::interface::AccountId; type Balance = crate::interface::Balance; type AssetId = crate::interface::AssetId; } -type AccountIdFor = <::Config as extension_fungibles::Config>::AccountId; -type BalanceFor = <::Config as extension_fungibles::Config>::Balance; -type AssetIdFor = <::Config as extension_fungibles::Config>::AssetId; - -impl ExtensionFungibles for ExtensionFungiblesImpl { - type Config = ExtensionFungiblesConfigImpl; - fn balance(asset: AssetIdFor, who: AccountIdFor) -> BalanceFor { +impl xcq_extension_fungibles::ExtensionFungibles for ExtensionImpl { + type Config = ExtensionImpl; + fn balance( + asset: xcq_extension_fungibles::AssetIdFor, + who: xcq_extension_fungibles::AccountIdFor, + ) -> xcq_extension_fungibles::BalanceFor { crate::Assets::balance(asset, who) } - fn total_supply(asset: AssetIdFor) -> BalanceFor { + fn total_supply(asset: xcq_extension_fungibles::AssetIdFor) -> xcq_extension_fungibles::BalanceFor { crate::Assets::total_supply(asset) } } type Extensions = ( - extension_core::Call, - extension_fungibles::Call, + xcq_extension_core::Call, + xcq_extension_fungibles::Call, ); // guest impls diff --git a/xcq-extension-core/Cargo.toml b/xcq-extension-core/Cargo.toml index 7a68cff..b880172 100644 --- a/xcq-extension-core/Cargo.toml +++ b/xcq-extension-core/Cargo.toml @@ -10,6 +10,7 @@ version.workspace = true [dependencies] parity-scale-codec = { workspace = true } xcq-extension = { workspace = true } +scale-info = { workspace = true } [features] default = ["std"] diff --git a/xcq-extension-core/src/lib.rs b/xcq-extension-core/src/lib.rs index d6df5e5..7dad134 100644 --- a/xcq-extension-core/src/lib.rs +++ b/xcq-extension-core/src/lib.rs @@ -1,4 +1,6 @@ +#![cfg_attr(not(feature = "std"), no_std)] use parity_scale_codec::{Decode, Encode}; +use scale_info::prelude::vec::Vec; use xcq_extension::extension; #[extension] diff --git a/xcq-extension-fungibles/Cargo.toml b/xcq-extension-fungibles/Cargo.toml index 1cce9dd..9c01c3d 100644 --- a/xcq-extension-fungibles/Cargo.toml +++ b/xcq-extension-fungibles/Cargo.toml @@ -10,6 +10,7 @@ version.workspace = true [dependencies] parity-scale-codec = { workspace = true } xcq-extension = { workspace = true } +scale-info = { workspace = true } [features] default = ["std"] diff --git a/xcq-extension-fungibles/src/lib.rs b/xcq-extension-fungibles/src/lib.rs index 9ebe61b..60287d5 100644 --- a/xcq-extension-fungibles/src/lib.rs +++ b/xcq-extension-fungibles/src/lib.rs @@ -1,4 +1,6 @@ +#![cfg_attr(not(feature = "std"), no_std)] use parity_scale_codec::{Decode, Encode}; +use scale_info::prelude::vec::Vec; use xcq_extension::extension; pub type AccountIdFor = <::Config as Config>::AccountId; diff --git a/xcq-extension/procedural/src/lib.rs b/xcq-extension/procedural/src/lib.rs index 477a6d4..96fc632 100644 --- a/xcq-extension/procedural/src/lib.rs +++ b/xcq-extension/procedural/src/lib.rs @@ -60,7 +60,7 @@ fn call_enum_def(trait_ident: &Ident, methods: &[Method]) -> syn::Result) + __Phantom(core::marker::PhantomData) )); Ok(parse_quote!( #[derive(Decode)] diff --git a/xcq-runtime-api/procedural/src/utils.rs b/xcq-runtime-api/procedural/src/utils.rs new file mode 100644 index 0000000..caea63c --- /dev/null +++ b/xcq-runtime-api/procedural/src/utils.rs @@ -0,0 +1,71 @@ +use inflector::Inflector; +use proc_macro2::{Span, TokenStream as TokenStream2}; +use proc_macro_crate::{crate_name, FoundCrate}; +use syn::{spanned::Spanned, Error, Ident, ItemImpl, Path, Result}; +/// Should a qualified trait path be required? +/// +/// e.g. `path::Trait` is qualified and `Trait` is not. +pub enum RequireQualifiedTraitPath { + Yes, + No, +} +/// Extract the trait that is implemented by the given `ItemImpl`. +pub fn extract_impl_trait(impl_: &ItemImpl, require: RequireQualifiedTraitPath) -> Result<&Path> { + impl_ + .trait_ + .as_ref() + .map(|v| &v.1) + .ok_or_else(|| Error::new(impl_.span(), "Only implementation of traits are supported!")) + .and_then(|p| { + if p.segments.len() > 1 || matches!(require, RequireQualifiedTraitPath::No) { + Ok(p) + } else { + Err(Error::new( + p.span(), + "The implemented trait has to be referenced with a path, \ + e.g. `impl xcq_extension_core::ExtensionCore for Runtime`.", + )) + } + }) +} + +/// Generates the name of the module that contains the trait declaration for the runtime. +pub fn generate_runtime_mod_name_for_trait(trait_: &Ident) -> Ident { + Ident::new( + &format!("runtime_decl_for_{}", trait_.to_string().to_snake_case()), + Span::call_site(), + ) +} + +/// Generate the crate access for the crate using 2018 syntax. +/// +/// If `frame` is in scope, it will use `polkadot_sdk_frame::deps::`. Else, it will try +/// and find `` directly. +pub fn generate_access_from_frame_or_crate(def_crate: &str) -> Result { + if let Some(path) = get_frame_crate_path(def_crate) { + Ok(path) + } else if let Some(path) = get_sdk_crate_path(def_crate) { + Ok(path) + } else { + let ident = match crate_name(def_crate) { + Ok(FoundCrate::Itself) => { + let name = def_crate.to_string().replace("-", "_"); + Ok(syn::Ident::new(&name, Span::call_site())) + } + Ok(FoundCrate::Name(name)) => Ok(Ident::new(&name, Span::call_site())), + Err(e) => Err(Error::new(Span::call_site(), e)), + }?; + + Ok(syn::Path::from(ident)) + } +} +fn import_xcq_types() -> TokenStream2 { + let found_crate = crate_name("xcq-types").expect("xcq-types not found in Cargo.toml"); + match found_crate { + FoundCrate::Itself => quote! { crate }, + FoundCrate::Name(name) => { + let name = syn::Ident::new(&name, proc_macro2::Span::call_site()); + quote! { ::#name } + } + } +} diff --git a/xcq-test-runner/Cargo.toml b/xcq-test-runner/Cargo.toml index 73bd876..9d88bef 100644 --- a/xcq-test-runner/Cargo.toml +++ b/xcq-test-runner/Cargo.toml @@ -11,7 +11,11 @@ version.workspace = true clap = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } +parity-scale-codec = { workspace = true, features = ["std"] } xcq-executor = { workspace = true, features = ["std"] } +xcq-extension = { workspace = true, features = ["std"] } +xcq-extension-core = { workspace = true, features = ["std"] } +xcq-extension-fungibles = { workspace = true, features = ["std"] } polkavm = { workspace = true } diff --git a/xcq-test-runner/src/main.rs b/xcq-test-runner/src/main.rs index 39d9e76..46a7c17 100644 --- a/xcq-test-runner/src/main.rs +++ b/xcq-test-runner/src/main.rs @@ -1,52 +1,7 @@ use clap::Parser; -use polkavm::{Caller, Config, Linker}; +use parity_scale_codec::{Decode, Encode}; use tracing_subscriber::prelude::*; -use xcq_executor::{XcqExecutor, XcqExecutorContext}; - -struct HostFunctions; - -#[derive(Clone, Copy)] -#[repr(C)] -struct GuestArgs { - arg0: u32, - arg1: u32, -} - -#[derive(Clone, Copy)] -#[repr(C)] -struct GuestReturn { - data0: u64, - data1: u64, -} - -impl XcqExecutorContext for HostFunctions { - fn register_host_functions(&mut self, linker: &mut Linker) { - linker - .func_wrap( - "host_call_impl", - move |mut caller: Caller<_>, args_ptr: u32, out_ptr: u32| { - let args_ptr = args_ptr as *const GuestArgs; - let args_size = core::mem::size_of::(); - // First we read the args from the guest memory - let args_in_bytes = caller.read_memory_into_vec(args_ptr as u32, args_size as u32).unwrap(); - let args: GuestArgs = unsafe { std::ptr::read(args_in_bytes.as_ptr() as *const GuestArgs) }; - println!("host_call: arg0: {:?}", args.arg0); - let res = GuestReturn { - data0: (args.arg0 + 1) as u64, - data1: args.arg1 as u64, - }; - let res_bytes = unsafe { - std::slice::from_raw_parts( - &res as *const GuestReturn as *const u8, - core::mem::size_of::(), - ) - }; - caller.write_memory(out_ptr, res_bytes).unwrap(); - }, - ) - .unwrap(); - } -} +use xcq_extension::{ExtensionId, ExtensionsExecutor, Guest, Input, InvokeSource, Method}; #[derive(Parser, Debug)] #[command(version, about)] @@ -72,12 +27,91 @@ fn main() { let raw_blob = std::fs::read(cli.program).expect("Failed to read program"); - let config = Config::from_env().unwrap(); + let mut executor = ExtensionsExecutor::::new(InvokeSource::RuntimeAPI); - let mut executor: XcqExecutor = XcqExecutor::new(config, HostFunctions); - let res = executor.execute(&raw_blob[..], "main", &[0u8]).unwrap(); + let guest = GuestImpl { + program: raw_blob.to_vec(), + }; + let method = CoreMethod::HasExtension { id: 0 }; + let mut input_data = as ExtensionId>::EXTENSION_ID.encode(); + input_data.extend_from_slice(&method.encode()); + let input = InputImpl { + method: "main".to_string(), + args: input_data, + }; + let res = executor.execute_method(guest, input).unwrap(); tracing::info!("Result: {:?}", res); +} - let res = executor.execute(&raw_blob[..], "main", &[1u8, 40u8]).unwrap(); - tracing::info!("Result: {:?}", res); +// extension_core impls +pub struct ExtensionImpl; +impl xcq_extension_core::Config for ExtensionImpl { + type ExtensionId = u64; +} +impl xcq_extension_core::ExtensionCore for ExtensionImpl { + type Config = Self; + fn has_extension(id: ::ExtensionId) -> bool { + matches!(id, 0 | 1) + } +} + +// extension_fungibles impls +impl xcq_extension_fungibles::Config for ExtensionImpl { + type AccountId = [u8; 32]; + type Balance = u32; + type AssetId = u64; +} + +impl xcq_extension_fungibles::ExtensionFungibles for ExtensionImpl { + type Config = Self; + fn balance( + _asset: xcq_extension_fungibles::AssetIdFor, + _who: xcq_extension_fungibles::AccountIdFor, + ) -> xcq_extension_fungibles::BalanceFor { + 0 + } + fn total_supply(_asset: xcq_extension_fungibles::AssetIdFor) -> xcq_extension_fungibles::BalanceFor { + 100 + } +} + +type Extensions = ( + xcq_extension_core::Call, + xcq_extension_fungibles::Call, +); + +// guest impls +pub struct GuestImpl { + pub program: Vec, +} + +impl Guest for GuestImpl { + fn program(&self) -> &[u8] { + &self.program + } +} + +pub struct InputImpl { + pub method: Method, + pub args: Vec, +} + +impl Input for InputImpl { + fn method(&self) -> Method { + self.method.clone() + } + fn args(&self) -> &[u8] { + &self.args + } +} + +#[derive(Encode, Decode)] +enum CoreMethod { + HasExtension { id: u64 }, +} + +#[derive(Encode, Decode)] +enum FungiblesMethod { + TotalSupply { asset: u64 }, + Balance { asset: u64, who: [u8; 32] }, } diff --git a/xcq-types/Cargo.toml b/xcq-types/Cargo.toml index db9d07c..31a2a29 100644 --- a/xcq-types/Cargo.toml +++ b/xcq-types/Cargo.toml @@ -9,9 +9,7 @@ version.workspace = true [dependencies] cfg-if = "1.0" -codec = { package = "parity-scale-codec", version = "3", default-features = false, features = [ - "derive", -] } +parity-scale-codec = { workspace = true } serde = { version = "1", default-features = false, optional = true, features = [ "derive", ] } @@ -20,4 +18,4 @@ xcq-types-derive = { path = "derive" } [features] default = ["std"] -std = ["codec/std"] +std = ["parity-scale-codec/std"] diff --git a/xcq-types/src/ty/primitive.rs b/xcq-types/src/ty/primitive.rs index 1a9d839..63ee1cd 100644 --- a/xcq-types/src/ty/primitive.rs +++ b/xcq-types/src/ty/primitive.rs @@ -1,4 +1,4 @@ -use codec::Encode; +use parity_scale_codec::Encode; #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr(feature = "serde", serde(rename_all = "snake_case"))]