diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a275f0120..a4647a697 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,7 @@ jobs: - uses: Off-Narrative-Labs/toml_sort@v1 with: all: true + match: "Cargo.toml" test: name: Test and code coverage @@ -49,8 +50,10 @@ jobs: cache-targets: true cache-on-failure: true - name: Run tests and print coverage data - run: cargo llvm-cov nextest --json --output-path lcov.json - --ignore-filename-regex "node/" --summary-only && + run: cargo llvm-cov nextest --workspace + --exclude node-template --exclude parachain-template-node + --exclude derive-no-bound + --json --output-path lcov.json --summary-only && echo "Lines coverage " && jq ".data[0].totals.lines.percent" lcov.json # if the PR is on the same repo, the coverage data can be reported as a comment - if: github.event_name == 'pull_request' && @@ -101,6 +104,9 @@ jobs: cache-targets: true cache-on-failure: true - name: Build - run: cargo build + # We do not need the parachain node for the wallet test. + # However, this is more than merely an optimization. + # If we just `cargo build` the runtime will be incorrectly built with the parachain feature. + run: cargo build -p node-template -p tuxedo-template-wallet - name: Run wallet test run: ./wallet/test.sh diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9004c942b..a7a208514 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,7 +4,7 @@ # 1. It feels less official and these containers are not yet ready for production # 2. It doesn't require setting up a docker hub account or encrypting secrets. -name: Create and publish a Docker image +name: Create and publish Docker images on: push: @@ -18,7 +18,7 @@ env: IMAGE_NAME: ${{ github.repository }} jobs: - build-and-push-node-image: + build-and-push-sovereign-node-image: runs-on: ubuntu-latest permissions: contents: read @@ -44,6 +44,40 @@ jobs: - name: Build and push Docker image uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc with: + # Consider adding an explicit file path here so it matches the others. + # Also consider moving the node's dockerfile into the node directory. + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + build-and-push-parachain-node-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-parachain + + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + file: ./parachain-node/Dockerfile context: . push: true tags: ${{ steps.meta.outputs.tags }} diff --git a/Cargo.lock b/Cargo.lock index bc53b5cc9..fa17b62db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,6 +194,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "always-assert" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4436e0292ab1bb631b42973c61205e704475fe8126af845c8d923c0996328127" + [[package]] name = "amoeba" version = "0.1.0" @@ -220,6 +226,12 @@ dependencies = [ "libc", ] +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + [[package]] name = "ansi_term" version = "0.12.1" @@ -283,6 +295,29 @@ version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df752953c49ce90719c7bf1fc587bc8227aed04732ea0c0f85e5397d7fdbd1a1" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "arc-swap" version = "1.6.0" @@ -324,7 +359,7 @@ dependencies = [ "ark-std", "derivative", "hashbrown 0.13.2", - "itertools", + "itertools 0.10.5", "num-traits", "zeroize", ] @@ -353,7 +388,7 @@ dependencies = [ "ark-std", "derivative", "digest 0.10.7", - "itertools", + "itertools 0.10.5", "num-bigint", "num-traits", "paste", @@ -490,6 +525,15 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +[[package]] +name = "arrayvec" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +dependencies = [ + "nodrop", +] + [[package]] name = "arrayvec" version = "0.5.2" @@ -569,6 +613,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + [[package]] name = "async-channel" version = "1.9.0" @@ -576,8 +626,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d37875bd9915b7d67c2f117ea2c30a0989874d0b2cb694fe25403c85763c0c9e" +dependencies = [ + "concurrent-queue", + "event-listener 3.1.0", + "event-listener-strategy", "futures-core", + "pin-project-lite 0.2.13", +] + +[[package]] +name = "async-executor" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc5ea910c42e5ab19012bab31f53cb4d63d54c3a27730f9a833a88efcf4bb52d" +dependencies = [ + "async-lock 3.1.1", + "async-task", + "concurrent-queue", + "fastrand 2.0.1", + "futures-lite 2.0.1", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "blocking", + "futures-lite 1.13.0", ] [[package]] @@ -586,29 +675,112 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", - "polling", + "polling 2.8.0", "rustix 0.37.27", "slab", "socket2 0.4.10", "waker-fn", ] +[[package]] +name = "async-io" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41ed9d5715c2d329bf1b4da8d60455b99b187f27ba726df2883799af9af60997" +dependencies = [ + "async-lock 3.1.1", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.0.1", + "parking", + "polling 3.3.0", + "rustix 0.38.25", + "slab", + "tracing", + "waker-fn", + "windows-sys 0.48.0", +] + [[package]] name = "async-lock" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ - "event-listener", + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655b9c7fe787d3b25cc0f804a1a8401790f0c5bc395beb5a64dc77d8de079105" +dependencies = [ + "event-listener 3.1.0", + "event-listener-strategy", + "pin-project-lite 0.2.13", +] + +[[package]] +name = "async-net" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0434b1ed18ce1cf5769b8ac540e33f01fa9471058b5e89da9e06f3c882a8c12f" +dependencies = [ + "async-io 1.13.0", + "blocking", + "futures-lite 1.13.0", +] + +[[package]] +name = "async-process" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +dependencies = [ + "async-io 1.13.0", + "async-lock 2.8.0", + "async-signal", + "blocking", + "cfg-if", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.25", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io 2.2.0", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.25", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", ] +[[package]] +name = "async-task" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" + [[package]] name = "async-trait" version = "0.1.74" @@ -633,6 +805,12 @@ dependencies = [ "pin-project-lite 0.2.13", ] +[[package]] +name = "atomic-take" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8ab6b55fe97976e46f91ddbed8d147d966475dc29b2032757ba47e02376fbc3" + [[package]] name = "atomic-waker" version = "1.1.2" @@ -704,6 +882,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.13.1" @@ -731,6 +915,15 @@ dependencies = [ "serde", ] +[[package]] +name = "binary-merkle-tree" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "hash-db", + "log", +] + [[package]] name = "bincode" version = "1.3.3" @@ -761,6 +954,21 @@ dependencies = [ "syn 2.0.39", ] +[[package]] +name = "bip39" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +dependencies = [ + "bitcoin_hashes", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" + [[package]] name = "bitflags" version = "1.3.2" @@ -806,6 +1014,16 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake2-rfc" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +dependencies = [ + "arrayvec 0.4.12", + "constant_time_eq 0.1.5", +] + [[package]] name = "blake2b_simd" version = "1.0.2" @@ -814,7 +1032,7 @@ checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" dependencies = [ "arrayref", "arrayvec 0.7.4", - "constant_time_eq", + "constant_time_eq 0.3.0", ] [[package]] @@ -825,7 +1043,7 @@ checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" dependencies = [ "arrayref", "arrayvec 0.7.4", - "constant_time_eq", + "constant_time_eq 0.3.0", ] [[package]] @@ -838,7 +1056,7 @@ dependencies = [ "arrayvec 0.7.4", "cc", "cfg-if", - "constant_time_eq", + "constant_time_eq 0.3.0", ] [[package]] @@ -896,6 +1114,22 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel 2.1.0", + "async-lock 3.1.1", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.0.1", + "piper", + "tracing", +] + [[package]] name = "bounded-collections" version = "0.1.9" @@ -908,6 +1142,15 @@ dependencies = [ "serde", ] +[[package]] +name = "bounded-vec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68534a48cbf63a4b1323c433cf21238c9ec23711e0df13b08c33e5c2082663ce" +dependencies = [ + "thiserror", +] + [[package]] name = "bs58" version = "0.4.0" @@ -960,6 +1203,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +[[package]] +name = "bytemuck" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" + [[package]] name = "byteorder" version = "1.5.0" @@ -1004,9 +1253,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -1025,6 +1274,12 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cc" version = "1.0.83" @@ -1055,6 +1310,15 @@ dependencies = [ "nom", ] +[[package]] +name = "cfg-expr" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -1115,6 +1379,33 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "ciborium" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" + +[[package]] +name = "ciborium-ll" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "cid" version = "0.9.0" @@ -1157,6 +1448,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ckb-merkle-mountain-range" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8" +dependencies = [ + "cfg-if", +] + [[package]] name = "clang-sys" version = "1.6.1" @@ -1208,6 +1508,18 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +[[package]] +name = "coarsetime" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71367d3385c716342014ad17e3d19f7788ae514885a1f4c24f500260fb365e1a" +dependencies = [ + "libc", + "once_cell", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + [[package]] name = "codespan-reporting" version = "0.11.1" @@ -1218,16 +1530,48 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "color-print" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a858372ff14bab9b1b30ea504f2a4bc534582aee3e42ba2d41d2a7baba63d5d" +dependencies = [ + "color-print-proc-macro", +] + +[[package]] +name = "color-print-proc-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e37866456a721d0a404439a1adae37a31be4e0055590d053dfe6981e05003f" +dependencies = [ + "nom", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "colorchoice" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "comfy-table" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" +dependencies = [ + "strum 0.25.0", + "strum_macros 0.25.3", + "unicode-width", +] + [[package]] name = "common" version = "0.1.0" -source = "git+https://github.com/w3f/ring-proof#d3dcccd76cfdb8e2f905e789f129618898026447" +source = "git+https://github.com/w3f/ring-proof#9d79ccf8bb72b132262ccc86e4e42e4396d1bfb8" dependencies = [ "ark-ec", "ark-ff", @@ -1235,10 +1579,17 @@ dependencies = [ "ark-serialize", "ark-std", "fflonk", + "getrandom_or_panic", "merlin 3.0.0", "rand_chacha 0.3.1", ] +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + [[package]] name = "concurrent-queue" version = "2.3.0" @@ -1248,6 +1599,19 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "console" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.45.0", +] + [[package]] name = "const-oid" version = "0.9.5" @@ -1255,19 +1619,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] -name = "constant_time_eq" -version = "0.3.0" +name = "const-random" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" +dependencies = [ + "const-random-macro", +] [[package]] -name = "constcat" -version = "0.3.1" +name = "const-random-macro" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.11", + "once_cell", + "tiny-keccak", +] [[package]] -name = "core-foundation" +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "constcat" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" @@ -1300,6 +1696,16 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "cpu-time" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e393a7668fe1fad3075085b86c781883000b4ede868f43627b34a87c8b7ded" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "cpufeatures" version = "0.2.11" @@ -1400,7 +1806,7 @@ dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "itertools", + "itertools 0.10.5", "log", "smallvec", "wasmparser", @@ -1431,6 +1837,44 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "futures", + "is-terminal", + "itertools 0.10.5", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "tokio", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + [[package]] name = "crossbeam-deque" version = "0.8.3" @@ -1455,6 +1899,16 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.16" @@ -1482,6 +1936,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core 0.6.4", + "subtle 2.4.1", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -1542,366 +2008,719 @@ dependencies = [ ] [[package]] -name = "curve25519-dalek" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" +name = "cumulus-client-cli" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle 2.4.1", - "zeroize", + "clap", + "parity-scale-codec", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-service", + "sp-blockchain", + "sp-core", + "sp-runtime", + "url", ] [[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +name = "cumulus-client-collator" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle 2.4.1", - "zeroize", + "cumulus-client-consensus-common", + "cumulus-client-network", + "cumulus-primitives-core", + "futures", + "parity-scale-codec", + "parking_lot 0.12.1", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "sc-client-api", + "sp-api", + "sp-consensus", + "sp-core", + "sp-runtime", + "tracing", ] [[package]] -name = "curve25519-dalek" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +name = "cumulus-client-consensus-aura" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest 0.10.7", - "fiat-crypto", - "platforms", - "rustc_version", - "subtle 2.4.1", - "zeroize", + "async-trait", + "cumulus-client-collator", + "cumulus-client-consensus-common", + "cumulus-client-consensus-proposer", + "cumulus-primitives-aura", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-relay-chain-interface", + "futures", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "sc-client-api", + "sc-consensus", + "sc-consensus-aura", + "sc-consensus-babe", + "sc-consensus-slots", + "sc-telemetry", + "schnellru", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-runtime", + "sp-state-machine", + "sp-timestamp", + "substrate-prometheus-endpoint", + "tracing", ] [[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +name = "cumulus-client-consensus-common" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.39", + "async-trait", + "cumulus-client-pov-recovery", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "dyn-clone", + "futures", + "log", + "parity-scale-codec", + "polkadot-primitives", + "sc-client-api", + "sc-consensus", + "sc-consensus-babe", + "schnellru", + "sp-blockchain", + "sp-consensus", + "sp-consensus-slots", + "sp-core", + "sp-runtime", + "sp-timestamp", + "sp-trie", + "substrate-prometheus-endpoint", + "tracing", ] [[package]] -name = "cxx" -version = "1.0.110" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7129e341034ecb940c9072817cd9007974ea696844fc4dd582dc1653a7fbe2e8" +name = "cumulus-client-consensus-proposer" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", + "anyhow", + "async-trait", + "cumulus-primitives-parachain-inherent", + "sp-consensus", + "sp-inherents", + "sp-runtime", + "sp-state-machine", + "thiserror", ] [[package]] -name = "cxx-build" -version = "1.0.110" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a24f3f5f8eed71936f21e570436f024f5c2e25628f7496aa7ccd03b90109d5" +name = "cumulus-client-consensus-relay-chain" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.39", + "async-trait", + "cumulus-client-consensus-common", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "futures", + "parking_lot 0.12.1", + "sc-consensus", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", + "substrate-prometheus-endpoint", + "tracing", ] [[package]] -name = "cxxbridge-flags" -version = "1.0.110" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06fdd177fc61050d63f67f5bd6351fac6ab5526694ea8e359cd9cd3b75857f44" +name = "cumulus-client-network" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "cumulus-relay-chain-interface", + "futures", + "futures-timer", + "parity-scale-codec", + "parking_lot 0.12.1", + "polkadot-node-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "sc-client-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-state-machine", + "tracing", +] [[package]] -name = "cxxbridge-macro" -version = "1.0.110" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "587663dd5fb3d10932c8aecfe7c844db1bcf0aee93eeab08fac13dc1212c2e7f" +name = "cumulus-client-pov-recovery" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.39", + "async-trait", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "futures", + "futures-timer", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "rand 0.8.5", + "sc-client-api", + "sc-consensus", + "sp-consensus", + "sp-maybe-compressed-blob", + "sp-runtime", + "tracing", ] [[package]] -name = "darling" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" -dependencies = [ - "darling_core", - "darling_macro", +name = "cumulus-client-service" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "cumulus-client-cli", + "cumulus-client-collator", + "cumulus-client-consensus-common", + "cumulus-client-network", + "cumulus-client-pov-recovery", + "cumulus-primitives-core", + "cumulus-relay-chain-inprocess-interface", + "cumulus-relay-chain-interface", + "cumulus-relay-chain-minimal-node", + "futures", + "polkadot-primitives", + "sc-client-api", + "sc-consensus", + "sc-network", + "sc-network-sync", + "sc-network-transactions", + "sc-rpc", + "sc-service", + "sc-sysinfo", + "sc-telemetry", + "sc-transaction-pool", + "sc-utils", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-transaction-pool", ] [[package]] -name = "darling_core" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +name = "cumulus-pallet-parachain-system" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 1.0.109", + "bytes", + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "environmental", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-runtime-parachains", + "scale-info", + "sp-core", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-version", + "staging-xcm", + "trie-db", ] [[package]] -name = "darling_macro" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +name = "cumulus-pallet-parachain-system-proc-macro" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "darling_core", + "proc-macro-crate", + "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.39", ] [[package]] -name = "data-encoding" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" - -[[package]] -name = "data-encoding-macro" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c904b33cc60130e1aeea4956ab803d08a3f4a0ca82d64ed757afac3891f2bb99" +name = "cumulus-primitives-aura" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "data-encoding", - "data-encoding-macro-internal", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-primitives", + "sp-api", + "sp-consensus-aura", + "sp-runtime", + "sp-std", ] [[package]] -name = "data-encoding-macro-internal" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fdf3fce3ce863539ec1d7fd1b6dcc3c645663376b43ed376bbf887733e4f772" +name = "cumulus-primitives-core" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "data-encoding", - "syn 1.0.109", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "scale-info", + "sp-api", + "sp-runtime", + "sp-std", + "sp-trie", + "staging-xcm", ] [[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +name = "cumulus-primitives-parachain-inherent" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", + "async-trait", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "cumulus-test-relay-sproof-builder", + "parity-scale-codec", + "sc-client-api", + "scale-info", + "sp-api", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-storage", + "sp-trie", + "tracing", ] [[package]] -name = "der" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +name = "cumulus-primitives-utility" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "const-oid", - "zeroize", + "cumulus-primitives-core", + "frame-support", + "log", + "pallet-xcm-benchmarks", + "parity-scale-codec", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "der-parser" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82" +name = "cumulus-relay-chain-inprocess-interface" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "asn1-rs 0.3.1", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", + "async-trait", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "futures", + "futures-timer", + "polkadot-cli", + "polkadot-service", + "sc-cli", + "sc-client-api", + "sc-sysinfo", + "sc-telemetry", + "sc-tracing", + "sp-api", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-state-machine", ] [[package]] -name = "der-parser" -version = "8.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" +name = "cumulus-relay-chain-interface" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "asn1-rs 0.5.2", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", + "async-trait", + "cumulus-primitives-core", + "futures", + "jsonrpsee-core", + "parity-scale-codec", + "polkadot-overseer", + "sc-client-api", + "sp-api", + "sp-blockchain", + "sp-state-machine", + "thiserror", ] [[package]] -name = "deranged" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +name = "cumulus-relay-chain-minimal-node" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "powerfmt", + "array-bytes 6.2.0", + "async-trait", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "cumulus-relay-chain-rpc-interface", + "futures", + "polkadot-availability-recovery", + "polkadot-collator-protocol", + "polkadot-core-primitives", + "polkadot-network-bridge", + "polkadot-node-collation-generation", + "polkadot-node-core-runtime-api", + "polkadot-node-network-protocol", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "sc-authority-discovery", + "sc-network", + "sc-network-common", + "sc-service", + "sc-tracing", + "sc-utils", + "sp-api", + "sp-consensus", + "sp-consensus-babe", + "sp-runtime", + "substrate-prometheus-endpoint", + "tracing", ] [[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +name = "cumulus-relay-chain-rpc-interface" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "async-trait", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "either", + "futures", + "futures-timer", + "jsonrpsee", + "parity-scale-codec", + "pin-project", + "polkadot-overseer", + "rand 0.8.5", + "sc-client-api", + "sc-rpc-api", + "sc-service", + "schnellru", + "serde", + "serde_json", + "smoldot", + "smoldot-light", + "sp-api", + "sp-authority-discovery", + "sp-consensus-babe", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-storage", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "url", ] [[package]] -name = "derive-no-bound" +name = "cumulus-test-client" version = "0.1.0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.39", +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-relay-sproof-builder", + "cumulus-test-runtime", + "cumulus-test-service", + "frame-system", + "pallet-balances", + "pallet-transaction-payment", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives", + "sc-block-builder", + "sc-consensus", + "sc-executor", + "sc-executor-common", + "sc-service", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-timestamp", + "substrate-test-client", ] [[package]] -name = "derive_builder" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3" +name = "cumulus-test-relay-sproof-builder" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "derive_builder_macro", + "cumulus-primitives-core", + "parity-scale-codec", + "polkadot-primitives", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", ] [[package]] -name = "derive_builder_core" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 1.0.109", -] +name = "cumulus-test-runtime" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-primitives-core", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "pallet-balances", + "pallet-glutton", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-block-builder", + "sp-core", + "sp-inherents", + "sp-io", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-version", + "substrate-wasm-builder", +] [[package]] -name = "derive_builder_macro" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" +name = "cumulus-test-service" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "derive_builder_core", - "syn 1.0.109", + "async-trait", + "clap", + "criterion", + "cumulus-client-cli", + "cumulus-client-consensus-common", + "cumulus-client-consensus-relay-chain", + "cumulus-client-pov-recovery", + "cumulus-client-service", + "cumulus-pallet-parachain-system", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-relay-chain-inprocess-interface", + "cumulus-relay-chain-interface", + "cumulus-relay-chain-minimal-node", + "cumulus-test-relay-sproof-builder", + "cumulus-test-runtime", + "frame-system", + "frame-system-rpc-runtime-api", + "jsonrpsee", + "pallet-timestamp", + "pallet-transaction-payment", + "parachains-common", + "parity-scale-codec", + "polkadot-cli", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "polkadot-service", + "polkadot-test-service", + "rand 0.8.5", + "sc-basic-authorship", + "sc-block-builder", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-executor", + "sc-executor-common", + "sc-executor-wasmtime", + "sc-network", + "sc-service", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "sc-transaction-pool-api", + "serde", + "sp-api", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-state-machine", + "sp-timestamp", + "sp-tracing", + "substrate-test-client", + "tempfile", + "tokio", + "tracing", + "url", ] [[package]] -name = "derive_more" -version = "0.99.17" +name = "curve25519-dalek" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "byteorder", + "digest 0.8.1", + "rand_core 0.5.1", + "subtle 2.4.1", + "zeroize", ] [[package]] -name = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - -[[package]] -name = "digest" -version = "0.8.1" +name = "curve25519-dalek" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ - "generic-array 0.12.4", + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle 2.4.1", + "zeroize", ] [[package]] -name = "digest" -version = "0.9.0" +name = "curve25519-dalek" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" dependencies = [ - "generic-array 0.14.7", + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle 2.4.1", + "zeroize", ] [[package]] -name = "digest" -version = "0.10.7" +name = "curve25519-dalek-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "block-buffer 0.10.4", - "crypto-common", - "subtle 2.4.1", + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] -name = "directories" -version = "5.0.1" +name = "curve25519-dalek-ng" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" dependencies = [ - "dirs-sys", + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle-ng", + "zeroize", ] [[package]] -name = "directories-next" -version = "2.0.0" +name = "cxx" +version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +checksum = "7129e341034ecb940c9072817cd9007974ea696844fc4dd582dc1653a7fbe2e8" dependencies = [ - "cfg-if", - "dirs-sys-next", + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", ] [[package]] -name = "dirs-sys" -version = "0.4.1" +name = "cxx-build" +version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "a2a24f3f5f8eed71936f21e570436f024f5c2e25628f7496aa7ccd03b90109d5" dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.39", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "cxxbridge-flags" +version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] +checksum = "06fdd177fc61050d63f67f5bd6351fac6ab5526694ea8e359cd9cd3b75857f44" [[package]] -name = "displaydoc" -version = "0.2.4" +name = "cxxbridge-macro" +version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +checksum = "587663dd5fb3d10932c8aecfe7c844db1bcf0aee93eeab08fac13dc1212c2e7f" dependencies = [ "proc-macro2", "quote", @@ -1909,518 +2728,547 @@ dependencies = [ ] [[package]] -name = "dleq_vrf" -version = "0.0.2" -source = "git+https://github.com/w3f/ring-vrf?rev=4b09416#4b09416fd23383ec436ddac127d58c7b7cd392c6" +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "ark-ec", - "ark-ff", - "ark-scale", - "ark-secret-scalar", - "ark-serialize", - "ark-std", - "ark-transcript", - "arrayvec 0.7.4", - "rand_core 0.6.4", - "zeroize", + "darling_core", + "darling_macro", ] [[package]] -name = "downcast" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" - -[[package]] -name = "dtoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" - -[[package]] -name = "dyn-clonable" -version = "0.9.0" +name = "darling_core" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ - "dyn-clonable-impl", - "dyn-clone", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", ] [[package]] -name = "dyn-clonable-impl" -version = "0.9.0" +name = "darling_macro" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "proc-macro2", + "darling_core", "quote", "syn 1.0.109", ] [[package]] -name = "dyn-clone" -version = "1.0.16" +name = "data-encoding" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] -name = "ecdsa" -version = "0.14.8" +name = "data-encoding-macro" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +checksum = "20c01c06f5f429efdf2bae21eb67c28b3df3cf85b7dd2d8ef09c0838dac5d33e" dependencies = [ - "der 0.6.1", - "elliptic-curve", - "rfc6979", - "signature 1.6.4", + "data-encoding", + "data-encoding-macro-internal", ] [[package]] -name = "ed25519" -version = "2.2.3" +name = "data-encoding-macro-internal" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "0047d07f2c89b17dd631c80450d69841a6b5d7fb17278cbc43d7e4cfcf2576f3" dependencies = [ - "pkcs8 0.10.2", - "signature 2.2.0", + "data-encoding", + "syn 1.0.109", ] [[package]] -name = "ed25519-dalek" -version = "2.1.0" +name = "der" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" dependencies = [ - "curve25519-dalek 4.1.1", - "ed25519", - "rand_core 0.6.4", - "serde", - "sha2 0.10.8", - "subtle 2.4.1", + "const-oid", + "pem-rfc7468", "zeroize", ] [[package]] -name = "ed25519-zebra" -version = "3.1.0" +name = "der" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ - "curve25519-dalek 3.2.0", - "hashbrown 0.12.3", - "hex", - "rand_core 0.6.4", - "sha2 0.9.9", + "const-oid", "zeroize", ] [[package]] -name = "either" -version = "1.9.0" +name = "der-parser" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82" +dependencies = [ + "asn1-rs 0.3.1", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] [[package]] -name = "elliptic-curve" -version = "0.12.3" +name = "der-parser" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ - "base16ct", - "crypto-bigint", - "der 0.6.1", - "digest 0.10.7", - "ff", - "generic-array 0.14.7", - "group", - "hkdf", - "pem-rfc7468", - "pkcs8 0.9.0", - "rand_core 0.6.4", - "sec1", - "subtle 2.4.1", - "zeroize", + "asn1-rs 0.5.2", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", ] [[package]] -name = "enum-as-inner" -version = "0.5.1" +name = "deranged" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "heck", "proc-macro2", "quote", "syn 1.0.109", ] [[package]] -name = "env_logger" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +name = "derive-no-bound" +version = "0.1.0" dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] -name = "environmental" -version = "1.1.4" +name = "derive-syn-parse" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" +checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "equivalent" -version = "1.0.1" +name = "derive_builder" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3" +dependencies = [ + "derive_builder_macro", +] [[package]] -name = "errno" -version = "0.3.7" +name = "derive_builder_core" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" +checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" dependencies = [ - "libc", - "windows-sys 0.48.0", + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "ethbloom" -version = "0.13.0" +name = "derive_builder_macro" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" dependencies = [ - "crunchy", - "fixed-hash", - "impl-rlp", - "impl-serde", - "tiny-keccak", + "derive_builder_core", + "syn 1.0.109", ] [[package]] -name = "ethereum-types" -version = "0.14.1" +name = "derive_more" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ - "ethbloom", - "fixed-hash", - "impl-rlp", - "impl-serde", - "primitive-types", - "uint", + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", ] [[package]] -name = "event-listener" -version = "2.5.3" +name = "difflib" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] -name = "exit-future" -version = "0.2.0" +name = "digest" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "futures", + "generic-array 0.12.4", ] [[package]] -name = "expander" -version = "2.0.0" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "blake2 0.10.6", - "fs-err", - "proc-macro2", - "quote", - "syn 2.0.39", + "generic-array 0.14.7", ] [[package]] -name = "fake-simd" -version = "0.1.2" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle 2.4.1", +] [[package]] -name = "fallible-iterator" -version = "0.2.0" +name = "directories" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys", +] [[package]] -name = "fastrand" -version = "1.9.0" +name = "directories-next" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" dependencies = [ - "instant", + "cfg-if", + "dirs-sys-next", ] [[package]] -name = "fastrand" -version = "2.0.1" +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] [[package]] -name = "fdlimit" -version = "0.2.1" +name = "dirs-sys-next" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1b" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", + "redox_users", + "winapi", ] [[package]] -name = "ff" -version = "0.12.1" +name = "displaydoc" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ - "rand_core 0.6.4", - "subtle 2.4.1", + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] -name = "fflonk" -version = "0.1.0" -source = "git+https://github.com/w3f/fflonk#1beb0585e1c8488956fac7f05da061f9b41e8948" +name = "dleq_vrf" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=4b09416#4b09416fd23383ec436ddac127d58c7b7cd392c6" dependencies = [ "ark-ec", "ark-ff", - "ark-poly", + "ark-scale", + "ark-secret-scalar", "ark-serialize", "ark-std", - "merlin 3.0.0", + "ark-transcript", + "arrayvec 0.7.4", + "rand_core 0.6.4", + "zeroize", ] [[package]] -name = "fiat-crypto" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" - -[[package]] -name = "file-per-thread-logger" -version = "0.1.6" +name = "docify" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" +checksum = "4235e9b248e2ba4b92007fe9c646f3adf0ffde16dc74713eacc92b8bc58d8d2f" dependencies = [ - "env_logger", - "log", + "docify_macros", ] [[package]] -name = "filetime" -version = "0.2.22" +name = "docify_macros" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "47020e12d7c7505670d1363dd53d6c23724f71a90a3ae32ff8eba40de8404626" dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "common-path", + "derive-syn-parse", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.39", + "termcolor", + "toml 0.7.8", + "walkdir", ] [[package]] -name = "finality-grandpa" -version = "0.16.2" +name = "downcast" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3" -dependencies = [ - "either", - "futures", - "futures-timer", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot 0.12.1", - "scale-info", -] +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] -name = "fixed-hash" -version = "0.8.0" +name = "downcast-rs" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", - "static_assertions", -] +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] -name = "fixedbitset" -version = "0.4.2" +name = "dtoa" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] -name = "flate2" -version = "1.0.28" +name = "dyn-clonable" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4" dependencies = [ - "crc32fast", - "libz-sys", - "miniz_oxide", + "dyn-clonable-impl", + "dyn-clone", ] [[package]] -name = "float-cmp" +name = "dyn-clonable-impl" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" dependencies = [ - "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "fnv" -version = "1.0.7" +name = "dyn-clone" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] -name = "fork-tree" -version = "3.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ - "parity-scale-codec", + "der 0.6.1", + "elliptic-curve 0.12.3", + "rfc6979 0.3.1", + "signature 1.6.4", ] [[package]] -name = "form_urlencoded" -version = "1.2.0" +name = "ecdsa" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "percent-encoding", + "der 0.7.8", + "digest 0.10.7", + "elliptic-curve 0.13.8", + "rfc6979 0.4.0", + "signature 2.2.0", + "spki 0.7.2", ] [[package]] -name = "fragile" -version = "2.0.0" +name = "ed25519" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.2.0", +] [[package]] -name = "frame-metadata" -version = "16.0.0" +name = "ed25519-dalek" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" +checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" dependencies = [ - "cfg-if", - "parity-scale-codec", - "scale-info", + "curve25519-dalek 4.1.1", + "ed25519", + "rand_core 0.6.4", "serde", + "sha2 0.10.8", + "subtle 2.4.1", + "zeroize", ] [[package]] -name = "fs-err" -version = "2.10.0" +name = "ed25519-zebra" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5fd9bcbe8b1087cbd395b51498c01bc997cef73e778a80b77a811af5e2d29f" +checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" dependencies = [ - "autocfg", + "curve25519-dalek 3.2.0", + "hashbrown 0.12.3", + "hex", + "rand_core 0.6.4", + "sha2 0.9.9", + "zeroize", ] [[package]] -name = "fs2" -version = "0.4.3" +name = "ed25519-zebra" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ - "libc", - "winapi", + "curve25519-dalek 4.1.1", + "ed25519", + "hashbrown 0.14.2", + "hex", + "rand_core 0.6.4", + "sha2 0.10.8", + "zeroize", ] [[package]] -name = "funty" -version = "2.0.0" +name = "either" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] -name = "futures" -version = "0.3.29" +name = "elliptic-curve" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "base16ct 0.1.1", + "crypto-bigint 0.4.9", + "der 0.6.1", + "digest 0.10.7", + "ff 0.12.1", + "generic-array 0.14.7", + "group 0.12.1", + "hkdf", + "pem-rfc7468", + "pkcs8 0.9.0", + "rand_core 0.6.4", + "sec1 0.3.0", + "subtle 2.4.1", + "zeroize", ] [[package]] -name = "futures-channel" -version = "0.3.29" +name = "elliptic-curve" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ - "futures-core", - "futures-sink", + "base16ct 0.2.0", + "crypto-bigint 0.5.5", + "digest 0.10.7", + "ff 0.13.0", + "generic-array 0.14.7", + "group 0.13.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "subtle 2.4.1", + "zeroize", ] [[package]] -name = "futures-core" -version = "0.3.29" +name = "encode_unicode" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] -name = "futures-executor" -version = "0.3.29" +name = "enum-as-inner" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", + "heck", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "futures-io" -version = "0.3.29" +name = "enumflags2" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" +dependencies = [ + "enumflags2_derive", +] [[package]] -name = "futures-lite" -version = "1.13.0" +name = "enumflags2_derive" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite 0.2.13", - "waker-fn", + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] -name = "futures-macro" -version = "0.3.29" +name = "enumn" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" dependencies = [ "proc-macro2", "quote", @@ -2428,2398 +3276,5875 @@ dependencies = [ ] [[package]] -name = "futures-rustls" -version = "0.22.2" +name = "env_logger" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ - "futures-io", - "rustls 0.20.9", - "webpki 0.22.4", + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", ] [[package]] -name = "futures-sink" -version = "0.3.29" +name = "environmental" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" [[package]] -name = "futures-task" -version = "0.3.29" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "futures-timer" -version = "3.0.2" +name = "errno" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] [[package]] -name = "futures-util" -version = "0.3.29" +name = "ethbloom" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite 0.2.13", - "pin-utils", - "slab", + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "ethereum-types" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ - "byteorder", + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types", + "uint", ] [[package]] -name = "generic-array" -version = "0.12.4" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] -name = "generic-array" -version = "0.14.7" +name = "event-listener" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" dependencies = [ - "typenum", - "version_check", + "concurrent-queue", + "parking", + "pin-project-lite 0.2.13", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "event-listener-strategy" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "d96b852f1345da36d551b9473fa1e2b1eb5c5195585c6c018118bc92a8d91160" dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "event-listener 3.1.0", + "pin-project-lite 0.2.13", ] [[package]] -name = "getrandom" -version = "0.2.11" +name = "exit-future" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "futures", ] [[package]] -name = "ghash" -version = "0.4.4" +name = "expander" +version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +checksum = "a718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881" dependencies = [ - "opaque-debug 0.3.0", - "polyval 0.5.3", + "blake3", + "fs-err", + "proc-macro2", + "quote", ] [[package]] -name = "ghash" -version = "0.5.0" +name = "expander" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" +checksum = "5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7" dependencies = [ - "opaque-debug 0.3.0", - "polyval 0.6.1", + "blake2 0.10.6", + "fs-err", + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] -name = "gimli" -version = "0.27.3" +name = "fake-simd" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ - "fallible-iterator", - "indexmap 1.9.3", - "stable_deref_trait", + "instant", ] [[package]] -name = "gimli" -version = "0.28.0" +name = "fastrand" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] -name = "glob" -version = "0.3.1" +name = "fatality" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "2ad875162843b0d046276327afe0136e9ed3a23d5a754210fb6f1f33610d39ab" +dependencies = [ + "fatality-proc-macro", + "thiserror", +] [[package]] -name = "globset" -version = "0.4.13" +name = "fatality-proc-macro" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" +checksum = "f5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bd" dependencies = [ - "aho-corasick", - "bstr", - "fnv", - "log", - "regex", + "expander 0.0.4", + "indexmap 1.9.3", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", + "thiserror", ] [[package]] -name = "group" +name = "fdlimit" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1b" +dependencies = [ + "libc", +] + +[[package]] +name = "ff" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ - "ff", "rand_core 0.6.4", "subtle 2.4.1", ] [[package]] -name = "h2" -version = "0.3.22" +name = "ff" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 2.1.0", - "slab", - "tokio", - "tokio-util", - "tracing", + "rand_core 0.6.4", + "subtle 2.4.1", ] [[package]] -name = "hash-db" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4" +name = "fflonk" +version = "0.1.0" +source = "git+https://github.com/w3f/fflonk#1beb0585e1c8488956fac7f05da061f9b41e8948" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "merlin 3.0.0", +] [[package]] -name = "hash256-std-hasher" -version = "0.15.2" +name = "fiat-crypto" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" -dependencies = [ - "crunchy", -] +checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" [[package]] -name = "hashbrown" -version = "0.12.3" +name = "file-per-thread-logger" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" dependencies = [ - "ahash 0.7.7", + "env_logger", + "log", ] [[package]] -name = "hashbrown" -version = "0.13.2" +name = "filetime" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ - "ahash 0.8.6", + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "windows-sys 0.48.0", ] [[package]] -name = "hashbrown" -version = "0.14.2" +name = "finality-grandpa" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3" dependencies = [ - "ahash 0.8.6", - "allocator-api2", + "either", + "futures", + "futures-timer", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot 0.12.1", + "scale-info", ] [[package]] -name = "hashlink" -version = "0.8.4" +name = "fixed-hash" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ - "hashbrown 0.14.2", + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", ] [[package]] -name = "heck" -version = "0.4.1" +name = "fixedbitset" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "flate2" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ - "libc", + "crc32fast", + "libz-sys", + "miniz_oxide", ] [[package]] -name = "hermit-abi" -version = "0.3.3" +name = "float-cmp" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] [[package]] -name = "hex" -version = "0.4.3" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +name = "fork-tree" +version = "3.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "parity-scale-codec", +] [[package]] -name = "hkdf" -version = "0.12.3" +name = "form_urlencoded" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "hmac 0.12.1", + "percent-encoding", ] [[package]] -name = "hmac" -version = "0.8.1" +name = "fragile" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "frame-benchmarking" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", + "frame-support", + "frame-support-procedural", + "frame-system", + "linregress", + "log", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-std", + "sp-storage", + "static_assertions", ] [[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +name = "frame-benchmarking-cli" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "crypto-mac 0.11.1", - "digest 0.9.0", + "Inflector", + "array-bytes 6.2.0", + "chrono", + "clap", + "comfy-table", + "frame-benchmarking", + "frame-support", + "frame-system", + "gethostname", + "handlebars", + "itertools 0.10.5", + "lazy_static", + "linked-hash-map", + "log", + "parity-scale-codec", + "rand 0.8.5", + "rand_pcg", + "sc-block-builder", + "sc-cli", + "sc-client-api", + "sc-client-db", + "sc-executor", + "sc-service", + "sc-sysinfo", + "serde", + "serde_json", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-database", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-state-machine", + "sp-storage", + "sp-trie", + "sp-wasm-interface", + "thiserror", + "thousands", ] [[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +name = "frame-election-provider-solution-type" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "digest 0.10.7", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] -name = "hmac-drbg" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +name = "frame-election-provider-support" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "digest 0.9.0", - "generic-array 0.14.7", - "hmac 0.8.1", + "frame-election-provider-solution-type", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-npos-elections", + "sp-runtime", + "sp-std", ] [[package]] -name = "home" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +name = "frame-executive" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "windows-sys 0.48.0", + "frame-support", + "frame-system", + "frame-try-runtime", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", ] [[package]] -name = "hostname" -version = "0.3.1" +name = "frame-metadata" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" dependencies = [ - "libc", - "match_cfg", - "winapi", + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", ] [[package]] -name = "http" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +name = "frame-remote-externalities" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "bytes", - "fnv", - "itoa", + "futures", + "indicatif", + "jsonrpsee", + "log", + "parity-scale-codec", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", + "spinners", + "substrate-rpc-client", + "tokio", + "tokio-retry", ] [[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +name = "frame-support" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "bytes", - "http", - "pin-project-lite 0.2.13", + "aquamarine", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata", + "frame-support-procedural", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "smallvec", + "sp-api", + "sp-arithmetic", + "sp-core", + "sp-core-hashing-proc-macro", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-metadata-ir", + "sp-runtime", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-weights", + "static_assertions", + "tt-call", ] [[package]] -name = "http-range-header" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" +name = "frame-support-procedural" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "expander 2.0.0", + "frame-support-procedural-tools", + "itertools 0.10.5", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-core-hashing", + "syn 2.0.39", +] [[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +name = "frame-support-procedural-tools" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.39", +] [[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +name = "frame-support-procedural-tools-derive" +version = "3.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] [[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +name = "frame-system" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "cfg-if", + "frame-support", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-version", + "sp-weights", +] [[package]] -name = "hyper" -version = "0.14.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +name = "frame-system-benchmarking" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite 0.2.13", - "socket2 0.4.10", - "tokio", - "tower-service", - "tracing", - "want", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +name = "frame-system-rpc-runtime-api" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "futures-util", - "http", - "hyper", - "log", - "rustls 0.21.9", - "rustls-native-certs", - "tokio", - "tokio-rustls", - "webpki-roots 0.25.2", + "parity-scale-codec", + "sp-api", ] [[package]] -name = "iana-time-zone" -version = "0.1.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +name = "frame-try-runtime" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", + "frame-support", + "parity-scale-codec", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "fs-err" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ - "cc", + "autocfg", ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "fs2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] [[package]] -name = "idna" -version = "0.2.3" +name = "fs4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47" dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", + "rustix 0.38.25", + "windows-sys 0.48.0", ] [[package]] -name = "idna" -version = "0.4.0" +name = "funty" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] -name = "if-addrs" -version = "0.7.0" +name = "futures" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ - "libc", - "winapi", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "if-watch" -version = "3.1.0" +name = "futures-channel" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb892e5777fe09e16f3d44de7802f4daa7267ecbe8c466f19d94e25bb0c303e" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ - "async-io", - "core-foundation", - "fnv", - "futures", - "if-addrs", - "ipnet", - "log", - "rtnetlink", - "system-configuration", - "tokio", - "windows", + "futures-core", + "futures-sink", ] [[package]] -name = "impl-codec" -version = "0.6.0" +name = "futures-core" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" + +[[package]] +name = "futures-executor" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ - "parity-scale-codec", + "futures-core", + "futures-task", + "futures-util", + "num_cpus", ] [[package]] -name = "impl-rlp" -version = "0.3.0" +name = "futures-io" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "rlp", + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.2.13", + "waker-fn", ] [[package]] -name = "impl-serde" -version = "0.4.0" +name = "futures-lite" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +checksum = "d3831c2651acb5177cbd83943f3d9c8912c5ad03c76afcc0e9511ba568ec5ebb" dependencies = [ - "serde", + "fastrand 2.0.1", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.2.13", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "futures-macro" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.39", ] [[package]] -name = "indexmap" -version = "1.9.3" +name = "futures-rustls" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", + "futures-io", + "rustls 0.20.9", + "webpki 0.22.4", ] [[package]] -name = "indexmap" -version = "2.1.0" +name = "futures-sink" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" + +[[package]] +name = "futures-task" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ - "equivalent", - "hashbrown 0.14.2", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite 0.2.13", + "pin-utils", + "slab", ] [[package]] -name = "inout" -version = "0.1.3" +name = "fxhash" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" dependencies = [ - "generic-array 0.14.7", + "byteorder", ] [[package]] -name = "instant" -version = "0.1.12" +name = "generic-array" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" dependencies = [ - "cfg-if", + "typenum", ] [[package]] -name = "integer-sqrt" -version = "0.1.5" +name = "generic-array" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ - "num-traits", + "typenum", + "version_check", + "zeroize", ] [[package]] -name = "interceptor" -version = "0.8.2" +name = "gethostname" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90b" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" dependencies = [ - "async-trait", - "bytes", - "log", - "rand 0.8.5", - "rtcp", - "rtp", - "thiserror", - "tokio", - "waitgroup", - "webrtc-srtp", - "webrtc-util", + "libc", + "winapi", ] [[package]] -name = "io-lifetimes" -version = "1.0.11" +name = "getrandom" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "hermit-abi 0.3.3", + "cfg-if", "libc", - "windows-sys 0.48.0", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] -name = "ip_network" -version = "0.4.1" +name = "getrandom" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] [[package]] -name = "ipconfig" -version = "0.3.2" +name = "getrandom_or_panic" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" dependencies = [ - "socket2 0.5.5", - "widestring", - "windows-sys 0.48.0", - "winreg", + "rand 0.8.5", + "rand_core 0.6.4", ] [[package]] -name = "ipnet" -version = "2.9.0" +name = "ghash" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +dependencies = [ + "opaque-debug 0.3.0", + "polyval 0.5.3", +] [[package]] -name = "is-terminal" -version = "0.4.9" +name = "ghash" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ - "hermit-abi 0.3.3", - "rustix 0.38.24", - "windows-sys 0.48.0", + "opaque-debug 0.3.0", + "polyval 0.6.1", ] [[package]] -name = "itertools" -version = "0.10.5" +name = "gimli" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "either", + "fallible-iterator", + "indexmap 1.9.3", + "stable_deref_trait", ] [[package]] -name = "itoa" -version = "1.0.9" +name = "gimli" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] -name = "jobserver" -version = "0.1.27" +name = "glob" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" dependencies = [ - "libc", + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", ] [[package]] -name = "js-sys" -version = "0.3.65" +name = "group" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ - "wasm-bindgen", + "ff 0.12.1", + "rand_core 0.6.4", + "subtle 2.4.1", ] [[package]] -name = "jsonrpsee" -version = "0.16.3" +name = "group" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "367a292944c07385839818bb71c8d76611138e2dedb0677d035b8da21d29c78b" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-proc-macros", - "jsonrpsee-server", - "jsonrpsee-types", - "tracing", + "ff 0.13.0", + "rand_core 0.6.4", + "subtle 2.4.1", ] [[package]] -name = "jsonrpsee-core" -version = "0.16.3" +name = "h2" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b5dde66c53d6dcdc8caea1874a45632ec0fcf5b437789f1e45766a1512ce803" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ - "anyhow", - "arrayvec 0.7.4", - "async-trait", - "beef", - "futures-channel", + "bytes", + "fnv", + "futures-core", + "futures-sink", "futures-util", - "globset", - "hyper", - "jsonrpsee-types", - "parking_lot 0.12.1", - "rand 0.8.5", - "rustc-hash", - "serde", - "serde_json", - "soketto", - "thiserror", + "http", + "indexmap 2.1.0", + "slab", "tokio", + "tokio-util", "tracing", ] [[package]] -name = "jsonrpsee-http-client" -version = "0.16.3" +name = "half" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5f9fabdd5d79344728521bb65e3106b49ec405a78b66fbff073b72b389fa43" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "handlebars" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" dependencies = [ - "async-trait", - "hyper", - "hyper-rustls", - "jsonrpsee-core", - "jsonrpsee-types", - "rustc-hash", + "log", + "pest", + "pest_derive", "serde", "serde_json", "thiserror", - "tokio", - "tracing", ] [[package]] -name = "jsonrpsee-proc-macros" -version = "0.16.3" +name = "hash-db" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44e8ab85614a08792b9bff6c8feee23be78c98d0182d4c622c05256ab553892a" -dependencies = [ - "heck", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4" [[package]] -name = "jsonrpsee-server" -version = "0.16.3" +name = "hash256-std-hasher" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4d945a6008c9b03db3354fb3c83ee02d2faa9f2e755ec1dfb69c3551b8f4ba" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" dependencies = [ - "futures-channel", - "futures-util", - "http", - "hyper", - "jsonrpsee-core", - "jsonrpsee-types", - "serde", - "serde_json", - "soketto", - "tokio", - "tokio-stream", - "tokio-util", - "tower", - "tracing", + "crunchy", ] [[package]] -name = "jsonrpsee-types" -version = "0.16.3" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245ba8e5aa633dd1c1e4fae72bce06e71f42d34c14a2767c6b4d173b57bee5e5" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "anyhow", - "beef", - "serde", - "serde_json", - "thiserror", - "tracing", + "ahash 0.7.7", ] [[package]] -name = "keccak" -version = "0.1.4" +name = "hashbrown" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "cpufeatures", + "ahash 0.8.6", ] [[package]] -name = "keystream" -version = "1.0.0" +name = "hashbrown" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33070833c9ee02266356de0c43f723152bd38bd96ddf52c82b3af10c9138b28" - -[[package]] -name = "kitties" -version = "0.1.0" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" dependencies = [ - "parity-scale-codec", - "scale-info", + "ahash 0.8.6", + "allocator-api2", "serde", - "sp-core", - "sp-runtime", - "sp-std", - "tuxedo-core", ] [[package]] -name = "kvdb" -version = "0.13.0" +name = "hashlink" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d770dcb02bf6835887c3a979b5107a04ff4bbde97a5f0928d27404a155add9" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "smallvec", + "hashbrown 0.14.2", ] [[package]] -name = "kvdb-memorydb" -version = "0.13.0" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2" -dependencies = [ - "kvdb", - "parking_lot 0.12.1", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "kvdb-rocksdb" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b644c70b92285f66bfc2032922a79000ea30af7bc2ab31902992a5dcb9b434f6" +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ - "kvdb", - "num_cpus", - "parking_lot 0.12.1", - "regex", - "rocksdb", - "smallvec", + "libc", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "hermit-abi" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] -name = "lazycell" -version = "1.3.0" +name = "hex" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "libc" -version = "0.2.150" +name = "hex-literal" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] -name = "libloading" -version = "0.7.4" +name = "hkdf" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ - "cfg-if", - "winapi", + "hmac 0.12.1", ] [[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - -[[package]] -name = "libp2p" -version = "0.51.3" +name = "hmac" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f210d259724eae82005b5c48078619b7745edb7b76de370b03f8ba59ea103097" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "bytes", - "futures", - "futures-timer", - "getrandom 0.2.11", - "instant", - "libp2p-allow-block-list", - "libp2p-connection-limits", - "libp2p-core", - "libp2p-dns", - "libp2p-identify", - "libp2p-identity", - "libp2p-kad", - "libp2p-mdns", - "libp2p-metrics", - "libp2p-noise", - "libp2p-ping", - "libp2p-quic", - "libp2p-request-response", - "libp2p-swarm", - "libp2p-tcp", - "libp2p-wasm-ext", - "libp2p-webrtc", - "libp2p-websocket", - "libp2p-yamux", - "multiaddr", - "pin-project", + "crypto-mac 0.8.0", + "digest 0.9.0", ] [[package]] -name = "libp2p-allow-block-list" -version = "0.1.1" +name = "hmac" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "510daa05efbc25184458db837f6f9a5143888f1caa742426d92e1833ddd38a50" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "void", + "crypto-mac 0.11.1", + "digest 0.9.0", ] [[package]] -name = "libp2p-connection-limits" -version = "0.1.0" +name = "hmac" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4caa33f1d26ed664c4fe2cca81a08c8e07d4c1c04f2f4ac7655c2dd85467fda0" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "void", + "digest 0.10.7", ] [[package]] -name = "libp2p-core" -version = "0.39.2" +name = "hmac-drbg" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1df63c0b582aa434fb09b2d86897fa2b419ffeccf934b36f87fcedc8e835c2" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "either", - "fnv", - "futures", - "futures-timer", - "instant", - "libp2p-identity", - "log", - "multiaddr", - "multihash", - "multistream-select", - "once_cell", - "parking_lot 0.12.1", - "pin-project", - "quick-protobuf", - "rand 0.8.5", - "rw-stream-sink", - "smallvec", - "thiserror", - "unsigned-varint", - "void", + "digest 0.9.0", + "generic-array 0.14.7", + "hmac 0.8.1", ] [[package]] -name = "libp2p-dns" -version = "0.39.0" +name = "home" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146ff7034daae62077c415c2376b8057368042df6ab95f5432ad5e88568b1554" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "futures", - "libp2p-core", - "log", - "parking_lot 0.12.1", - "smallvec", - "trust-dns-resolver", + "windows-sys 0.48.0", ] [[package]] -name = "libp2p-identify" -version = "0.42.2" +name = "hostname" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5455f472243e63b9c497ff320ded0314254a9eb751799a39c283c6f20b793f3c" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" dependencies = [ - "asynchronous-codec", - "either", - "futures", - "futures-timer", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "log", - "lru 0.10.1", - "quick-protobuf", - "quick-protobuf-codec", - "smallvec", - "thiserror", - "void", + "libc", + "match_cfg", + "winapi", ] [[package]] -name = "libp2p-identity" -version = "0.1.3" +name = "http" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ - "bs58 0.4.0", - "ed25519-dalek", - "log", - "multiaddr", - "multihash", - "quick-protobuf", - "rand 0.8.5", - "sha2 0.10.8", - "thiserror", - "zeroize", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "libp2p-kad" -version = "0.43.3" +name = "http-body" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39d5ef876a2b2323d63c258e63c2f8e36f205fe5a11f0b3095d59635650790ff" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "arrayvec 0.7.4", - "asynchronous-codec", "bytes", - "either", - "fnv", - "futures", - "futures-timer", - "instant", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "log", - "quick-protobuf", - "rand 0.8.5", - "sha2 0.10.8", - "smallvec", - "thiserror", - "uint", - "unsigned-varint", - "void", + "http", + "pin-project-lite 0.2.13", ] [[package]] -name = "libp2p-mdns" -version = "0.43.1" +name = "http-range-header" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19983e1f949f979a928f2c603de1cf180cc0dc23e4ac93a62651ccb18341460b" -dependencies = [ - "data-encoding", - "futures", - "if-watch", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "log", - "rand 0.8.5", - "smallvec", - "socket2 0.4.10", - "tokio", - "trust-dns-proto", - "void", -] +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] -name = "libp2p-metrics" -version = "0.12.0" +name = "httparse" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42ec91e227d7d0dafa4ce88b333cdf5f277253873ab087555c92798db2ddd46" -dependencies = [ - "libp2p-core", - "libp2p-identify", - "libp2p-kad", - "libp2p-ping", - "libp2p-swarm", - "prometheus-client", -] +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] -name = "libp2p-noise" -version = "0.42.2" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3673da89d29936bc6435bafc638e2f184180d554ce844db65915113f86ec5e" -dependencies = [ - "bytes", - "curve25519-dalek 3.2.0", - "futures", - "libp2p-core", - "libp2p-identity", - "log", - "once_cell", - "quick-protobuf", - "rand 0.8.5", - "sha2 0.10.8", - "snow", - "static_assertions", - "thiserror", - "x25519-dalek 1.1.1", - "zeroize", -] +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "libp2p-ping" -version = "0.42.0" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e57759c19c28a73ef1eb3585ca410cefb72c1a709fcf6de1612a378e4219202" -dependencies = [ - "either", - "futures", - "futures-timer", - "instant", - "libp2p-core", - "libp2p-swarm", - "log", - "rand 0.8.5", - "void", -] +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] -name = "libp2p-quic" -version = "0.7.0-alpha.3" +name = "hyper" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b26abd81cd2398382a1edfe739b539775be8a90fa6914f39b2ab49571ec735" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", - "futures", - "futures-timer", - "if-watch", - "libp2p-core", - "libp2p-identity", - "libp2p-tls", - "log", - "parking_lot 0.12.1", - "quinn-proto", - "rand 0.8.5", - "rustls 0.20.9", - "thiserror", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite 0.2.13", + "socket2 0.4.10", "tokio", + "tower-service", + "tracing", + "want", ] [[package]] -name = "libp2p-request-response" -version = "0.24.1" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffdb374267d42dc5ed5bc53f6e601d4a64ac5964779c6e40bb9e4f14c1e30d5" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "async-trait", - "futures", - "instant", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "rand 0.8.5", - "smallvec", + "futures-util", + "http", + "hyper", + "log", + "rustls 0.21.9", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "webpki-roots 0.25.2", ] [[package]] -name = "libp2p-swarm" -version = "0.42.2" +name = "iana-time-zone" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903b3d592d7694e56204d211f29d31bc004be99386644ba8731fc3e3ef27b296" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ - "either", - "fnv", - "futures", - "futures-timer", - "instant", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm-derive", - "log", - "rand 0.8.5", - "smallvec", - "tokio", - "void", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "libp2p-swarm-derive" -version = "0.32.0" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "heck", - "quote", - "syn 1.0.109", + "cc", ] [[package]] -name = "libp2p-tcp" -version = "0.39.0" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d33698596d7722d85d3ab0c86c2c322254fce1241e91208e3679b4eb3026cf" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ - "futures", - "futures-timer", - "if-watch", - "libc", - "libp2p-core", - "log", - "socket2 0.4.10", - "tokio", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "libp2p-tls" -version = "0.1.0" +name = "idna" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08d13d0dc66e5e9ba6279c1de417b84fa0d0adc3b03e5732928c180ec02781" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "futures", - "futures-rustls", - "libp2p-core", - "libp2p-identity", - "rcgen 0.10.0", - "ring 0.16.20", - "rustls 0.20.9", - "thiserror", - "webpki 0.22.4", - "x509-parser 0.14.0", - "yasna", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "libp2p-wasm-ext" -version = "0.39.0" +name = "if-addrs" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77dff9d32353a5887adb86c8afc1de1a94d9e8c3bc6df8b2201d7cdf5c848f43" +checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" dependencies = [ - "futures", - "js-sys", - "libp2p-core", - "parity-send-wrapper", - "wasm-bindgen", - "wasm-bindgen-futures", + "libc", + "windows-sys 0.48.0", ] [[package]] -name = "libp2p-webrtc" -version = "0.4.0-alpha.4" +name = "if-watch" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba48592edbc2f60b4bc7c10d65445b0c3964c07df26fdf493b6880d33be36f8" +checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" dependencies = [ - "async-trait", - "asynchronous-codec", - "bytes", + "async-io 2.2.0", + "core-foundation", + "fnv", "futures", - "futures-timer", - "hex", - "if-watch", - "libp2p-core", - "libp2p-identity", - "libp2p-noise", + "if-addrs", + "ipnet", "log", - "multihash", - "quick-protobuf", - "quick-protobuf-codec", - "rand 0.8.5", - "rcgen 0.9.3", - "serde", - "stun", - "thiserror", - "tinytemplate", + "rtnetlink", + "system-configuration", "tokio", - "tokio-util", - "webrtc", + "windows", ] [[package]] -name = "libp2p-websocket" -version = "0.41.0" +name = "impl-codec" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111273f7b3d3510524c752e8b7a5314b7f7a1fee7e68161c01a7d72cbb06db9f" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "either", - "futures", - "futures-rustls", - "libp2p-core", - "log", - "parking_lot 0.12.1", - "quicksink", - "rw-stream-sink", - "soketto", - "url", - "webpki-roots 0.22.6", + "parity-scale-codec", ] [[package]] -name = "libp2p-yamux" -version = "0.43.1" +name = "impl-rlp" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd21d950662700a385d4c6d68e2f5f54d778e97068cdd718522222ef513bda" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" dependencies = [ - "futures", - "libp2p-core", - "log", - "thiserror", - "yamux", + "rlp", ] [[package]] -name = "libredox" -version = "0.0.1" +name = "impl-serde" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" dependencies = [ - "bitflags 2.4.1", - "libc", - "redox_syscall 0.4.1", + "serde", ] [[package]] -name = "librocksdb-sys" -version = "0.11.0+8.1.1" +name = "impl-trait-for-tuples" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "bindgen", - "bzip2-sys", - "cc", - "glob", - "libc", - "libz-sys", - "tikv-jemalloc-sys", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "libsecp256k1" -version = "0.7.1" +name = "include_dir" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" dependencies = [ - "arrayref", - "base64 0.13.1", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.8.5", - "serde", - "sha2 0.9.9", - "typenum", + "include_dir_macros", ] [[package]] -name = "libsecp256k1-core" -version = "0.3.0" +name = "include_dir_macros" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle 2.4.1", + "proc-macro2", + "quote", ] [[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.3.0" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "libsecp256k1-core", + "autocfg", + "hashbrown 0.12.3", + "serde", ] [[package]] -name = "libsecp256k1-gen-genmult" -version = "0.3.0" +name = "indexmap" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ - "libsecp256k1-core", + "equivalent", + "hashbrown 0.14.2", ] [[package]] -name = "libz-sys" -version = "1.1.12" +name = "indexmap-nostd" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] +checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] -name = "link-cplusplus" -version = "1.0.9" +name = "indicatif" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" +checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" dependencies = [ - "cc", + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", ] [[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - -[[package]] -name = "linked_hash_set" -version = "0.1.4" +name = "inout" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "linked-hash-map", + "generic-array 0.14.7", ] [[package]] -name = "linux-raw-sys" -version = "0.1.4" +name = "instant" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] [[package]] -name = "linux-raw-sys" -version = "0.3.8" +name = "integer-encoding" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" [[package]] -name = "linux-raw-sys" -version = "0.4.11" +name = "integer-sqrt" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] [[package]] -name = "lioness" -version = "0.1.2" +name = "interceptor" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae926706ba42c425c9457121178330d75e273df2e82e28b758faf3de3a9acb9" +checksum = "1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90b" dependencies = [ - "arrayref", - "blake2 0.8.1", - "chacha", - "keystream", + "async-trait", + "bytes", + "log", + "rand 0.8.5", + "rtcp", + "rtp", + "thiserror", + "tokio", + "waitgroup", + "webrtc-srtp", + "webrtc-util", ] [[package]] -name = "lock_api" -version = "0.4.11" +name = "io-lifetimes" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "autocfg", - "scopeguard", + "hermit-abi 0.3.3", + "libc", + "windows-sys 0.48.0", ] [[package]] -name = "log" -version = "0.4.20" +name = "ip_network" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] -name = "lru" -version = "0.8.1" +name = "ipconfig" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "hashbrown 0.12.3", + "socket2 0.5.5", + "widestring", + "windows-sys 0.48.0", + "winreg", ] [[package]] -name = "lru" -version = "0.10.1" +name = "ipnet" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" -dependencies = [ - "hashbrown 0.13.2", -] +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] -name = "lru-cache" -version = "0.1.2" +name = "is-terminal" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "linked-hash-map", + "hermit-abi 0.3.3", + "rustix 0.38.25", + "windows-sys 0.48.0", ] [[package]] -name = "lz4" -version = "1.24.0" +name = "is_executable" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +checksum = "fa9acdc6d67b75e626ad644734e8bc6df893d9cd2a834129065d3dd6158ea9c8" dependencies = [ - "libc", - "lz4-sys", + "winapi", ] [[package]] -name = "lz4-sys" -version = "1.9.4" +name = "itertools" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ - "cc", - "libc", + "either", ] [[package]] -name = "mach" -version = "0.3.2" +name = "itertools" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" dependencies = [ - "libc", + "either", ] [[package]] -name = "match_cfg" -version = "0.1.0" +name = "itoa" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] -name = "matchers" -version = "0.0.1" +name = "jobserver" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ - "regex-automata 0.1.10", + "libc", ] [[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "md-5" -version = "0.10.6" +name = "js-sys" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ - "cfg-if", - "digest 0.10.7", + "wasm-bindgen", ] [[package]] -name = "memchr" -version = "2.6.4" +name = "jsonrpsee" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "367a292944c07385839818bb71c8d76611138e2dedb0677d035b8da21d29c78b" +dependencies = [ + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", + "jsonrpsee-ws-client", + "tracing", +] [[package]] -name = "memfd" -version = "0.6.4" +name = "jsonrpsee-client-transport" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" +checksum = "c8b3815d9f5d5de348e5f162b316dc9cdf4548305ebb15b4eb9328e66cf27d7a" dependencies = [ - "rustix 0.38.24", + "futures-util", + "http", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project", + "rustls-native-certs", + "soketto", + "thiserror", + "tokio", + "tokio-rustls", + "tokio-util", + "tracing", + "webpki-roots 0.25.2", ] [[package]] -name = "memmap2" -version = "0.5.10" +name = "jsonrpsee-core" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "2b5dde66c53d6dcdc8caea1874a45632ec0fcf5b437789f1e45766a1512ce803" dependencies = [ - "autocfg", + "anyhow", + "arrayvec 0.7.4", + "async-lock 2.8.0", + "async-trait", + "beef", + "futures-channel", + "futures-timer", + "futures-util", + "globset", + "hyper", + "jsonrpsee-types", + "parking_lot 0.12.1", + "rand 0.8.5", + "rustc-hash", + "serde", + "serde_json", + "soketto", + "thiserror", + "tokio", + "tracing", ] [[package]] -name = "memory-db" -version = "0.32.0" +name = "jsonrpsee-http-client" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808b50db46293432a45e63bc15ea51e0ab4c0a1647b8eb114e31a3e698dd6fbe" +checksum = "7e5f9fabdd5d79344728521bb65e3106b49ec405a78b66fbff073b72b389fa43" dependencies = [ - "hash-db", + "async-trait", + "hyper", + "hyper-rustls", + "jsonrpsee-core", + "jsonrpsee-types", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", ] [[package]] -name = "merlin" -version = "2.0.1" +name = "jsonrpsee-proc-macros" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" +checksum = "44e8ab85614a08792b9bff6c8feee23be78c98d0182d4c622c05256ab553892a" dependencies = [ - "byteorder", - "keccak", - "rand_core 0.5.1", - "zeroize", + "heck", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "merlin" -version = "3.0.0" +name = "jsonrpsee-server" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +checksum = "cf4d945a6008c9b03db3354fb3c83ee02d2faa9f2e755ec1dfb69c3551b8f4ba" dependencies = [ - "byteorder", - "keccak", - "rand_core 0.6.4", - "zeroize", + "futures-channel", + "futures-util", + "http", + "hyper", + "jsonrpsee-core", + "jsonrpsee-types", + "serde", + "serde_json", + "soketto", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tracing", ] [[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.7.1" +name = "jsonrpsee-types" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "245ba8e5aa633dd1c1e4fae72bce06e71f42d34c14a2767c6b4d173b57bee5e5" dependencies = [ - "adler", + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", ] [[package]] -name = "mio" -version = "0.8.9" +name = "jsonrpsee-ws-client" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "4e1b3975ed5d73f456478681a417128597acd6a2487855fdb7b4a3d4d195bf5e" dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "http", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", ] [[package]] -name = "mixnet" -version = "0.7.0" +name = "k256" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa3eb39495d8e2e2947a1d862852c90cc6a4a8845f8b41c8829cb9fcc047f4a" +checksum = "3f01b677d82ef7a676aa37e099defd83a28e15687112cafdd112d60236b6115b" dependencies = [ - "arrayref", - "arrayvec 0.7.4", - "bitflags 1.3.2", - "blake2 0.10.6", - "c2-chacha", - "curve25519-dalek 4.1.1", - "either", - "hashlink", - "lioness", - "log", - "parking_lot 0.12.1", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rand_distr", - "subtle 2.4.1", - "thiserror", - "zeroize", + "cfg-if", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "once_cell", + "sha2 0.10.8", ] [[package]] -name = "mockall" -version = "0.11.4" +name = "keccak" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ - "cfg-if", - "downcast", - "fragile", - "lazy_static", - "mockall_derive", - "predicates", - "predicates-tree", + "cpufeatures", ] [[package]] -name = "mockall_derive" -version = "0.11.4" +name = "keystream" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "c33070833c9ee02266356de0c43f723152bd38bd96ddf52c82b3af10c9138b28" [[package]] -name = "money" +name = "kitties" version = "0.1.0" dependencies = [ "parity-scale-codec", "scale-info", "serde", + "sp-core", "sp-runtime", "sp-std", "tuxedo-core", ] [[package]] -name = "multiaddr" -version = "0.17.1" +name = "kvdb" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd" +checksum = "e7d770dcb02bf6835887c3a979b5107a04ff4bbde97a5f0928d27404a155add9" dependencies = [ - "arrayref", - "byteorder", - "data-encoding", - "log", - "multibase", - "multihash", - "percent-encoding", - "serde", - "static_assertions", - "unsigned-varint", - "url", + "smallvec", ] [[package]] -name = "multibase" -version = "0.9.1" +name = "kvdb-memorydb" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +checksum = "bf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2" dependencies = [ - "base-x", - "data-encoding", - "data-encoding-macro", + "kvdb", + "parking_lot 0.12.1", ] [[package]] -name = "multihash" -version = "0.17.0" +name = "kvdb-rocksdb" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" +checksum = "b644c70b92285f66bfc2032922a79000ea30af7bc2ab31902992a5dcb9b434f6" dependencies = [ - "blake2b_simd", - "blake2s_simd", - "blake3", - "core2", - "digest 0.10.7", - "multihash-derive", - "sha2 0.10.8", - "sha3", - "unsigned-varint", + "kvdb", + "num_cpus", + "parking_lot 0.12.1", + "regex", + "rocksdb", + "smallvec", ] [[package]] -name = "multihash-derive" -version = "0.8.1" +name = "landlock" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" +checksum = "1530c5b973eeed4ac216af7e24baf5737645a6272e361f1fb95710678b67d9cc" dependencies = [ - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", + "enumflags2", + "libc", + "thiserror", ] [[package]] -name = "multimap" -version = "0.8.3" +name = "lazy_static" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] -name = "multistream-select" -version = "0.12.1" +name = "lazycell" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a" -dependencies = [ - "bytes", - "futures", - "log", - "pin-project", - "smallvec", - "unsigned-varint", -] +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] -name = "names" -version = "0.13.0" +name = "libc" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ - "rand 0.8.5", + "cfg-if", + "winapi", ] [[package]] -name = "netlink-packet-core" -version = "0.4.2" +name = "libm" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libp2p" +version = "0.51.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f210d259724eae82005b5c48078619b7745edb7b76de370b03f8ba59ea103097" dependencies = [ - "anyhow", - "byteorder", - "libc", - "netlink-packet-utils", + "bytes", + "futures", + "futures-timer", + "getrandom 0.2.11", + "instant", + "libp2p-allow-block-list", + "libp2p-connection-limits", + "libp2p-core", + "libp2p-dns", + "libp2p-identify", + "libp2p-identity", + "libp2p-kad", + "libp2p-mdns", + "libp2p-metrics", + "libp2p-noise", + "libp2p-ping", + "libp2p-quic", + "libp2p-request-response", + "libp2p-swarm", + "libp2p-tcp", + "libp2p-wasm-ext", + "libp2p-webrtc", + "libp2p-websocket", + "libp2p-yamux", + "multiaddr", + "pin-project", ] [[package]] -name = "netlink-packet-route" -version = "0.12.0" +name = "libp2p-allow-block-list" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" +checksum = "510daa05efbc25184458db837f6f9a5143888f1caa742426d92e1833ddd38a50" dependencies = [ - "anyhow", - "bitflags 1.3.2", - "byteorder", - "libc", - "netlink-packet-core", - "netlink-packet-utils", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "void", ] [[package]] -name = "netlink-packet-utils" -version = "0.5.2" +name = "libp2p-connection-limits" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" +checksum = "4caa33f1d26ed664c4fe2cca81a08c8e07d4c1c04f2f4ac7655c2dd85467fda0" dependencies = [ - "anyhow", - "byteorder", - "paste", - "thiserror", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "void", ] [[package]] -name = "netlink-proto" -version = "0.10.0" +name = "libp2p-core" +version = "0.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" +checksum = "3c1df63c0b582aa434fb09b2d86897fa2b419ffeccf934b36f87fcedc8e835c2" dependencies = [ - "bytes", + "either", + "fnv", "futures", + "futures-timer", + "instant", + "libp2p-identity", "log", - "netlink-packet-core", - "netlink-sys", + "multiaddr", + "multihash", + "multistream-select", + "once_cell", + "parking_lot 0.12.1", + "pin-project", + "quick-protobuf", + "rand 0.8.5", + "rw-stream-sink", + "smallvec", "thiserror", - "tokio", + "unsigned-varint", + "void", ] [[package]] -name = "netlink-sys" -version = "0.8.5" +name = "libp2p-dns" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411" +checksum = "146ff7034daae62077c415c2376b8057368042df6ab95f5432ad5e88568b1554" dependencies = [ - "bytes", "futures", - "libc", + "libp2p-core", "log", - "tokio", + "parking_lot 0.12.1", + "smallvec", + "trust-dns-resolver", ] [[package]] -name = "nix" -version = "0.24.3" +name = "libp2p-identify" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +checksum = "5455f472243e63b9c497ff320ded0314254a9eb751799a39c283c6f20b793f3c" dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", + "asynchronous-codec", + "either", + "futures", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "log", + "lru 0.10.1", + "quick-protobuf", + "quick-protobuf-codec", + "smallvec", + "thiserror", + "void", ] [[package]] -name = "node-template" -version = "4.0.0-dev" +name = "libp2p-identity" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" dependencies = [ - "clap", - "jsonrpsee", - "sc-basic-authorship", - "sc-cli", - "sc-client-api", - "sc-consensus", - "sc-consensus-aura", - "sc-consensus-grandpa", - "sc-executor", - "sc-keystore", - "sc-network", - "sc-rpc", - "sc-rpc-api", - "sc-service", - "sc-telemetry", - "sc-transaction-pool", - "sc-transaction-pool-api", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-aura", - "sp-consensus-grandpa", - "sp-core", - "sp-inherents", - "sp-keyring", - "sp-runtime", - "sp-timestamp", - "substrate-build-script-utils", - "tuxedo-core", - "tuxedo-template-runtime", + "bs58 0.4.0", + "ed25519-dalek", + "log", + "multiaddr", + "multihash", + "quick-protobuf", + "rand 0.8.5", + "sha2 0.10.8", + "thiserror", + "zeroize", ] [[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "nom" -version = "7.1.3" +name = "libp2p-kad" +version = "0.43.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "39d5ef876a2b2323d63c258e63c2f8e36f205fe5a11f0b3095d59635650790ff" dependencies = [ - "memchr", - "minimal-lexical", + "arrayvec 0.7.4", + "asynchronous-codec", + "bytes", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "log", + "quick-protobuf", + "rand 0.8.5", + "sha2 0.10.8", + "smallvec", + "thiserror", + "uint", + "unsigned-varint", + "void", ] [[package]] -name = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[package]] -name = "num-bigint" -version = "0.4.4" +name = "libp2p-mdns" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "19983e1f949f979a928f2c603de1cf180cc0dc23e4ac93a62651ccb18341460b" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "data-encoding", + "futures", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "log", + "rand 0.8.5", + "smallvec", + "socket2 0.4.10", + "tokio", + "trust-dns-proto", + "void", ] [[package]] -name = "num-format" -version = "0.4.4" +name = "libp2p-metrics" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +checksum = "a42ec91e227d7d0dafa4ce88b333cdf5f277253873ab087555c92798db2ddd46" dependencies = [ - "arrayvec 0.7.4", - "itoa", + "libp2p-core", + "libp2p-identify", + "libp2p-kad", + "libp2p-ping", + "libp2p-swarm", + "prometheus-client", ] [[package]] -name = "num-integer" -version = "0.1.45" +name = "libp2p-noise" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "9c3673da89d29936bc6435bafc638e2f184180d554ce844db65915113f86ec5e" dependencies = [ - "autocfg", - "num-traits", + "bytes", + "curve25519-dalek 3.2.0", + "futures", + "libp2p-core", + "libp2p-identity", + "log", + "once_cell", + "quick-protobuf", + "rand 0.8.5", + "sha2 0.10.8", + "snow", + "static_assertions", + "thiserror", + "x25519-dalek 1.1.1", + "zeroize", ] [[package]] -name = "num-traits" -version = "0.2.17" +name = "libp2p-ping" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "3e57759c19c28a73ef1eb3585ca410cefb72c1a709fcf6de1612a378e4219202" dependencies = [ - "autocfg", - "libm", + "either", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "rand 0.8.5", + "void", ] [[package]] -name = "num_cpus" -version = "1.16.0" +name = "libp2p-quic" +version = "0.7.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "c6b26abd81cd2398382a1edfe739b539775be8a90fa6914f39b2ab49571ec735" dependencies = [ - "hermit-abi 0.3.3", - "libc", + "bytes", + "futures", + "futures-timer", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-tls", + "log", + "parking_lot 0.12.1", + "quinn-proto", + "rand 0.8.5", + "rustls 0.20.9", + "thiserror", + "tokio", ] [[package]] -name = "object" -version = "0.30.4" +name = "libp2p-request-response" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +checksum = "7ffdb374267d42dc5ed5bc53f6e601d4a64ac5964779c6e40bb9e4f14c1e30d5" dependencies = [ - "crc32fast", - "hashbrown 0.13.2", - "indexmap 1.9.3", - "memchr", + "async-trait", + "futures", + "instant", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "smallvec", ] [[package]] -name = "object" -version = "0.32.1" +name = "libp2p-swarm" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "903b3d592d7694e56204d211f29d31bc004be99386644ba8731fc3e3ef27b296" dependencies = [ - "memchr", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm-derive", + "log", + "rand 0.8.5", + "smallvec", + "tokio", + "void", ] [[package]] -name = "oid-registry" -version = "0.4.0" +name = "libp2p-swarm-derive" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a" +checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f" dependencies = [ - "asn1-rs 0.3.1", + "heck", + "quote", + "syn 1.0.109", ] [[package]] -name = "oid-registry" -version = "0.6.1" +name = "libp2p-tcp" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +checksum = "33d33698596d7722d85d3ab0c86c2c322254fce1241e91208e3679b4eb3026cf" dependencies = [ - "asn1-rs 0.5.2", + "futures", + "futures-timer", + "if-watch", + "libc", + "libp2p-core", + "log", + "socket2 0.4.10", + "tokio", ] [[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "p256" -version = "0.11.1" +name = "libp2p-tls" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +checksum = "ff08d13d0dc66e5e9ba6279c1de417b84fa0d0adc3b03e5732928c180ec02781" dependencies = [ - "ecdsa", - "elliptic-curve", - "sha2 0.10.8", + "futures", + "futures-rustls", + "libp2p-core", + "libp2p-identity", + "rcgen 0.10.0", + "ring 0.16.20", + "rustls 0.20.9", + "thiserror", + "webpki 0.22.4", + "x509-parser 0.14.0", + "yasna", ] [[package]] -name = "p384" -version = "0.11.2" +name = "libp2p-wasm-ext" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" +checksum = "77dff9d32353a5887adb86c8afc1de1a94d9e8c3bc6df8b2201d7cdf5c848f43" dependencies = [ - "ecdsa", - "elliptic-curve", - "sha2 0.10.8", + "futures", + "js-sys", + "libp2p-core", + "parity-send-wrapper", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] -name = "parity-db" -version = "0.4.12" +name = "libp2p-webrtc" +version = "0.4.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e9ab494af9e6e813c72170f0d3c1de1500990d62c97cc05cc7576f91aa402f" +checksum = "dba48592edbc2f60b4bc7c10d65445b0c3964c07df26fdf493b6880d33be36f8" dependencies = [ - "blake2 0.10.6", - "crc32fast", - "fs2", + "async-trait", + "asynchronous-codec", + "bytes", + "futures", + "futures-timer", "hex", - "libc", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-noise", "log", - "lz4", - "memmap2", - "parking_lot 0.12.1", + "multihash", + "quick-protobuf", + "quick-protobuf-codec", "rand 0.8.5", - "siphasher", - "snap", + "rcgen 0.9.3", + "serde", + "stun", + "thiserror", + "tinytemplate", + "tokio", + "tokio-util", + "webrtc", ] [[package]] -name = "parity-scale-codec" -version = "3.6.5" +name = "libp2p-websocket" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +checksum = "111273f7b3d3510524c752e8b7a5314b7f7a1fee7e68161c01a7d72cbb06db9f" dependencies = [ - "arrayvec 0.7.4", - "bitvec", - "byte-slice-cast", - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", + "either", + "futures", + "futures-rustls", + "libp2p-core", + "log", + "parking_lot 0.12.1", + "quicksink", + "rw-stream-sink", + "soketto", + "url", + "webpki-roots 0.22.6", ] [[package]] -name = "parity-scale-codec-derive" -version = "3.6.5" +name = "libp2p-yamux" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +checksum = "4dcd21d950662700a385d4c6d68e2f5f54d778e97068cdd718522222ef513bda" dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", + "futures", + "libp2p-core", + "log", + "thiserror", + "yamux", ] [[package]] -name = "parity-send-wrapper" -version = "0.1.0" +name = "libredox" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] [[package]] -name = "parity-util-mem" -version = "0.12.0" +name = "librocksdb-sys" +version = "0.11.0+8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" +checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" dependencies = [ - "cfg-if", - "ethereum-types", - "hashbrown 0.12.3", - "impl-trait-for-tuples", - "lru 0.8.1", - "parity-util-mem-derive", - "parking_lot 0.12.1", - "primitive-types", - "smallvec", - "winapi", + "bindgen", + "bzip2-sys", + "cc", + "glob", + "libc", + "libz-sys", + "tikv-jemalloc-sys", ] [[package]] -name = "parity-util-mem-derive" -version = "0.1.0" +name = "libsecp256k1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" dependencies = [ - "proc-macro2", - "syn 1.0.109", - "synstructure", + "arrayref", + "base64 0.13.1", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2 0.9.9", + "typenum", ] [[package]] -name = "parity-wasm" -version = "0.45.0" +name = "libsecp256k1-core" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle 2.4.1", +] [[package]] -name = "parking" -version = "2.2.0" +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] [[package]] -name = "parking_lot" -version = "0.11.2" +name = "libsecp256k1-gen-genmult" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", + "libsecp256k1-core", ] [[package]] -name = "parking_lot" -version = "0.12.1" +name = "libz-sys" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ - "lock_api", - "parking_lot_core 0.9.9", + "cc", + "pkg-config", + "vcpkg", ] [[package]] -name = "parking_lot_core" -version = "0.8.6" +name = "link-cplusplus" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "cc", ] [[package]] -name = "parking_lot_core" -version = "0.9.9" +name = "linked-hash-map" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linked_hash_set" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "smallvec", - "windows-targets 0.48.5", + "linked-hash-map", ] [[package]] -name = "partial_sort" -version = "0.2.0" +name = "linregress" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7924d1d0ad836f665c9065e26d016c673ece3993f30d340068b16f282afc1156" +checksum = "4de04dcecc58d366391f9920245b85ffa684558a5ef6e7736e754347c3aea9c2" +dependencies = [ + "nalgebra", +] [[package]] -name = "paste" -version = "1.0.14" +name = "linux-raw-sys" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" [[package]] -name = "pbkdf2" -version = "0.8.0" +name = "linux-raw-sys" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" + +[[package]] +name = "lioness" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae926706ba42c425c9457121178330d75e273df2e82e28b758faf3de3a9acb9" dependencies = [ - "crypto-mac 0.11.1", + "arrayref", + "blake2 0.8.1", + "chacha", + "keystream", ] [[package]] -name = "pbkdf2" -version = "0.11.0" +name = "lock_api" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ - "digest 0.10.7", + "autocfg", + "scopeguard", ] [[package]] -name = "peeking_take_while" -version = "0.1.2" +name = "log" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] -name = "pem" -version = "1.1.1" +name = "lru" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" dependencies = [ - "base64 0.13.1", + "hashbrown 0.12.3", ] [[package]] -name = "pem-rfc7468" -version = "0.6.0" +name = "lru" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ - "base64ct", + "hashbrown 0.13.2", ] [[package]] -name = "percent-encoding" -version = "2.3.0" +name = "lru" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" [[package]] -name = "petgraph" -version = "0.6.4" +name = "lru-cache" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" dependencies = [ - "fixedbitset", - "indexmap 2.1.0", + "linked-hash-map", ] [[package]] -name = "pin-project" -version = "1.1.3" +name = "lz4" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" dependencies = [ - "pin-project-internal", + "libc", + "lz4-sys", ] [[package]] -name = "pin-project-internal" -version = "1.1.3" +name = "lz4-sys" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" dependencies = [ + "cc", + "libc", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e03844fc635e92f3a0067e25fa4bf3e3dbf3f2927bf3aa01bb7bc8f1c428949d" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "macro_magic_core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468155613a44cfd825f1fb0ffa532b018253920d404e6fca1e8d43155198a46d" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", "proc-macro2", "quote", "syn 2.0.39", ] [[package]] -name = "pin-project-lite" -version = "0.1.12" +name = "macro_magic_core_macros" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" +checksum = "9ea73aa640dc01d62a590d48c0c3521ed739d53b27f919b25c3551e233481654" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] [[package]] -name = "pin-project-lite" -version = "0.2.13" +name = "macro_magic_macros" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "ef9d79ae96aaba821963320eb2b6e34d17df1e5a83d8a1985c29cc5be59577b3" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.39", +] [[package]] -name = "pin-utils" +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "match_cfg" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memfd" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" +dependencies = [ + "rustix 0.38.25", +] + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memory-db" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808b50db46293432a45e63bc15ea51e0ab4c0a1647b8eb114e31a3e698dd6fbe" +dependencies = [ + "hash-db", +] + +[[package]] +name = "merlin" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.5.1", + "zeroize", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "mick-jaeger" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532" +dependencies = [ + "futures", + "rand 0.8.5", + "thrift", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "mixnet" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daa3eb39495d8e2e2947a1d862852c90cc6a4a8845f8b41c8829cb9fcc047f4a" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "bitflags 1.3.2", + "blake2 0.10.6", + "c2-chacha", + "curve25519-dalek 4.1.1", + "either", + "hashlink", + "lioness", + "log", + "parking_lot 0.12.1", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_distr", + "subtle 2.4.1", + "thiserror", + "zeroize", +] + +[[package]] +name = "mmr-gadget" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "log", + "parity-scale-codec", + "sc-client-api", + "sc-offchain", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-consensus-beefy", + "sp-core", + "sp-mmr-primitives", + "sp-runtime", +] + +[[package]] +name = "mmr-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "anyhow", + "jsonrpsee", + "parity-scale-codec", + "serde", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-mmr-primitives", + "sp-runtime", +] + +[[package]] +name = "mockall" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "money" +version = "0.1.0" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime", + "sp-std", + "tuxedo-core", +] + +[[package]] +name = "multiaddr" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd" +dependencies = [ + "arrayref", + "byteorder", + "data-encoding", + "log", + "multibase", + "multihash", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint", + "url", +] + +[[package]] +name = "multibase" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +dependencies = [ + "base-x", + "data-encoding", + "data-encoding-macro", +] + +[[package]] +name = "multihash" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" +dependencies = [ + "blake2b_simd", + "blake2s_simd", + "blake3", + "core2", + "digest 0.10.7", + "multihash-derive", + "sha2 0.10.8", + "sha3", + "unsigned-varint", +] + +[[package]] +name = "multihash-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "multistream-select" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a" +dependencies = [ + "bytes", + "futures", + "log", + "pin-project", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "nalgebra" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "307ed9b18cc2423f29e83f84fd23a8e73628727990181f18641a8b5dc2ab1caa" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "names" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" + +[[package]] +name = "netlink-packet-core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +dependencies = [ + "anyhow", + "byteorder", + "libc", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror", +] + +[[package]] +name = "netlink-proto" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror", + "tokio", +] + +[[package]] +name = "netlink-sys" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411" +dependencies = [ + "bytes", + "futures", + "libc", + "log", + "tokio", +] + +[[package]] +name = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "no-std-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65" + +[[package]] +name = "node-template" +version = "4.0.0-dev" +dependencies = [ + "clap", + "jsonrpsee", + "sc-basic-authorship", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-consensus-aura", + "sc-consensus-grandpa", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-rpc", + "sc-rpc-api", + "sc-service", + "sc-telemetry", + "sc-transaction-pool", + "sc-transaction-pool-api", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-consensus-grandpa", + "sp-core", + "sp-inherents", + "sp-keyring", + "sp-runtime", + "sp-timestamp", + "substrate-build-script-utils", + "tuxedo-core", + "tuxedo-template-runtime", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec 0.7.4", + "itoa", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.3", + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a" +dependencies = [ + "asn1-rs 0.3.1", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs 0.5.2", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "orchestra" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46d78e1deb2a8d54fc1f063a544130db4da31dfe4d5d3b493186424910222a76" +dependencies = [ + "async-trait", + "dyn-clonable", + "futures", + "futures-timer", + "orchestra-proc-macro", + "pin-project", + "prioritized-metered-channel", + "thiserror", + "tracing", +] + +[[package]] +name = "orchestra-proc-macro" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d035b1f968d91a826f2e34a9d6d02cb2af5aa7ca39ebd27922d850ab4b2dd2c6" +dependencies = [ + "expander 2.0.0", + "indexmap 2.1.0", + "itertools 0.11.0", + "petgraph", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ordered-float" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7" +dependencies = [ + "num-traits", +] + +[[package]] +name = "p256" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", + "sha2 0.10.8", +] + +[[package]] +name = "p384" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" +dependencies = [ + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", + "sha2 0.10.8", +] + +[[package]] +name = "pallet-asset-rate" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-asset-tx-payment" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-assets" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-authority-discovery" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "scale-info", + "sp-application-crypto", + "sp-authority-discovery", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-authorship" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-babe" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto", + "sp-consensus-babe", + "sp-core", + "sp-io", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-balances" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-beefy" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-beefy", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-beefy-mmr" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "array-bytes 6.2.0", + "binary-merkle-tree", + "frame-support", + "frame-system", + "log", + "pallet-beefy", + "pallet-mmr", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-consensus-beefy", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", +] + +[[package]] +name = "pallet-bounties" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-child-bounties" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bounties", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-collator-selection" +version = "3.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "rand 0.8.5", + "scale-info", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-collective" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-conviction-voting" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "assert_matches", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-democracy" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-election-provider-multi-phase" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-election-provider-support-benchmarking", + "parity-scale-codec", + "rand 0.8.5", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-npos-elections", + "sp-runtime", + "sp-std", + "strum 0.24.1", +] + +[[package]] +name = "pallet-election-provider-support-benchmarking" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-system", + "parity-scale-codec", + "sp-npos-elections", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-elections-phragmen" +version = "5.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-npos-elections", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-fast-unstake" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-glutton" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "blake2 0.10.6", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-grandpa" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "sp-application-crypto", + "sp-consensus-grandpa", + "sp-core", + "sp-io", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-identity" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "enumflags2", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-im-online" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "parity-scale-codec", + "scale-info", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-indices" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-membership" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-message-queue" +version = "7.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", +] + +[[package]] +name = "pallet-mmr" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-mmr-primitives", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-multisig" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-nis" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-offences" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-preimage" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-proxy" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-ranked-collective" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-recovery" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-referenda" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-scheduler" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", +] + +[[package]] +name = "pallet-session" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-trie", +] + +[[package]] +name = "pallet-society" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "rand_chacha 0.2.2", + "scale-info", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-staking" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-application-crypto", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-staking-reward-curve" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "pallet-staking-reward-fn" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "log", + "sp-arithmetic", +] + +[[package]] +name = "pallet-state-trie-migration" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-sudo" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-timestamp" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", + "sp-storage", + "sp-timestamp", +] + +[[package]] +name = "pallet-tips" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-transaction-payment" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-transaction-payment-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "jsonrpsee", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-weights", +] + +[[package]] +name = "pallet-transaction-payment-rpc-runtime-api" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "pallet-transaction-payment", + "parity-scale-codec", + "sp-api", + "sp-runtime", + "sp-weights", +] + +[[package]] +name = "pallet-treasury" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-utility" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-vesting" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-whitelist" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-xcm" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bounded-collections", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-executor", +] + +[[package]] +name = "pallet-xcm-benchmarks" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "parachain-info" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "parachain-piece" +version = "0.1.0" +dependencies = [ + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-relay-sproof-builder", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", + "tuxedo-parachain-core", +] + +[[package]] +name = "parachain-template-node" +version = "0.1.0" +dependencies = [ + "async-io 2.2.0", + "clap", + "color-print", + "cumulus-client-cli", + "cumulus-client-collator", + "cumulus-client-consensus-aura", + "cumulus-client-consensus-common", + "cumulus-client-consensus-proposer", + "cumulus-client-service", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-relay-chain-interface", + "futures", + "jsonrpsee", + "log", + "parity-scale-codec", + "polkadot-cli", + "polkadot-primitives", + "sc-basic-authorship", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-consensus-manual-seal", + "sc-executor", + "sc-network", + "sc-network-sync", + "sc-rpc", + "sc-service", + "sc-sysinfo", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "sc-transaction-pool-api", + "serde", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus-aura", + "sp-core", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-timestamp", + "substrate-build-script-utils", + "substrate-prometheus-endpoint", + "tuxedo-core", + "tuxedo-template-runtime", +] + +[[package]] +name = "parachains-common" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-support", + "frame-system", + "log", + "num-traits", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "parachain-info", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-primitives", + "rococo-runtime-constants", + "scale-info", + "smallvec", + "sp-consensus-aura", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "substrate-wasm-builder", + "westend-runtime-constants", +] + +[[package]] +name = "parity-db" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59e9ab494af9e6e813c72170f0d3c1de1500990d62c97cc05cc7576f91aa402f" +dependencies = [ + "blake2 0.10.6", + "crc32fast", + "fs2", + "hex", + "libc", + "log", + "lz4", + "memmap2", + "parking_lot 0.12.1", + "rand 0.8.5", + "siphasher", + "snap", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +dependencies = [ + "arrayvec 0.7.4", + "bitvec", + "byte-slice-cast", + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parity-send-wrapper" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" + +[[package]] +name = "parity-util-mem" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" +dependencies = [ + "cfg-if", + "ethereum-types", + "hashbrown 0.12.3", + "impl-trait-for-tuples", + "lru 0.8.1", + "parity-util-mem-derive", + "parking_lot 0.12.1", + "primitive-types", + "smallvec", + "winapi", +] + +[[package]] +name = "parity-util-mem-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" +dependencies = [ + "proc-macro2", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "parity-wasm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "partial_sort" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7924d1d0ad836f665c9065e26d016c673ece3993f30d340068b16f282afc1156" + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pbkdf2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac 0.11.1", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "pem-rfc7468" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "pest_meta" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.1.0", +] + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.8", + "spki 0.7.2", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "platforms" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0" + +[[package]] +name = "plotters" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" + +[[package]] +name = "plotters-svg" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "poe" +version = "0.1.0" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-runtime", + "sp-std", + "tuxedo-core", +] + +[[package]] +name = "polkadot-approval-distribution" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "futures-timer", + "polkadot-node-jaeger", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand 0.8.5", + "tracing-gum", +] + +[[package]] +name = "polkadot-availability-bitfield-distribution" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "always-assert", + "futures", + "futures-timer", + "polkadot-node-network-protocol", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand 0.8.5", + "tracing-gum", +] + +[[package]] +name = "polkadot-availability-distribution" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "derive_more", + "fatality", + "futures", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand 0.8.5", + "schnellru", + "sp-core", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-availability-recovery" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "fatality", + "futures", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand 0.8.5", + "sc-network", + "schnellru", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-cli" +version = "1.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "clap", + "frame-benchmarking-cli", + "futures", + "log", + "polkadot-node-metrics", + "polkadot-node-primitives", + "polkadot-service", + "sc-cli", + "sc-executor", + "sc-service", + "sc-storage-monitor", + "sc-sysinfo", + "sc-tracing", + "sp-core", + "sp-io", + "sp-keyring", + "sp-maybe-compressed-blob", + "substrate-build-script-utils", + "thiserror", + "try-runtime-cli", +] + +[[package]] +name = "polkadot-collator-protocol" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "fatality", + "futures", + "futures-timer", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-core", + "sp-keystore", + "sp-runtime", + "thiserror", + "tokio-util", + "tracing-gum", +] + +[[package]] +name = "polkadot-core-primitives" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "polkadot-dispute-distribution" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "derive_more", + "fatality", + "futures", + "futures-timer", + "indexmap 1.9.3", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sc-network", + "schnellru", + "sp-application-crypto", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-erasure-coding" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-primitives", + "reed-solomon-novelpoly", + "sp-core", + "sp-trie", + "thiserror", +] + +[[package]] +name = "polkadot-gossip-support" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "futures-timer", + "polkadot-node-network-protocol", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand 0.8.5", + "rand_chacha 0.3.1", + "sc-network", + "sc-network-common", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "tracing-gum", +] + +[[package]] +name = "polkadot-network-bridge" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "always-assert", + "async-trait", + "bytes", + "fatality", + "futures", + "parity-scale-codec", + "parking_lot 0.12.1", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "sc-network", + "sp-consensus", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-collation-generation" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-core", + "sp-maybe-compressed-blob", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-approval-voting" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "derive_more", + "futures", + "futures-timer", + "kvdb", + "merlin 2.0.1", + "parity-scale-codec", + "polkadot-node-jaeger", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "sc-keystore", + "schnellru", + "schnorrkel 0.9.1", + "sp-application-crypto", + "sp-consensus", + "sp-consensus-slots", + "sp-runtime", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-av-store" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "futures", + "futures-timer", + "kvdb", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-jaeger", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "sp-consensus", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-backing" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "fatality", + "futures", + "polkadot-erasure-coding", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "polkadot-statement-table", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-bitfield-signing" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-keystore", + "thiserror", + "tracing-gum", + "wasm-timer", +] + +[[package]] +name = "polkadot-node-core-candidate-validation" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "parity-scale-codec", + "polkadot-node-core-pvf", + "polkadot-node-metrics", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-parachain-primitives", + "polkadot-primitives", + "sp-maybe-compressed-blob", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-chain-api" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "polkadot-node-metrics", + "polkadot-node-subsystem", + "polkadot-primitives", + "sc-client-api", + "sc-consensus-babe", + "sp-blockchain", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-chain-selection" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "futures-timer", + "kvdb", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-dispute-coordinator" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "fatality", + "futures", + "kvdb", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sc-keystore", + "schnellru", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-parachains-inherent" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "sp-blockchain", + "sp-inherents", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-prospective-parachains" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "fatality", + "futures", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-provisioner" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "fatality", + "futures", + "futures-timer", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "always-assert", + "cfg-if", + "futures", + "futures-timer", + "is_executable", + "libc", + "parity-scale-codec", + "pin-project", + "polkadot-core-primitives", + "polkadot-node-core-pvf-common", + "polkadot-node-metrics", + "polkadot-node-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "rand 0.8.5", + "slotmap", + "sp-core", + "sp-maybe-compressed-blob", + "sp-wasm-interface", + "tempfile", + "tokio", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf-checker" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf-common" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "cfg-if", + "cpu-time", + "futures", + "landlock", + "libc", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives", + "sc-executor", + "sc-executor-common", + "sc-executor-wasmtime", + "sp-core", + "sp-externalities", + "sp-io", + "sp-tracing", + "tokio", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-runtime-api" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "polkadot-node-metrics", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "polkadot-primitives", + "schnellru", + "sp-consensus-babe", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-jaeger" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "lazy_static", + "log", + "mick-jaeger", + "parity-scale-codec", + "parking_lot 0.12.1", + "polkadot-node-primitives", + "polkadot-primitives", + "sc-network", + "sp-core", + "thiserror", + "tokio", +] + +[[package]] +name = "polkadot-node-metrics" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bs58 0.5.0", + "futures", + "futures-timer", + "log", + "parity-scale-codec", + "polkadot-primitives", + "prioritized-metered-channel", + "sc-cli", + "sc-service", + "sc-tracing", + "substrate-prometheus-endpoint", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-network-protocol" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-channel 1.9.0", + "async-trait", + "bitvec", + "derive_more", + "fatality", + "futures", + "hex", + "parity-scale-codec", + "polkadot-node-jaeger", + "polkadot-node-primitives", + "polkadot-primitives", + "rand 0.8.5", + "sc-authority-discovery", + "sc-network", + "strum 0.24.1", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-primitives" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bounded-vec", + "futures", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives", + "schnorrkel 0.9.1", + "serde", + "sp-application-crypto", + "sp-consensus-babe", + "sp-core", + "sp-keystore", + "sp-maybe-compressed-blob", + "sp-runtime", + "thiserror", + "zstd 0.12.4", +] + +[[package]] +name = "polkadot-node-subsystem" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "polkadot-node-jaeger", + "polkadot-node-subsystem-types", + "polkadot-overseer", +] + +[[package]] +name = "polkadot-node-subsystem-types" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "derive_more", + "futures", + "orchestra", + "polkadot-node-jaeger", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-primitives", + "polkadot-statement-table", + "sc-client-api", + "sc-network", + "sc-transaction-pool-api", + "smallvec", + "sp-api", + "sp-authority-discovery", + "sp-consensus-babe", + "substrate-prometheus-endpoint", + "thiserror", +] + +[[package]] +name = "polkadot-node-subsystem-util" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "derive_more", + "fatality", + "futures", + "futures-channel", + "itertools 0.10.5", + "kvdb", + "parity-db", + "parity-scale-codec", + "parking_lot 0.11.2", + "pin-project", + "polkadot-node-jaeger", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "polkadot-overseer", + "polkadot-primitives", + "prioritized-metered-channel", + "rand 0.8.5", + "sc-client-api", + "schnellru", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-overseer" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "orchestra", + "parking_lot 0.12.1", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem-types", + "polkadot-primitives", + "sc-client-api", + "sp-api", + "sp-core", + "tikv-jemalloc-ctl", + "tracing-gum", +] + +[[package]] +name = "polkadot-parachain-primitives" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bounded-collections", + "derive_more", + "parity-scale-codec", + "polkadot-core-primitives", + "scale-info", + "serde", + "sp-core", + "sp-runtime", + "sp-std", + "sp-weights", +] + +[[package]] +name = "polkadot-primitives" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "hex-literal", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-authority-discovery", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "polkadot-rpc" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "jsonrpsee", + "mmr-rpc", + "pallet-transaction-payment-rpc", + "polkadot-primitives", + "sc-chain-spec", + "sc-client-api", + "sc-consensus-babe", + "sc-consensus-babe-rpc", + "sc-consensus-beefy", + "sc-consensus-beefy-rpc", + "sc-consensus-epochs", + "sc-consensus-grandpa", + "sc-consensus-grandpa-rpc", + "sc-rpc", + "sc-sync-state-rpc", + "sc-transaction-pool-api", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-keystore", + "sp-runtime", + "substrate-frame-rpc-system", + "substrate-state-trie-migration-rpc", +] + +[[package]] +name = "polkadot-runtime-common" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitvec", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "libsecp256k1", + "log", + "pallet-asset-rate", + "pallet-authorship", + "pallet-balances", + "pallet-election-provider-multi-phase", + "pallet-fast-unstake", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-fn", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-treasury", + "pallet-vesting", + "pallet-xcm-benchmarks", + "parity-scale-codec", + "polkadot-primitives", + "polkadot-runtime-parachains", + "rustc-hex", + "scale-info", + "serde", + "serde_derive", + "slot-range-helper", + "sp-api", + "sp-core", + "sp-inherents", + "sp-io", + "sp-npos-elections", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "static_assertions", +] + +[[package]] +name = "polkadot-runtime-metrics" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bs58 0.5.0", + "frame-benchmarking", + "parity-scale-codec", + "polkadot-primitives", + "sp-std", + "sp-tracing", +] + +[[package]] +name = "polkadot-runtime-parachains" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bitflags 1.3.2", + "bitvec", + "derive_more", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-message-queue", + "pallet-session", + "pallet-staking", + "pallet-timestamp", + "pallet-vesting", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-metrics", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rustc-hex", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "staging-xcm", + "staging-xcm-executor", +] [[package]] -name = "pkcs8" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +name = "polkadot-service" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "der 0.6.1", - "spki 0.6.0", + "async-trait", + "frame-benchmarking", + "frame-benchmarking-cli", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "futures", + "hex-literal", + "is_executable", + "kvdb", + "kvdb-rocksdb", + "log", + "mmr-gadget", + "pallet-babe", + "pallet-im-online", + "pallet-staking", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "parity-db", + "parity-scale-codec", + "polkadot-approval-distribution", + "polkadot-availability-bitfield-distribution", + "polkadot-availability-distribution", + "polkadot-availability-recovery", + "polkadot-collator-protocol", + "polkadot-core-primitives", + "polkadot-dispute-distribution", + "polkadot-gossip-support", + "polkadot-network-bridge", + "polkadot-node-collation-generation", + "polkadot-node-core-approval-voting", + "polkadot-node-core-av-store", + "polkadot-node-core-backing", + "polkadot-node-core-bitfield-signing", + "polkadot-node-core-candidate-validation", + "polkadot-node-core-chain-api", + "polkadot-node-core-chain-selection", + "polkadot-node-core-dispute-coordinator", + "polkadot-node-core-parachains-inherent", + "polkadot-node-core-prospective-parachains", + "polkadot-node-core-provisioner", + "polkadot-node-core-pvf", + "polkadot-node-core-pvf-checker", + "polkadot-node-core-runtime-api", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-rpc", + "polkadot-runtime-parachains", + "polkadot-statement-distribution", + "rococo-runtime", + "rococo-runtime-constants", + "sc-authority-discovery", + "sc-basic-authorship", + "sc-block-builder", + "sc-chain-spec", + "sc-client-api", + "sc-client-db", + "sc-consensus", + "sc-consensus-babe", + "sc-consensus-beefy", + "sc-consensus-grandpa", + "sc-consensus-slots", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-network-common", + "sc-network-sync", + "sc-offchain", + "sc-service", + "sc-sync-state-rpc", + "sc-sysinfo", + "sc-telemetry", + "sc-transaction-pool", + "sc-transaction-pool-api", + "schnellru", + "serde", + "serde_json", + "sp-api", + "sp-authority-discovery", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-consensus-grandpa", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-keystore", + "sp-mmr-primitives", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-state-machine", + "sp-storage", + "sp-timestamp", + "sp-transaction-pool", + "sp-version", + "sp-weights", + "substrate-prometheus-endpoint", + "thiserror", + "tracing-gum", ] [[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +name = "polkadot-statement-distribution" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "der 0.7.8", - "spki 0.7.2", + "arrayvec 0.7.4", + "bitvec", + "fatality", + "futures", + "futures-timer", + "indexmap 1.9.3", + "parity-scale-codec", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-keystore", + "sp-staking", + "thiserror", + "tracing-gum", ] [[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "platforms" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0" +name = "polkadot-statement-table" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "parity-scale-codec", + "polkadot-primitives", + "sp-core", +] [[package]] -name = "poe" -version = "0.1.0" +name = "polkadot-test-runtime" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ + "bitvec", + "frame-election-provider-support", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "log", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-grandpa", + "pallet-indices", + "pallet-offences", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-curve", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-vesting", + "pallet-xcm", "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "rustc-hex", "scale-info", "serde", + "serde_derive", + "smallvec", + "sp-api", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", + "sp-consensus-beefy", "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-mmr-primitives", + "sp-offchain", "sp-runtime", + "sp-session", + "sp-staking", "sp-std", - "tuxedo-core", + "sp-transaction-pool", + "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", + "test-runtime-constants", +] + +[[package]] +name = "polkadot-test-service" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-system", + "futures", + "hex", + "pallet-balances", + "pallet-staking", + "pallet-transaction-payment", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-rpc", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "polkadot-service", + "polkadot-test-runtime", + "rand 0.8.5", + "sc-authority-discovery", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-consensus-babe", + "sc-consensus-grandpa", + "sc-network", + "sc-service", + "sc-tracing", + "sc-transaction-pool", + "serde_json", + "sp-arithmetic", + "sp-authority-discovery", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-consensus-grandpa", + "sp-core", + "sp-inherents", + "sp-keyring", + "sp-runtime", + "sp-state-machine", + "substrate-test-client", + "tempfile", + "test-runtime-constants", + "tokio", + "tracing-gum", ] [[package]] @@ -4838,6 +9163,20 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "polling" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e53b6af1f60f36f8c2ac2aad5459d75a5a9b4be1e8cdd40264f315d78193e531" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite 0.2.13", + "rustix 0.38.25", + "tracing", + "windows-sys 0.48.0", +] + [[package]] name = "poly1305" version = "0.8.0" @@ -4873,6 +9212,12 @@ dependencies = [ "universal-hash 0.5.1", ] +[[package]] +name = "portable-atomic" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" + [[package]] name = "powerfmt" version = "0.2.0" @@ -4893,7 +9238,7 @@ checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" dependencies = [ "difflib", "float-cmp", - "itertools", + "itertools 0.10.5", "normalize-line-endings", "predicates-core", "regex", @@ -4950,13 +9295,29 @@ dependencies = [ ] [[package]] -name = "proc-macro-crate" -version = "1.1.3" +name = "prioritized-metered-channel" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "e99f0c89bd88f393aab44a4ab949351f7bc7e7e1179d11ecbfe50cbe4c47e342" dependencies = [ + "coarsetime", + "crossbeam-queue", + "derive_more", + "futures", + "futures-timer", + "nanorand", "thiserror", - "toml 0.5.11", + "tracing", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", ] [[package]] @@ -4983,6 +9344,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-warning" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b698b0b09d40e9b7c1a47b132d66a8b54bcd20583d9b6d06e4535e383b4405c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "proc-macro2" version = "1.0.69" @@ -5047,7 +9419,7 @@ checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ "bytes", "heck", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -5068,7 +9440,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", @@ -5254,6 +9626,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + [[package]] name = "rayon" version = "1.8.0" @@ -5337,6 +9715,19 @@ dependencies = [ "thiserror", ] +[[package]] +name = "reed-solomon-novelpoly" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58130877ca403ab42c864fbac74bb319a0746c07a634a92a5cfc7f54af272582" +dependencies = [ + "derive_more", + "fs-err", + "itertools 0.11.0", + "static_init", + "thiserror", +] + [[package]] name = "ref-cast" version = "1.0.20" @@ -5429,15 +9820,25 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ - "crypto-bigint", + "crypto-bigint 0.4.9", "hmac 0.12.1", "zeroize", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle 2.4.1", +] + [[package]] name = "ring" version = "0.1.0" -source = "git+https://github.com/w3f/ring-proof#d3dcccd76cfdb8e2f905e789f129618898026447" +source = "git+https://github.com/w3f/ring-proof#9d79ccf8bb72b132262ccc86e4e42e4396d1bfb8" dependencies = [ "ark-ec", "ark-ff", @@ -5499,6 +9900,116 @@ dependencies = [ "librocksdb-sys", ] +[[package]] +name = "rococo-runtime" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "binary-merkle-tree", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "hex-literal", + "log", + "pallet-asset-rate", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-beefy", + "pallet-beefy-mmr", + "pallet-bounties", + "pallet-child-bounties", + "pallet-collective", + "pallet-conviction-voting", + "pallet-democracy", + "pallet-elections-phragmen", + "pallet-grandpa", + "pallet-identity", + "pallet-im-online", + "pallet-indices", + "pallet-membership", + "pallet-message-queue", + "pallet-mmr", + "pallet-multisig", + "pallet-nis", + "pallet-offences", + "pallet-preimage", + "pallet-proxy", + "pallet-ranked-collective", + "pallet-recovery", + "pallet-referenda", + "pallet-scheduler", + "pallet-session", + "pallet-society", + "pallet-staking", + "pallet-state-trie-migration", + "pallet-sudo", + "pallet-timestamp", + "pallet-tips", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-vesting", + "pallet-whitelist", + "pallet-xcm", + "pallet-xcm-benchmarks", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "rococo-runtime-constants", + "scale-info", + "serde", + "serde_derive", + "smallvec", + "sp-api", + "sp-arithmetic", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-mmr-primitives", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "static_assertions", + "substrate-wasm-builder", +] + +[[package]] +name = "rococo-runtime-constants" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "polkadot-primitives", + "polkadot-runtime-common", + "smallvec", + "sp-core", + "sp-runtime", + "sp-weights", + "staging-xcm", +] + [[package]] name = "rpassword" version = "7.3.1" @@ -5640,9 +10151,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.24" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ "bitflags 2.4.1", "errno", @@ -5725,6 +10236,17 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +[[package]] +name = "ruzstd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" +dependencies = [ + "byteorder", + "thiserror-core", + "twox-hash", +] + [[package]] name = "rw-stream-sink" version = "0.3.0" @@ -5742,6 +10264,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +[[package]] +name = "safe_arch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +dependencies = [ + "bytemuck", +] + [[package]] name = "same-file" version = "1.0.6" @@ -5754,7 +10285,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "log", "sp-core", @@ -5762,10 +10293,38 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-authority-discovery" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "ip_network", + "libp2p", + "log", + "multihash", + "parity-scale-codec", + "prost", + "prost-build", + "rand 0.8.5", + "sc-client-api", + "sc-network", + "sp-api", + "sp-authority-discovery", + "sp-blockchain", + "sp-core", + "sp-keystore", + "sp-runtime", + "substrate-prometheus-endpoint", + "thiserror", +] + [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "futures", "futures-timer", @@ -5788,7 +10347,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5803,7 +10362,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -5822,7 +10381,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5833,7 +10392,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", "chrono", @@ -5873,7 +10432,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "fnv", "futures", @@ -5900,7 +10459,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "hash-db", "kvdb", @@ -5926,7 +10485,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "futures", @@ -5951,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "futures", @@ -5977,10 +10536,133 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-consensus-babe" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "fork-tree", + "futures", + "log", + "num-bigint", + "num-rational", + "num-traits", + "parity-scale-codec", + "parking_lot 0.12.1", + "sc-client-api", + "sc-consensus", + "sc-consensus-epochs", + "sc-consensus-slots", + "sc-telemetry", + "sc-transaction-pool-api", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-runtime", + "substrate-prometheus-endpoint", + "thiserror", +] + +[[package]] +name = "sc-consensus-babe-rpc" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "jsonrpsee", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-rpc-api", + "serde", + "sp-api", + "sp-application-crypto", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-keystore", + "sp-runtime", + "thiserror", +] + +[[package]] +name = "sc-consensus-beefy" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "array-bytes 6.2.0", + "async-channel 1.9.0", + "async-trait", + "fnv", + "futures", + "log", + "parity-scale-codec", + "parking_lot 0.12.1", + "sc-client-api", + "sc-consensus", + "sc-network", + "sc-network-gossip", + "sc-network-sync", + "sc-utils", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-consensus-beefy", + "sp-core", + "sp-keystore", + "sp-mmr-primitives", + "sp-runtime", + "substrate-prometheus-endpoint", + "thiserror", + "wasm-timer", +] + +[[package]] +name = "sc-consensus-beefy-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "futures", + "jsonrpsee", + "log", + "parity-scale-codec", + "parking_lot 0.12.1", + "sc-consensus-beefy", + "sc-rpc", + "serde", + "sp-consensus-beefy", + "sp-core", + "sp-runtime", + "thiserror", +] + +[[package]] +name = "sc-consensus-epochs" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "fork-tree", + "parity-scale-codec", + "sc-client-api", + "sc-consensus", + "sp-blockchain", + "sp-runtime", +] + [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "ahash 0.8.6", "array-bytes 6.2.0", @@ -6018,10 +10700,65 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-consensus-grandpa-rpc" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "finality-grandpa", + "futures", + "jsonrpsee", + "log", + "parity-scale-codec", + "sc-client-api", + "sc-consensus-grandpa", + "sc-rpc", + "serde", + "sp-blockchain", + "sp-core", + "sp-runtime", + "thiserror", +] + +[[package]] +name = "sc-consensus-manual-seal" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "assert_matches", + "async-trait", + "futures", + "futures-timer", + "jsonrpsee", + "log", + "parity-scale-codec", + "sc-client-api", + "sc-consensus", + "sc-consensus-aura", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-transaction-pool", + "sc-transaction-pool-api", + "serde", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-runtime", + "sp-timestamp", + "substrate-prometheus-endpoint", + "thiserror", +] + [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "futures", @@ -6044,7 +10781,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -6066,7 +10803,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -6078,7 +10815,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "anyhow", "cfg-if", @@ -6096,7 +10833,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "ansi_term", "futures", @@ -6112,7 +10849,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", "parking_lot 0.12.1", @@ -6126,7 +10863,7 @@ dependencies = [ [[package]] name = "sc-mixnet" version = "0.1.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 4.2.0", "arrayvec 0.7.4", @@ -6154,10 +10891,10 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", - "async-channel", + "async-channel 1.9.0", "async-trait", "asynchronous-codec", "bytes", @@ -6195,9 +10932,9 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "async-channel", + "async-channel 1.9.0", "cid", "futures", "libp2p-identity", @@ -6215,7 +10952,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -6232,7 +10969,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "ahash 0.8.6", "futures", @@ -6250,10 +10987,10 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", - "async-channel", + "async-channel 1.9.0", "futures", "libp2p-identity", "log", @@ -6271,10 +11008,10 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", - "async-channel", + "async-channel 1.9.0", "async-trait", "fork-tree", "futures", @@ -6306,7 +11043,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", "futures", @@ -6321,10 +11058,44 @@ dependencies = [ "substrate-prometheus-endpoint", ] +[[package]] +name = "sc-offchain" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "array-bytes 6.2.0", + "bytes", + "fnv", + "futures", + "futures-timer", + "hyper", + "hyper-rustls", + "libp2p", + "log", + "num_cpus", + "once_cell", + "parity-scale-codec", + "parking_lot 0.12.1", + "rand 0.8.5", + "sc-client-api", + "sc-network", + "sc-network-common", + "sc-transaction-pool-api", + "sc-utils", + "sp-api", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-offchain", + "sp-runtime", + "threadpool", + "tracing", +] + [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -6333,7 +11104,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "futures", "jsonrpsee", @@ -6365,7 +11136,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6385,7 +11156,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "http", "jsonrpsee", @@ -6400,7 +11171,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", "futures", @@ -6428,7 +11199,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "directories", @@ -6492,7 +11263,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "log", "parity-scale-codec", @@ -6500,10 +11271,43 @@ dependencies = [ "sp-core", ] +[[package]] +name = "sc-storage-monitor" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "clap", + "fs4", + "log", + "sc-client-db", + "sp-core", + "thiserror", + "tokio", +] + +[[package]] +name = "sc-sync-state-rpc" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "jsonrpsee", + "parity-scale-codec", + "sc-chain-spec", + "sc-client-api", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-consensus-grandpa", + "serde", + "serde_json", + "sp-blockchain", + "sp-runtime", + "thiserror", +] + [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "futures", "libc", @@ -6522,7 +11326,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "chrono", "futures", @@ -6541,7 +11345,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "ansi_term", "atty", @@ -6570,7 +11374,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6581,7 +11385,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "futures", @@ -6607,7 +11411,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "futures", @@ -6623,9 +11427,9 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ - "async-channel", + "async-channel 1.9.0", "futures", "futures-timer", "lazy_static", @@ -6699,6 +11503,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "schnorrkel" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "844b7645371e6ecdf61ff246ba1958c29e802881a749ae3fb1993675d210d28d" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "curve25519-dalek-ng", + "merlin 3.0.0", + "rand_core 0.6.4", + "sha2 0.9.9", + "subtle-ng", + "zeroize", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -6749,10 +11569,24 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ - "base16ct", + "base16ct 0.1.1", "der 0.6.1", "generic-array 0.14.7", - "pkcs8 0.9.0", + "pkcs8 0.9.0", + "subtle 2.4.1", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.8", + "generic-array 0.14.7", + "pkcs8 0.10.2", "subtle 2.4.1", "zeroize", ] @@ -6833,18 +11667,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", @@ -6981,9 +11815,23 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ + "digest 0.10.7", "rand_core 0.6.4", ] +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + [[package]] name = "siphasher" version = "0.3.11" @@ -7021,12 +11869,140 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" +[[package]] +name = "slot-range-helper" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "enumn", + "parity-scale-codec", + "paste", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +[[package]] +name = "smol" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1" +dependencies = [ + "async-channel 1.9.0", + "async-executor", + "async-fs", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-net", + "async-process", + "blocking", + "futures-lite 1.13.0", +] + +[[package]] +name = "smoldot" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0bb30cf57b7b5f6109ce17c3164445e2d6f270af2cb48f6e4d31c2967c9a9f5" +dependencies = [ + "arrayvec 0.7.4", + "async-lock 2.8.0", + "atomic-take", + "base64 0.21.5", + "bip39", + "blake2-rfc", + "bs58 0.5.0", + "chacha20", + "crossbeam-queue", + "derive_more", + "ed25519-zebra 4.0.3", + "either", + "event-listener 2.5.3", + "fnv", + "futures-lite 1.13.0", + "futures-util", + "hashbrown 0.14.2", + "hex", + "hmac 0.12.1", + "itertools 0.11.0", + "libsecp256k1", + "merlin 3.0.0", + "no-std-net", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2 0.12.2", + "pin-project", + "poly1305", + "rand 0.8.5", + "rand_chacha 0.3.1", + "ruzstd", + "schnorrkel 0.10.2", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto", + "twox-hash", + "wasmi", + "x25519-dalek 2.0.0", + "zeroize", +] + +[[package]] +name = "smoldot-light" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "256b5bad1d6b49045e95fe87492ce73d5af81545d8b4d8318a872d2007024c33" +dependencies = [ + "async-channel 1.9.0", + "async-lock 2.8.0", + "base64 0.21.5", + "blake2-rfc", + "derive_more", + "either", + "event-listener 2.5.3", + "fnv", + "futures-channel", + "futures-lite 1.13.0", + "futures-util", + "hashbrown 0.14.2", + "hex", + "itertools 0.11.0", + "log", + "lru 0.11.1", + "no-std-net", + "parking_lot 0.12.1", + "pin-project", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot", + "zeroize", +] + [[package]] name = "snap" version = "1.1.0" @@ -7090,7 +12066,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "hash-db", "log", @@ -7111,11 +12087,11 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "Inflector", "blake2 0.10.6", - "expander", + "expander 2.0.0", "proc-macro-crate", "proc-macro2", "quote", @@ -7125,7 +12101,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "scale-info", @@ -7138,7 +12114,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "integer-sqrt", "num-traits", @@ -7149,10 +12125,23 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "sp-authority-discovery" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-runtime", + "sp-std", +] + [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "sp-api", "sp-inherents", @@ -7163,7 +12152,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "futures", "log", @@ -7181,7 +12170,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "futures", @@ -7196,24 +12185,62 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-babe" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", + "serde", "sp-api", "sp-application-crypto", "sp-consensus-slots", + "sp-core", "sp-inherents", "sp-runtime", "sp-std", "sp-timestamp", ] +[[package]] +name = "sp-consensus-beefy" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "lazy_static", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-mmr-primitives", + "sp-runtime", + "sp-std", + "strum 0.24.1", +] + [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "finality-grandpa", "log", @@ -7231,7 +12258,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "scale-info", @@ -7243,7 +12270,7 @@ dependencies = [ [[package]] name = "sp-core" version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "array-bytes 6.2.0", "bandersnatch_vrfs", @@ -7252,7 +12279,7 @@ dependencies = [ "bounded-collections", "bs58 0.5.0", "dyn-clonable", - "ed25519-zebra", + "ed25519-zebra 3.1.0", "futures", "hash-db", "hash256-std-hasher", @@ -7268,7 +12295,7 @@ dependencies = [ "rand 0.8.5", "regex", "scale-info", - "schnorrkel", + "schnorrkel 0.9.1", "secp256k1", "secrecy", "serde", @@ -7290,7 +12317,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "9.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "blake2b_simd", "byteorder", @@ -7303,7 +12330,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "9.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "quote", "sp-core-hashing", @@ -7313,7 +12340,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -7322,7 +12349,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "proc-macro2", "quote", @@ -7332,7 +12359,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "environmental", "parity-scale-codec", @@ -7340,10 +12367,21 @@ dependencies = [ "sp-storage", ] +[[package]] +name = "sp-genesis-builder" +version = "0.1.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "serde_json", + "sp-api", + "sp-runtime", + "sp-std", +] + [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -7357,7 +12395,7 @@ dependencies = [ [[package]] name = "sp-io" version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "bytes", "ed25519-dalek", @@ -7381,18 +12419,18 @@ dependencies = [ [[package]] name = "sp-keyring" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "lazy_static", "sp-core", "sp-runtime", - "strum", + "strum 0.24.1", ] [[package]] name = "sp-keystore" version = "0.27.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -7404,7 +12442,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "thiserror", "zstd 0.12.4", @@ -7413,7 +12451,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -7424,7 +12462,7 @@ dependencies = [ [[package]] name = "sp-mixnet" version = "0.1.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "scale-info", @@ -7433,10 +12471,42 @@ dependencies = [ "sp-std", ] +[[package]] +name = "sp-mmr-primitives" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "ckb-merkle-mountain-range", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-core", + "sp-debug-derive", + "sp-runtime", + "sp-std", + "thiserror", +] + +[[package]] +name = "sp-npos-elections" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", +] + [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "sp-api", "sp-core", @@ -7446,7 +12516,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "backtrace", "lazy_static", @@ -7456,7 +12526,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "rustc-hash", "serde", @@ -7466,7 +12536,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "either", "hash256-std-hasher", @@ -7488,7 +12558,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -7506,7 +12576,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "Inflector", "proc-macro-crate", @@ -7518,7 +12588,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "scale-info", @@ -7533,7 +12603,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7547,7 +12617,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.28.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "hash-db", "log", @@ -7568,7 +12638,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "aes-gcm 0.10.3", "curve25519-dalek 4.1.1", @@ -7592,12 +12662,12 @@ dependencies = [ [[package]] name = "sp-std" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" [[package]] name = "sp-storage" version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "impl-serde", "parity-scale-codec", @@ -7610,7 +12680,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "parity-scale-codec", @@ -7623,7 +12693,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "sp-std", @@ -7635,7 +12705,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "sp-api", "sp-runtime", @@ -7644,7 +12714,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "async-trait", "parity-scale-codec", @@ -7659,7 +12729,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "ahash 0.8.6", "hash-db", @@ -7683,7 +12753,7 @@ dependencies = [ [[package]] name = "sp-version" version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "impl-serde", "parity-scale-codec", @@ -7700,7 +12770,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -7711,7 +12781,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -7724,7 +12794,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "parity-scale-codec", "scale-info", @@ -7748,6 +12818,17 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spinners" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0ef947f358b9c238923f764c72a4a9d42f2d637c46e059dbd319d6e7cfb4f82" +dependencies = [ + "lazy_static", + "maplit", + "strum 0.24.1", +] + [[package]] name = "spki" version = "0.6.0" @@ -7789,6 +12870,65 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "staging-xcm" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "bounded-collections", + "derivative", + "environmental", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-weights", + "xcm-procedural", +] + +[[package]] +name = "staging-xcm-builder" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-transaction-payment", + "parity-scale-codec", + "polkadot-parachain-primitives", + "scale-info", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", + "staging-xcm", + "staging-xcm-executor", +] + +[[package]] +name = "staging-xcm-executor" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "environmental", + "frame-benchmarking", + "frame-support", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", + "staging-xcm", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -7835,9 +12975,15 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ - "strum_macros", + "strum_macros 0.24.3", ] +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" + [[package]] name = "strum_macros" version = "0.24.3" @@ -7851,6 +12997,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.39", +] + [[package]] name = "stun" version = "0.4.4" @@ -7878,20 +13037,39 @@ checksum = "e620c7098893ba667438b47169c00aacdd9e7c10e042250ce2b60b087ec97328" dependencies = [ "hmac 0.11.0", "pbkdf2 0.8.0", - "schnorrkel", + "schnorrkel 0.9.1", "sha2 0.9.9", "zeroize", ] -[[package]] -name = "substrate-build-script-utils" -version = "3.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" - +[[package]] +name = "substrate-build-script-utils" +version = "3.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" + +[[package]] +name = "substrate-frame-rpc-system" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-system-rpc-runtime-api", + "futures", + "jsonrpsee", + "log", + "parity-scale-codec", + "sc-rpc-api", + "sc-transaction-pool-api", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-core", + "sp-runtime", +] + [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "hyper", "log", @@ -7900,10 +13078,66 @@ dependencies = [ "tokio", ] +[[package]] +name = "substrate-rpc-client" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "jsonrpsee", + "log", + "sc-rpc-api", + "serde", + "sp-runtime", +] + +[[package]] +name = "substrate-state-trie-migration-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "jsonrpsee", + "parity-scale-codec", + "sc-client-api", + "sc-rpc-api", + "serde", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-trie", + "trie-db", +] + +[[package]] +name = "substrate-test-client" +version = "2.0.1" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "array-bytes 6.2.0", + "async-trait", + "futures", + "parity-scale-codec", + "sc-client-api", + "sc-client-db", + "sc-consensus", + "sc-executor", + "sc-offchain", + "sc-service", + "serde", + "serde_json", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-keyring", + "sp-keystore", + "sp-runtime", + "sp-state-machine", +] + [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.3.0#401f8a3e9448db854f5605b679fa085b8f445039" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" dependencies = [ "ansi_term", "build-helper", @@ -7911,7 +13145,7 @@ dependencies = [ "filetime", "parity-wasm", "sp-maybe-compressed-blob", - "strum", + "strum 0.24.1", "tempfile", "toml 0.7.8", "walkdir", @@ -7939,6 +13173,12 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +[[package]] +name = "subtle-ng" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" + [[package]] name = "syn" version = "1.0.109" @@ -8015,7 +13255,7 @@ dependencies = [ "cfg-if", "fastrand 2.0.1", "redox_syscall 0.4.1", - "rustix 0.38.24", + "rustix 0.38.25", "windows-sys 0.48.0", ] @@ -8034,6 +13274,20 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +[[package]] +name = "test-runtime-constants" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "polkadot-primitives", + "polkadot-runtime-common", + "smallvec", + "sp-core", + "sp-runtime", + "sp-weights", +] + [[package]] name = "thiserror" version = "1.0.50" @@ -8043,6 +13297,26 @@ dependencies = [ "thiserror-impl", ] +[[package]] +name = "thiserror-core" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c001ee18b7e5e3f62cbf58c7fe220119e68d902bb7443179c0c8aef30090e999" +dependencies = [ + "thiserror-core-impl", +] + +[[package]] +name = "thiserror-core-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "thiserror-impl" version = "1.0.50" @@ -8054,6 +13328,12 @@ dependencies = [ "syn 2.0.39", ] +[[package]] +name = "thousands" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" + [[package]] name = "thread_local" version = "1.1.7" @@ -8064,6 +13344,39 @@ dependencies = [ "once_cell", ] +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "thrift" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b82ca8f46f95b3ce96081fe3dd89160fdea970c254bb72925255d1b62aae692e" +dependencies = [ + "byteorder", + "integer-encoding", + "log", + "ordered-float", + "threadpool", +] + +[[package]] +name = "tikv-jemalloc-ctl" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619bfed27d807b54f7f776b9430d4f8060e66ee138a28632ca898584d462c31c" +dependencies = [ + "libc", + "paste", + "tikv-jemalloc-sys", +] + [[package]] name = "tikv-jemalloc-sys" version = "0.5.4+5.3.0-patched" @@ -8203,6 +13516,17 @@ dependencies = [ "syn 2.0.39", ] +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.24.1" @@ -8367,6 +13691,30 @@ dependencies = [ "tracing", ] +[[package]] +name = "tracing-gum" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "coarsetime", + "polkadot-node-jaeger", + "polkadot-primitives", + "tracing", + "tracing-gum-proc-macro", +] + +[[package]] +name = "tracing-gum-proc-macro" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "expander 2.0.0", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "tracing-log" version = "0.1.4" @@ -8485,6 +13833,47 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +[[package]] +name = "try-runtime-cli" +version = "0.10.0-dev" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "async-trait", + "clap", + "frame-remote-externalities", + "hex", + "log", + "parity-scale-codec", + "sc-cli", + "sc-executor", + "serde", + "serde_json", + "sp-api", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-core", + "sp-debug-derive", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-rpc", + "sp-runtime", + "sp-state-machine", + "sp-timestamp", + "sp-transaction-storage-proof", + "sp-version", + "sp-weights", + "substrate-rpc-client", + "zstd 0.12.4", +] + +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + [[package]] name = "turn" version = "0.6.1" @@ -8531,15 +13920,61 @@ dependencies = [ "sp-storage", ] +[[package]] +name = "tuxedo-parachain-core" +version = "1.0.0-dev" +dependencies = [ + "array-bytes 6.2.0", + "async-trait", + "bytes", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-client", + "cumulus-test-relay-sproof-builder", + "log", + "parity-scale-codec", + "parity-util-mem", + "polkadot-parachain-primitives", + "scale-info", + "serde", + "sp-api", + "sp-core", + "sp-debug-derive", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-trie", + "trie-db", + "tuxedo-core", + "tuxedo-register-validate-block", +] + +[[package]] +name = "tuxedo-register-validate-block" +version = "0.1.0" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "tuxedo-template-runtime" version = "1.0.0-dev" dependencies = [ "amoeba", + "cumulus-primitives-core", "hex-literal", "kitties", "log", "money", + "parachain-piece", "parity-scale-codec", "parity-util-mem", "poe", @@ -8566,6 +14001,7 @@ dependencies = [ "substrate-wasm-builder", "timestamp", "tuxedo-core", + "tuxedo-parachain-core", ] [[package]] @@ -8611,6 +14047,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "uint" version = "0.9.5" @@ -8719,9 +14161,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ "getrandom 0.2.11", ] @@ -8903,8 +14345,8 @@ checksum = "fc942673e7684671f0c5708fc18993569d184265fd5223bb51fc8e5b9b6cfd52" dependencies = [ "anyhow", "libc", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", "tempfile", "thiserror", "wasm-opt-cxx-sys", @@ -8950,6 +14392,37 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmi" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f341edb80021141d4ae6468cbeefc50798716a347d4085c3811900049ea8945" +dependencies = [ + "smallvec", + "spin 0.9.8", + "wasmi_arena", + "wasmi_core", + "wasmparser-nostd", +] + +[[package]] +name = "wasmi_arena" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468" + +[[package]] +name = "wasmi_core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf1a7db34bff95b85c261002720c00c3a6168256dcb93041d3fa2054d19856a" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmparser" version = "0.102.0" @@ -8960,6 +14433,15 @@ dependencies = [ "url", ] +[[package]] +name = "wasmparser-nostd" +version = "0.100.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9157cab83003221bfd385833ab587a039f5d6fa7304854042ba358a3b09e0724" +dependencies = [ + "indexmap-nostd", +] + [[package]] name = "wasmtime" version = "8.0.1" @@ -9271,7 +14753,7 @@ dependencies = [ "ccm", "curve25519-dalek 3.2.0", "der-parser 8.2.0", - "elliptic-curve", + "elliptic-curve 0.12.3", "hkdf", "hmac 0.12.1", "log", @@ -9282,7 +14764,7 @@ dependencies = [ "rcgen 0.10.0", "ring 0.16.20", "rustls 0.19.1", - "sec1", + "sec1 0.3.0", "serde", "sha1", "sha2 0.10.8", @@ -9408,6 +14890,21 @@ dependencies = [ "winapi", ] +[[package]] +name = "westend-runtime-constants" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "frame-support", + "polkadot-primitives", + "polkadot-runtime-common", + "smallvec", + "sp-core", + "sp-runtime", + "sp-weights", + "staging-xcm", +] + [[package]] name = "which" version = "4.4.2" @@ -9417,7 +14914,17 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.24", + "rustix 0.38.25", +] + +[[package]] +name = "wide" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68938b57b33da363195412cfc5fc37c9ed49aa9cfe2156fde64b8d2c9498242" +dependencies = [ + "bytemuck", + "safe_arch", ] [[package]] @@ -9696,6 +15203,17 @@ dependencies = [ "time", ] +[[package]] +name = "xcm-procedural" +version = "1.0.0" +source = "git+https://github.com/off-narrative-labs/polkadot-sdk?branch=tuxedo-v1.3.0#5fbfba164722b5f562f828200463d69311ee43a4" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "yamux" version = "0.10.2" diff --git a/Cargo.toml b/Cargo.toml index 18e8d0bdc..377048ac2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,13 +4,17 @@ panic = "unwind" [workspace] members = [ "node", + "parachain-node", "tuxedo-template-runtime", "tuxedo-core", "tuxedo-core/aggregator", "tuxedo-core/no_bound", + "tuxedo-parachain-core/register_validate_block", + "tuxedo-parachain-core", "wallet", "wardrobe/amoeba", "wardrobe/money", + "wardrobe/parachain", "wardrobe/poe", "wardrobe/timestamp", "wardrobe/kitties", @@ -20,6 +24,7 @@ resolver = "2" [workspace.dependencies] # Generic dependencies +async-io = "2.0" async-trait = "0.1.73" clap = "4.3.0" hex-literal = "0.4.1" @@ -49,45 +54,79 @@ sled = "0.34.7" tokio = "1.25.0" # Node-only dependencies -substrate-build-script-utils = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } +substrate-build-script-utils = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } # Runtime-only dependencies -substrate-wasm-builder = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } +substrate-wasm-builder = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } # Substrate primitives and client -sc-basic-authorship = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-chain-spec = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-cli = { branch = "release-polkadot-v1.3.0", default-features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sc-client-api = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-consensus = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-consensus-aura = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-consensus-grandpa = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-executor = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-keystore = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-network = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-rpc = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-rpc-api = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-service = { branch = "release-polkadot-v1.3.0", default-features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sc-telemetry = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-transaction-pool = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sc-transaction-pool-api = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sp-api = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-application-crypto = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-block-builder = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-blockchain = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sp-consensus = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sp-consensus-aura = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-consensus-grandpa = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-core = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-debug-derive = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-inherents = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-io = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-keyring = { branch = "release-polkadot-v1.3.0", git = "https://github.com/paritytech/polkadot-sdk" } -sp-keystore = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-runtime = { branch = "release-polkadot-v1.3.0", default-features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-session = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-std = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-storage = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-timestamp = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-transaction-pool = { branch = "release-polkadot-v1.3.0", default_features = false, git = "https://github.com/paritytech/polkadot-sdk" } -sp-version = { branch = "release-polkadot-v1.3.0", default-features = false, git = "https://github.com/paritytech/polkadot-sdk" } +sc-basic-authorship = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-chain-spec = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-cli = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-client-api = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-consensus = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-consensus-aura = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-consensus-grandpa = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-consensus-manual-seal = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-executor = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-keystore = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-network = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-network-sync = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-rpc = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-rpc-api = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-service = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-sysinfo = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-telemetry = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-tracing = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-transaction-pool = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sc-transaction-pool-api = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-api = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-application-crypto = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-block-builder = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-blockchain = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-consensus = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-consensus-aura = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-consensus-grandpa = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-core = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-debug-derive = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-inherents = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-io = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-keyring = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-keystore = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-runtime = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-session = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-std = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-storage = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-timestamp = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-transaction-pool = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-version = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } + +# x +substrate-prometheus-endpoint = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } + +# Polkadot +color-print = "0.3.4" +# xcm = { package = "staging-xcm", path = "../../../polkadot/xcm", default-features = false} + +# Cumulus +cumulus-client-cli = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-client-collator = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-client-consensus-aura = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-client-consensus-common = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-client-consensus-proposer = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-client-service = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-primitives-core = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-primitives-parachain-inherent = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-relay-chain-interface = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-test-client = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +cumulus-test-relay-sproof-builder = { branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +polkadot-cli = { features = [ "rococo-native" ], branch = "tuxedo-v1.3.0", git = "https://github.com/off-narrative-labs/polkadot-sdk" } +polkadot-parachain-primitives = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +polkadot-primitives = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } + +# Added while adding Polkadot / Cumulus support +sp-externalities = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-state-machine = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-tracing = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +sp-trie = { branch = "tuxedo-v1.3.0", default_features = false, git = "https://github.com/off-narrative-labs/polkadot-sdk" } +trie-db = { version = "0.28.0", default-features = false } diff --git a/Dockerfile b/Dockerfile index eb65ffd70..b43d5b953 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ FROM docker.io/paritytech/ci-linux:production as builder WORKDIR /node-template COPY . /node-template -RUN cargo build --locked --release +RUN cargo build --locked --release -p node-template # For the second stage, we use a minimal Ubuntu image diff --git a/node/src/main.rs b/node/src/main.rs index a4182cd57..d49a37fbd 100644 --- a/node/src/main.rs +++ b/node/src/main.rs @@ -2,11 +2,10 @@ #![warn(missing_docs)] mod chain_spec; -#[macro_use] -mod service; mod cli; mod command; mod rpc; +mod service; fn main() -> sc_cli::Result<()> { command::run() diff --git a/node/src/rpc.rs b/node/src/rpc.rs index e1c2b712d..efce2278d 100644 --- a/node/src/rpc.rs +++ b/node/src/rpc.rs @@ -31,9 +31,12 @@ pub fn create_full( _deps: FullDeps, ) -> Result, Box> where - C: ProvideRuntimeApi, - C: HeaderBackend + HeaderMetadata + 'static, - C: Send + Sync + 'static, + C: ProvideRuntimeApi + + HeaderBackend + + HeaderMetadata + + Send + + Sync + + 'static, C::Api: BlockBuilder, P: TransactionPool + 'static, { diff --git a/node/src/service.rs b/node/src/service.rs index b0c0e88dc..d7c892792 100644 --- a/node/src/service.rs +++ b/node/src/service.rs @@ -262,6 +262,7 @@ pub fn new_full(config: Configuration) -> Result { let parent_block = maybe_parent_block? .ok_or(sp_blockchain::Error::UnknownBlock(parent_hash.to_string()))? .block; + let parent_idp = tuxedo_core::inherents::ParentBlockInherentDataProvider(parent_block); let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); diff --git a/parachain-node/Cargo.toml b/parachain-node/Cargo.toml new file mode 100644 index 000000000..a8243d86a --- /dev/null +++ b/parachain-node/Cargo.toml @@ -0,0 +1,73 @@ +[package] +authors = [ "Anonymous" ] +build = "build.rs" +description = "A new parachain template powered by Tuxedo and Cumulus." +# repository.workspace = true +edition = "2021" +name = "parachain-template-node" +publish = false +version = "0.1.0" + +[dependencies] +async-io = { workspace = true } +clap = { features = [ "derive" ], workspace = true } +futures = { workspace = true } +jsonrpsee = { features = [ "server" ], workspace = true } +log = { workspace = true } +parity-scale-codec = { workspace = true } +serde = { features = [ "derive" ], workspace = true } + +# Local +parachain-template-runtime = { features = [ "parachain" ], package = "tuxedo-template-runtime", path = "../tuxedo-template-runtime" } +tuxedo-core = { path = "../tuxedo-core" } + +# Substrate +sc-basic-authorship = { workspace = true } +sc-chain-spec = { workspace = true } +sc-cli = { workspace = true } +sc-client-api = { workspace = true } +sc-consensus = { workspace = true } +sc-consensus-manual-seal = { workspace = true } +sc-executor = { workspace = true } +sc-network = { workspace = true } +sc-network-sync = { workspace = true } +sc-rpc = { workspace = true } +sc-service = { workspace = true } +sc-sysinfo = { workspace = true } +sc-telemetry = { workspace = true } +sc-tracing = { workspace = true } +sc-transaction-pool = { workspace = true } +sc-transaction-pool-api = { workspace = true } +sp-api = { workspace = true } +sp-block-builder = { workspace = true } +sp-blockchain = { workspace = true } +sp-consensus-aura = { workspace = true } +sp-core = { workspace = true } +sp-io = { workspace = true } +sp-keystore = { workspace = true } +sp-runtime = { workspace = true } +sp-timestamp = { workspace = true } +substrate-prometheus-endpoint = { workspace = true } + +# Polkadot +color-print = { workspace = true } + +# Cumulus +cumulus-client-cli = { workspace = true } +cumulus-client-collator = { workspace = true } +cumulus-client-consensus-aura = { workspace = true } +cumulus-client-consensus-common = { workspace = true } +cumulus-client-consensus-proposer = { workspace = true } +cumulus-client-service = { workspace = true } +cumulus-primitives-core = { workspace = true } +cumulus-primitives-parachain-inherent = { workspace = true } +cumulus-relay-chain-interface = { workspace = true } +polkadot-cli = { features = [ "rococo-native" ], workspace = true } +polkadot-primitives = { workspace = true } + +[build-dependencies] +substrate-build-script-utils = { workspace = true } + +[features] +default = [] +rocksdb = [ "sc-cli/rocksdb", "sc-service/rocksdb" ] diff --git a/parachain-node/Dockerfile b/parachain-node/Dockerfile new file mode 100644 index 000000000..a906e7018 --- /dev/null +++ b/parachain-node/Dockerfile @@ -0,0 +1,39 @@ +# This is a multi-stage docker file. See https://docs.docker.com/build/building/multi-stage/ +# for details about this pattern. +# It is largely copied from Substrate +# https://github.com/paritytech/substrate/blob/master/docker/substrate_builder.Dockerfile + +# For the build stage, we use an image provided by Parity +FROM docker.io/paritytech/ci-linux:production as builder +WORKDIR /parachain-template +COPY . /parachain-template +RUN cargo build --locked --release -p parachain-template-node + + +# For the second stage, we use a minimal Ubuntu image +# Alpine does't work as explained https://stackoverflow.com/a/66974607/4184410 +# Also, surprisingly, `ubuntu:latest` doesn't work and leads to "OS can't spawn worker thread: Operation not permitted" +FROM docker.io/library/ubuntu:20.04 +LABEL description="Tuxedo Parachain Template" + +COPY --from=builder /parachain-template/target/release/parachain-template-node /usr/local/bin + +RUN useradd -m -u 1000 -U -s /bin/sh -d /node-dev node-dev && \ + mkdir -p /chain-data /node-dev/.local/share && \ + chown -R node-dev:node-dev /chain-data && \ + ln -s /chain-data /node-dev/.local/share/parachain-template-node && \ + # unclutter and minimize the attack surface + # rm -rf /usr/bin /usr/sbin && \ + # check if executable works in this container + /usr/local/bin/parachain-template-node --version + +USER node-dev + +#TODO Confirm the embedded relay chain port numbers. I believe they are +# 30334 - Relay P2P +# ???? - Relay RPC +# 9616 - Relay metrics +EXPOSE 30333 30334 9944 9615 9616 +VOLUME ["/chain-data"] + +ENTRYPOINT ["/usr/local/bin/parachain-template-node"] \ No newline at end of file diff --git a/parachain-node/build.rs b/parachain-node/build.rs new file mode 100644 index 000000000..f9d839f9b --- /dev/null +++ b/parachain-node/build.rs @@ -0,0 +1,7 @@ +use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; + +fn main() { + generate_cargo_keys(); + + rerun_if_git_head_changed(); +} diff --git a/parachain-node/src/chain_spec.rs b/parachain-node/src/chain_spec.rs new file mode 100644 index 000000000..1d2dd4b7d --- /dev/null +++ b/parachain-node/src/chain_spec.rs @@ -0,0 +1,109 @@ +use parachain_template_runtime::genesis::*; +use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; +use sc_service::ChainType; +use serde::{Deserialize, Serialize}; + +/// Specialized `ChainSpec` for the normal parachain runtime. +pub type ChainSpec = sc_service::GenericChainSpec; + +/// The extensions for the [`ChainSpec`]. +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)] +#[serde(deny_unknown_fields)] +pub struct Extensions { + /// The relay chain of the Parachain. + pub relay_chain: String, + /// The id of the Parachain. + pub para_id: u32, +} + +impl Extensions { + /// Try to get the extension from the given `ChainSpec`. + pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> { + sc_chain_spec::get_extension(chain_spec.extensions()) + } +} + +// type AccountPublic = ::Signer; + +// /// Generate collator keys from seed. +// /// +// /// This function's return type must always match the session keys of the chain in tuple format. +// pub fn get_collator_keys_from_seed(seed: &str) -> AuraId { +// get_from_seed::(seed) +// } + +// /// Helper function to generate an account ID from seed +// pub fn get_account_id_from_seed(seed: &str) -> AccountId +// where +// AccountPublic: From<::Public>, +// { +// AccountPublic::from(get_from_seed::(seed)).into_account() +// } + +// /// Generate the session keys from individual elements. +// /// +// /// The input must be a tuple of individual keys (a single arg for now since we have just one key). +// pub fn template_session_keys(keys: AuraId) -> parachain_template_runtime::SessionKeys { +// parachain_template_runtime::SessionKeys { aura: keys } +// } + +pub fn development_config() -> ChainSpec { + // Give your base currency a unit name and decimal places + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("tokenSymbol".into(), "UNIT".into()); + properties.insert("tokenDecimals".into(), 12.into()); + properties.insert("ss58Format".into(), 42.into()); + + ChainSpec::from_genesis( + // Name + "Development", + // ID + "dev", + ChainType::Development, + development_genesis_config, + Vec::new(), + None, + None, + None, + None, + Extensions { + relay_chain: "rococo-local".into(), // You MUST set this to the correct network! + // CAUTION: This value is dupliocated in the runtime code. The value here must match, or... + // This duplication is also present in the upstream template, but will hopefully be fixed as soon as SDK 1.4.0 + // github.com/paritytech/polkadot-sdk/blob/838a534d/cumulus/parachain-template/node/src/chain_spec.rs#L76-L109 + para_id: 2000, + }, + ) +} + +pub fn local_testnet_config() -> ChainSpec { + // Give your base currency a unit name and decimal places + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("tokenSymbol".into(), "UNIT".into()); + properties.insert("tokenDecimals".into(), 12.into()); + properties.insert("ss58Format".into(), 42.into()); + + ChainSpec::from_genesis( + // Name + "Local Testnet", + // ID + "local_testnet", + ChainType::Local, + development_genesis_config, + // Bootnodes + Vec::new(), + // Telemetry + None, + // Protocol ID + Some("template-local"), + // Fork ID + None, + // Properties + Some(properties), + // Extensions + Extensions { + relay_chain: "rococo-local".into(), // You MUST set this to the correct network! + para_id: 2000, + }, + ) +} diff --git a/parachain-node/src/cli.rs b/parachain-node/src/cli.rs new file mode 100644 index 000000000..8ad800c00 --- /dev/null +++ b/parachain-node/src/cli.rs @@ -0,0 +1,110 @@ +use std::path::PathBuf; + +/// Sub-commands supported by the collator. +#[derive(Debug, clap::Subcommand)] +pub enum Subcommand { + /// Build a chain specification. + BuildSpec(sc_cli::BuildSpecCmd), + + /// Validate blocks. + CheckBlock(sc_cli::CheckBlockCmd), + + /// Export blocks. + ExportBlocks(sc_cli::ExportBlocksCmd), + + /// Export the state of a given block into a chain spec. + ExportState(sc_cli::ExportStateCmd), + + /// Import blocks. + ImportBlocks(sc_cli::ImportBlocksCmd), + + /// Revert the chain to a previous state. + Revert(sc_cli::RevertCmd), + + /// Remove the whole chain. + PurgeChain(cumulus_client_cli::PurgeChainCmd), + + /// Export the genesis head data (NOT STATE!) of the parachain. + /// This command has a terrible name and we only keep it because zombienet expects it. + /// You should use ExportGenesisHead instead if you are running it manually or writing your own tools. + #[clap(hide = true)] + ExportGenesisState(cumulus_client_cli::ExportGenesisHeadCommand), + + /// Export the genesis head data of the parachain. + /// Head data is the encoded block header. + /// This is the same as the old, poorly named, ExportGenesisState command. + ExportGenesisHead(cumulus_client_cli::ExportGenesisHeadCommand), + + /// Export the genesis wasm of the parachain. + ExportGenesisWasm(cumulus_client_cli::ExportGenesisWasmCommand), +} + +const AFTER_HELP_EXAMPLE: &str = color_print::cstr!( + r#"Examples: + parachain-template-node build-spec --disable-default-bootnode > plain-parachain-chainspec.json + Export a chainspec for a local testnet in json format. + parachain-template-node --chain plain-parachain-chainspec.json --tmp -- --chain rococo-local + Launch a full node with chain specification loaded from plain-parachain-chainspec.json. + parachain-template-node + Launch a full node with default parachain local-testnet and relay chain rococo-local. + parachain-template-node --collator + Launch a collator with default parachain local-testnet and relay chain rococo-local. + "# +); +#[derive(Debug, clap::Parser)] +#[command( + propagate_version = true, + args_conflicts_with_subcommands = true, + subcommand_negates_reqs = true +)] +#[clap(after_help = AFTER_HELP_EXAMPLE)] +pub struct Cli { + #[command(subcommand)] + pub subcommand: Option, + + #[command(flatten)] + pub run: cumulus_client_cli::RunCmd, + + /// Disable automatic hardware benchmarks. + /// + /// By default these benchmarks are automatically ran at startup and measure + /// the CPU speed, the memory bandwidth and the disk speed. + /// + /// The results are then printed out in the logs, and also sent as part of + /// telemetry, if telemetry is enabled. + #[arg(long)] + pub no_hardware_benchmarks: bool, + + /// Relay chain arguments + #[arg(raw = true)] + pub relay_chain_args: Vec, +} + +#[derive(Debug)] +pub struct RelayChainCli { + /// The actual relay chain cli object. + pub base: polkadot_cli::RunCmd, + + /// Optional chain id that should be passed to the relay chain. + pub chain_id: Option, + + /// The base path that should be used by the relay chain. + pub base_path: Option, +} + +impl RelayChainCli { + /// Parse the relay chain CLI parameters using the para chain `Configuration`. + pub fn new<'a>( + para_config: &sc_service::Configuration, + relay_chain_args: impl Iterator, + ) -> Self { + let extension = crate::chain_spec::Extensions::try_get(&*para_config.chain_spec); + let chain_id = extension.map(|e| e.relay_chain.clone()); + let base_path = para_config.base_path.path().join("polkadot"); + Self { + base_path: Some(base_path), + chain_id, + base: clap::Parser::parse_from(relay_chain_args), + } + } +} diff --git a/parachain-node/src/command.rs b/parachain-node/src/command.rs new file mode 100644 index 000000000..f046571e9 --- /dev/null +++ b/parachain-node/src/command.rs @@ -0,0 +1,381 @@ +use std::net::SocketAddr; + +use cumulus_primitives_core::ParaId; +use log::info; +use sc_cli::{ + ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, + NetworkParams, Result, SharedParams, SubstrateCli, +}; +use sc_service::config::{BasePath, PrometheusConfig}; +use sp_runtime::traits::AccountIdConversion; + +use crate::{ + chain_spec, + cli::{Cli, RelayChainCli, Subcommand}, + dev_service::new_dev, + service::new_partial, +}; + +fn load_spec(id: &str) -> std::result::Result, String> { + Ok(match id { + "dev" => Box::new(chain_spec::development_config()), + "template-rococo" => Box::new(chain_spec::local_testnet_config()), + "" | "local" => Box::new(chain_spec::local_testnet_config()), + path => Box::new(chain_spec::ChainSpec::from_json_file( + std::path::PathBuf::from(path), + )?), + }) +} + +impl SubstrateCli for Cli { + fn impl_name() -> String { + "Parachain Collator Template".into() + } + + fn impl_version() -> String { + env!("SUBSTRATE_CLI_IMPL_VERSION").into() + } + + fn description() -> String { + format!( + "Parachain Collator Template\n\nThe command-line arguments provided first will be \ + passed to the parachain node, while the arguments provided after -- will be passed \ + to the relay chain node.\n\n\ + {} -- ", + Self::executable_name() + ) + } + + fn author() -> String { + env!("CARGO_PKG_AUTHORS").into() + } + + fn support_url() -> String { + "https://github.com/paritytech/cumulus/issues/new".into() + } + + fn copyright_start_year() -> i32 { + 2020 + } + + fn load_spec(&self, id: &str) -> std::result::Result, String> { + load_spec(id) + } +} + +impl SubstrateCli for RelayChainCli { + fn impl_name() -> String { + "Parachain Collator Template".into() + } + + fn impl_version() -> String { + env!("SUBSTRATE_CLI_IMPL_VERSION").into() + } + + fn description() -> String { + format!( + "Parachain Collator Template\n\nThe command-line arguments provided first will be \ + passed to the parachain node, while the arguments provided after -- will be passed \ + to the relay chain node.\n\n\ + {} -- ", + Self::executable_name() + ) + } + + fn author() -> String { + env!("CARGO_PKG_AUTHORS").into() + } + + fn support_url() -> String { + "https://github.com/paritytech/cumulus/issues/new".into() + } + + fn copyright_start_year() -> i32 { + 2020 + } + + fn load_spec(&self, id: &str) -> std::result::Result, String> { + polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()).load_spec(id) + } +} + +macro_rules! construct_async_run { + (|$components:ident, $cli:ident, $cmd:ident, $config:ident| $( $code:tt )* ) => {{ + let runner = $cli.create_runner($cmd)?; + runner.async_run(|$config| { + let $components = new_partial(&$config)?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }} +} + +/// Parse command line arguments into service configuration. +pub fn run() -> Result<()> { + let cli = Cli::from_args(); + + match &cli.subcommand { + Some(Subcommand::BuildSpec(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) + } + Some(Subcommand::CheckBlock(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.import_queue)) + }) + } + Some(Subcommand::ExportBlocks(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, config.database)) + }) + } + Some(Subcommand::ExportState(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, config.chain_spec)) + }) + } + Some(Subcommand::ImportBlocks(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.import_queue)) + }) + } + Some(Subcommand::Revert(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.backend, None)) + }) + } + Some(Subcommand::PurgeChain(cmd)) => { + let runner = cli.create_runner(cmd)?; + + runner.sync_run(|config| { + let polkadot_cli = RelayChainCli::new( + &config, + [RelayChainCli::executable_name()] + .iter() + .chain(cli.relay_chain_args.iter()), + ); + + let polkadot_config = SubstrateCli::create_configuration( + &polkadot_cli, + &polkadot_cli, + config.tokio_handle.clone(), + ) + .map_err(|err| format!("Relay chain argument error: {}", err))?; + + cmd.run(config, polkadot_config) + }) + } + Some(Subcommand::ExportGenesisState(cmd)) | Some(Subcommand::ExportGenesisHead(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| { + let partials = new_partial(&config)?; + + cmd.run(partials.client) + }) + } + Some(Subcommand::ExportGenesisWasm(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|_config| { + let spec = cli.load_spec(&cmd.shared_params.chain.clone().unwrap_or_default())?; + cmd.run(&*spec) + }) + } + None => { + let runner = cli.create_runner(&cli.run.normalize())?; + let collator_options = cli.run.collator_options(); + + runner.run_node_until_exit(|config| async move { + // This is where we detect and enable the development service. + // For now it can ONLY be used for --dev. If we later desire more + // flexibility, we could take inspiration from: + // https://github.com/moonbeam-foundation/moonbeam/pull/260 + if cli.run.base.shared_params.dev { + return new_dev(config).map_err(sc_cli::Error::Service); + } + + let hwbench = (!cli.no_hardware_benchmarks) + .then_some(config.database.path().map(|database_path| { + let _ = std::fs::create_dir_all(database_path); + sc_sysinfo::gather_hwbench(Some(database_path)) + })) + .flatten(); + + let para_id = chain_spec::Extensions::try_get(&*config.chain_spec) + .map(|e| e.para_id) + .ok_or("Could not find parachain ID in chain-spec.")?; + + let polkadot_cli = RelayChainCli::new( + &config, + [RelayChainCli::executable_name()] + .iter() + .chain(cli.relay_chain_args.iter()), + ); + + let id = ParaId::from(para_id); + + let parachain_account = + AccountIdConversion::::into_account_truncating( + &id, + ); + + let tokio_handle = config.tokio_handle.clone(); + let polkadot_config = + SubstrateCli::create_configuration(&polkadot_cli, &polkadot_cli, tokio_handle) + .map_err(|err| format!("Relay chain argument error: {}", err))?; + + info!("Parachain Account: {parachain_account}"); + info!( + "Is collating: {}", + if config.role.is_authority() { + "yes" + } else { + "no" + } + ); + info!("Client-side ParaId from chain spec: {para_id}"); + + crate::service::start_parachain_node( + config, + polkadot_config, + collator_options, + id, + hwbench, + ) + .await + .map(|r| r.0) + .map_err(Into::into) + }) + } + } +} + +impl DefaultConfigurationValues for RelayChainCli { + fn p2p_listen_port() -> u16 { + 30334 + } + + fn rpc_listen_port() -> u16 { + 9945 + } + + fn prometheus_listen_port() -> u16 { + 9616 + } +} + +impl CliConfiguration for RelayChainCli { + fn shared_params(&self) -> &SharedParams { + self.base.base.shared_params() + } + + fn import_params(&self) -> Option<&ImportParams> { + self.base.base.import_params() + } + + fn network_params(&self) -> Option<&NetworkParams> { + self.base.base.network_params() + } + + fn keystore_params(&self) -> Option<&KeystoreParams> { + self.base.base.keystore_params() + } + + fn base_path(&self) -> Result> { + Ok(self + .shared_params() + .base_path()? + .or_else(|| self.base_path.clone().map(Into::into))) + } + + fn rpc_addr(&self, default_listen_port: u16) -> Result> { + self.base.base.rpc_addr(default_listen_port) + } + + fn prometheus_config( + &self, + default_listen_port: u16, + chain_spec: &Box, + ) -> Result> { + self.base + .base + .prometheus_config(default_listen_port, chain_spec) + } + + fn init( + &self, + _support_url: &String, + _impl_version: &String, + _logger_hook: F, + _config: &sc_service::Configuration, + ) -> Result<()> + where + F: FnOnce(&mut sc_cli::LoggerBuilder, &sc_service::Configuration), + { + unreachable!("PolkadotCli is never initialized; qed"); + } + + fn chain_id(&self, is_dev: bool) -> Result { + let chain_id = self.base.base.chain_id(is_dev)?; + + Ok(if chain_id.is_empty() { + self.chain_id.clone().unwrap_or_default() + } else { + chain_id + }) + } + + fn role(&self, is_dev: bool) -> Result { + self.base.base.role(is_dev) + } + + fn transaction_pool(&self, is_dev: bool) -> Result { + self.base.base.transaction_pool(is_dev) + } + + fn trie_cache_maximum_size(&self) -> Result> { + self.base.base.trie_cache_maximum_size() + } + + fn rpc_methods(&self) -> Result { + self.base.base.rpc_methods() + } + + fn rpc_max_connections(&self) -> Result { + self.base.base.rpc_max_connections() + } + + fn rpc_cors(&self, is_dev: bool) -> Result>> { + self.base.base.rpc_cors(is_dev) + } + + fn default_heap_pages(&self) -> Result> { + self.base.base.default_heap_pages() + } + + fn force_authoring(&self) -> Result { + self.base.base.force_authoring() + } + + fn disable_grandpa(&self) -> Result { + self.base.base.disable_grandpa() + } + + fn max_runtime_instances(&self) -> Result> { + self.base.base.max_runtime_instances() + } + + fn announce_block(&self) -> Result { + self.base.base.announce_block() + } + + fn telemetry_endpoints( + &self, + chain_spec: &Box, + ) -> Result> { + self.base.base.telemetry_endpoints(chain_spec) + } + + fn node_name(&self) -> Result { + self.base.base.node_name() + } +} diff --git a/parachain-node/src/dev_service.rs b/parachain-node/src/dev_service.rs new file mode 100644 index 000000000..8243dc64f --- /dev/null +++ b/parachain-node/src/dev_service.rs @@ -0,0 +1,258 @@ +//! The development service provides a way to run a parachain runtime in a real blockchain context, +//! but without a backing relay chain. This allows developers to quickly and easily spin up parachain +//! nodes using the --dev flag, for example. It can also be used in integration tests. + +use parachain_template_runtime::{self, opaque::Block, RuntimeApi}; +use sc_client_api::BlockBackend; +use sc_consensus_manual_seal::consensus::aura::AuraConsensusDataProvider; +pub use sc_executor::NativeElseWasmExecutor; +use sc_service::{error::Error as ServiceError, Configuration, TaskManager}; +use sc_telemetry::{Telemetry, TelemetryWorker}; +use std::{sync::Arc, time::Duration}; +use tuxedo_core::genesis::TuxedoGenesisBlockBuilder; + +use cumulus_primitives_parachain_inherent::MockValidationDataInherentDataProvider; + +// Our native executor instance. +pub struct ExecutorDispatch; + +impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option> { + parachain_template_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + parachain_template_runtime::native_version() + } +} + +pub(crate) type FullClient = + sc_service::TFullClient>; +type FullBackend = sc_service::TFullBackend; +type FullSelectChain = sc_consensus::LongestChain; + +#[allow(clippy::type_complexity)] +pub fn new_partial( + config: &Configuration, +) -> Result< + sc_service::PartialComponents< + FullClient, + FullBackend, + FullSelectChain, + sc_consensus::DefaultImportQueue, + sc_transaction_pool::FullPool, + Option, + >, + ServiceError, +> { + let telemetry = config + .telemetry_endpoints + .clone() + .filter(|x| !x.is_empty()) + .map(|endpoints| -> Result<_, sc_telemetry::Error> { + let worker = TelemetryWorker::new(16)?; + let telemetry = worker.handle().new_telemetry(endpoints); + Ok((worker, telemetry)) + }) + .transpose()?; + + let executor = sc_service::new_native_or_wasm_executor(config); + + let backend = sc_service::new_db_backend(config.db_config())?; + let genesis_block_builder = TuxedoGenesisBlockBuilder::new( + config.chain_spec.as_storage_builder(), + !config.no_genesis(), + backend.clone(), + executor.clone(), + )?; + + let (client, backend, keystore_container, task_manager) = + sc_service::new_full_parts_with_genesis_builder::( + config, + telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), + executor, + backend, + genesis_block_builder, + )?; + let client = Arc::new(client); + + let telemetry = telemetry.map(|(worker, telemetry)| { + task_manager + .spawn_handle() + .spawn("telemetry", None, worker.run()); + telemetry + }); + + let select_chain = sc_consensus::LongestChain::new(backend.clone()); + + let transaction_pool = sc_transaction_pool::BasicPool::new_full( + config.transaction_pool.clone(), + config.role.is_authority().into(), + config.prometheus_registry(), + task_manager.spawn_essential_handle(), + client.clone(), + ); + + let import_queue = sc_consensus_manual_seal::import_queue( + Box::new(client.clone()), + &task_manager.spawn_essential_handle(), + config.prometheus_registry(), + ); + + Ok(sc_service::PartialComponents { + client, + backend, + task_manager, + import_queue, + keystore_container, + select_chain, + transaction_pool, + other: (telemetry), + }) +} + +/// Builds a new development service. This service uses manual seal, and mocks +/// the parachain inherent. +pub fn new_dev(config: Configuration) -> Result { + use async_io::Timer; + use sc_consensus_manual_seal::{run_manual_seal, EngineCommand, ManualSealParams}; + + let sc_service::PartialComponents { + client, + backend, + mut task_manager, + import_queue, + keystore_container, + select_chain, + transaction_pool, + other: telemetry, + } = new_partial(&config)?; + + let net_config = sc_network::config::FullNetworkConfiguration::new(&config.network); + + let (network, system_rpc_tx, tx_handler_controller, network_starter, sync_service) = + sc_service::build_network(sc_service::BuildNetworkParams { + config: &config, + net_config, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + spawn_handle: task_manager.spawn_handle(), + import_queue, + block_announce_validator_builder: None, + warp_sync_params: None, + block_relay: None, + })?; + + let prometheus_registry = config.prometheus_registry().cloned(); + let collator = config.role.is_authority(); + + if collator { + let env = sc_basic_authorship::ProposerFactory::with_proof_recording( + task_manager.spawn_handle(), + client.clone(), + transaction_pool.clone(), + prometheus_registry.as_ref(), + telemetry.as_ref().map(|x| x.handle()), + ); + + let commands_stream = Box::new(futures::StreamExt::map( + Timer::interval(Duration::from_millis(6_000)), + |_| EngineCommand::SealNewBlock { + create_empty: true, + finalize: false, + parent_hash: None, + sender: None, + }, + )); + + let client_for_cidp = client.clone(); + + // Create channels for mocked XCM messages. + // let (downward_xcm_sender, downward_xcm_receiver) = flume::bounded::>(100); + // let (hrmp_xcm_sender, hrmp_xcm_receiver) = flume::bounded::<(ParaId, Vec)>(100); + // xcm_senders = Some((downward_xcm_sender, hrmp_xcm_sender)); + + task_manager.spawn_essential_handle().spawn_blocking( + "authorship_task", + Some("block-authoring"), + run_manual_seal(ManualSealParams { + block_import: client.clone(), + env, + client: client.clone(), + pool: transaction_pool.clone(), + commands_stream, + select_chain, + consensus_data_provider: Some(Box::new(AuraConsensusDataProvider::new( + client.clone(), + ))), + create_inherent_data_providers: move |parent_hash, ()| { + let maybe_parent_block = client_for_cidp.clone().block(parent_hash); + + async move { + let parent_block = maybe_parent_block? + .ok_or(sp_blockchain::Error::UnknownBlock(parent_hash.to_string()))? + .block; + + let mocked_parachain = { + use sp_api::{BlockT, HeaderT}; + + MockValidationDataInherentDataProvider { + current_para_block: parent_block.header().number() + 1, + relay_offset: 1000, + relay_blocks_per_para_block: 2, + para_blocks_per_relay_epoch: 10, + relay_randomness_config: (), + xcm_config: Default::default(), + raw_downward_messages: Default::default(), + raw_horizontal_messages: Default::default(), + } + }; + + let parent_idp = + tuxedo_core::inherents::ParentBlockInherentDataProvider(parent_block); + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + Ok((parent_idp, timestamp, mocked_parachain)) + } + }, + }), + ); + } + + let rpc_builder = { + let client = client.clone(); + let transaction_pool = transaction_pool.clone(); + + Box::new(move |deny_unsafe, _| { + let deps = crate::rpc::FullDeps { + client: client.clone(), + pool: transaction_pool.clone(), + deny_unsafe, + }; + + crate::rpc::create_full(deps).map_err(Into::into) + }) + }; + + sc_service::spawn_tasks(sc_service::SpawnTasksParams { + network, + client, + keystore: keystore_container.keystore(), + task_manager: &mut task_manager, + transaction_pool, + rpc_builder, + backend, + system_rpc_tx, + sync_service: sync_service.clone(), + config, + tx_handler_controller, + telemetry: None, + })?; + + log::info!("Development Service Ready"); + + network_starter.start_network(); + Ok(task_manager) +} diff --git a/parachain-node/src/main.rs b/parachain-node/src/main.rs new file mode 100644 index 000000000..cbeacc4e4 --- /dev/null +++ b/parachain-node/src/main.rs @@ -0,0 +1,14 @@ +//! Substrate Parachain Node Template CLI + +#![warn(missing_docs)] + +mod chain_spec; +mod cli; +mod command; +mod dev_service; +mod rpc; +mod service; + +fn main() -> sc_cli::Result<()> { + command::run() +} diff --git a/parachain-node/src/rpc.rs b/parachain-node/src/rpc.rs new file mode 100644 index 000000000..234e5fa49 --- /dev/null +++ b/parachain-node/src/rpc.rs @@ -0,0 +1,51 @@ +//! A collection of node-specific RPC methods. +//! Substrate provides the `sc-rpc` crate, which defines the core RPC layer +//! used by Substrate nodes. This file extends those RPC definitions with +//! capabilities that are specific to this project's runtime configuration. + +#![warn(missing_docs)] + +use std::sync::Arc; + +use jsonrpsee::RpcModule; +use parachain_template_runtime::opaque::Block; +pub use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor}; +use sc_transaction_pool_api::TransactionPool; +use sp_api::ProvideRuntimeApi; +use sp_block_builder::BlockBuilder; +use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata}; + +/// A type representing all RPC extensions. +pub type RpcExtension = jsonrpsee::RpcModule<()>; + +/// Full client dependencies +pub struct FullDeps { + /// The client instance to use. + pub client: Arc, + /// Transaction pool instance. + pub pool: Arc

, + /// Whether to deny unsafe calls + pub deny_unsafe: DenyUnsafe, +} + +/// Instantiate all RPC extensions. +pub fn create_full( + _deps: FullDeps, +) -> Result> +where + C: ProvideRuntimeApi + + HeaderBackend + + HeaderMetadata + + Send + + Sync + + 'static, + C::Api: BlockBuilder, + P: TransactionPool + Sync + Send + 'static, +{ + let module = RpcModule::new(()); + // Extend this RPC with a custom API by using the following syntax. + // `YourRpcStruct` should have a reference to a client, which is needed + // to call into the runtime. + // `module.merge(YourRpcTrait::into_rpc(YourRpcStruct::new(ReferenceToClient, ...)))?;` + Ok(module) +} diff --git a/parachain-node/src/service.rs b/parachain-node/src/service.rs new file mode 100644 index 000000000..c059e131b --- /dev/null +++ b/parachain-node/src/service.rs @@ -0,0 +1,437 @@ +//! Service and ServiceFactory implementation. Specialized wrapper over substrate service. + +// std +use std::{sync::Arc, time::Duration}; + +use cumulus_client_cli::CollatorOptions; +// Local Runtime Types +use parachain_template_runtime::{ + opaque::{Block, Hash}, + RuntimeApi, +}; + +// Cumulus Imports +use cumulus_client_collator::service::CollatorService; +use cumulus_client_consensus_common::ParachainBlockImport as TParachainBlockImport; +use cumulus_client_consensus_proposer::Proposer; +use cumulus_client_service::{ + build_network, build_relay_chain_interface, prepare_node_config, start_relay_chain_tasks, + BuildNetworkParams, CollatorSybilResistance, DARecoveryProfile, StartRelayChainTasksParams, +}; +use cumulus_primitives_core::{relay_chain::CollatorPair, ParaId}; +use cumulus_relay_chain_interface::{OverseerHandle, RelayChainInterface}; + +// Substrate Imports +use sc_client_api::BlockBackend; +use sc_consensus::ImportQueue; +use sc_executor::{ + HeapAllocStrategy, NativeElseWasmExecutor, WasmExecutor, DEFAULT_HEAP_ALLOC_STRATEGY, +}; +use sc_network::NetworkBlock; +use sc_network_sync::SyncingService; +use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; +use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; +use sp_keystore::KeystorePtr; +use substrate_prometheus_endpoint::Registry; +use tuxedo_core::genesis::TuxedoGenesisBlockBuilder; + +/// Native executor type. +pub struct ParachainNativeExecutor; + +impl sc_executor::NativeExecutionDispatch for ParachainNativeExecutor { + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option> { + parachain_template_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + parachain_template_runtime::native_version() + } +} + +type ParachainExecutor = NativeElseWasmExecutor; + +type ParachainClient = TFullClient; + +type ParachainBackend = TFullBackend; + +type ParachainBlockImport = TParachainBlockImport, ParachainBackend>; + +/// Starts a `ServiceBuilder` for a full service. +/// +/// Use this macro if you don't actually need the full service, but just the builder in order to +/// be able to perform chain operations. +#[allow(clippy::type_complexity)] // Polkadot-SDK allows this as well +pub fn new_partial( + config: &Configuration, +) -> Result< + PartialComponents< + ParachainClient, + ParachainBackend, + (), + sc_consensus::DefaultImportQueue, + sc_transaction_pool::FullPool, + ( + ParachainBlockImport, + Option, + Option, + ), + >, + sc_service::Error, +> { + let telemetry = config + .telemetry_endpoints + .clone() + .filter(|x| !x.is_empty()) + .map(|endpoints| -> Result<_, sc_telemetry::Error> { + let worker = TelemetryWorker::new(16)?; + let telemetry = worker.handle().new_telemetry(endpoints); + Ok((worker, telemetry)) + }) + .transpose()?; + + let heap_pages = config + .default_heap_pages + .map_or(DEFAULT_HEAP_ALLOC_STRATEGY, |h| HeapAllocStrategy::Static { + extra_pages: h as _, + }); + + let wasm = WasmExecutor::builder() + .with_execution_method(config.wasm_method) + .with_onchain_heap_alloc_strategy(heap_pages) + .with_offchain_heap_alloc_strategy(heap_pages) + .with_max_runtime_instances(config.max_runtime_instances) + .with_runtime_cache_size(config.runtime_cache_size) + .build(); + + let executor = ParachainExecutor::new_with_wasm_executor(wasm); + + let backend = sc_service::new_db_backend(config.db_config())?; + let genesis_block_builder = TuxedoGenesisBlockBuilder::new( + config.chain_spec.as_storage_builder(), + !config.no_genesis(), + backend.clone(), + executor.clone(), + )?; + + let (client, backend, keystore_container, task_manager) = + sc_service::new_full_parts_with_genesis_builder::( + config, + telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), + executor, + backend, + genesis_block_builder, + )?; + let client = Arc::new(client); + + let telemetry_worker_handle = telemetry.as_ref().map(|(worker, _)| worker.handle()); + + let telemetry = telemetry.map(|(worker, telemetry)| { + task_manager + .spawn_handle() + .spawn("telemetry", None, worker.run()); + telemetry + }); + + let transaction_pool = sc_transaction_pool::BasicPool::new_full( + config.transaction_pool.clone(), + config.role.is_authority().into(), + config.prometheus_registry(), + task_manager.spawn_essential_handle(), + client.clone(), + ); + + let block_import = ParachainBlockImport::new(client.clone(), backend.clone()); + + let import_queue = build_import_queue( + client.clone(), + block_import.clone(), + config, + telemetry.as_ref().map(|telemetry| telemetry.handle()), + &task_manager, + )?; + + Ok(PartialComponents { + backend, + client, + import_queue, + keystore_container, + task_manager, + transaction_pool, + select_chain: (), + other: (block_import, telemetry, telemetry_worker_handle), + }) +} + +/// Start a node with the given parachain `Configuration` and relay chain `Configuration`. +/// +/// This is the actual implementation that is abstract over the executor and the runtime api. +#[sc_tracing::logging::prefix_logs_with("Parachain")] +async fn start_node_impl( + parachain_config: Configuration, + polkadot_config: Configuration, + collator_options: CollatorOptions, + para_id: ParaId, + hwbench: Option, +) -> sc_service::error::Result<(TaskManager, Arc)> { + let parachain_config = prepare_node_config(parachain_config); + + let params = new_partial(¶chain_config)?; + let (block_import, mut telemetry, telemetry_worker_handle) = params.other; + let net_config = sc_network::config::FullNetworkConfiguration::new(¶chain_config.network); + + let client = params.client.clone(); + let backend = params.backend.clone(); + let mut task_manager = params.task_manager; + + let (relay_chain_interface, collator_key) = build_relay_chain_interface( + polkadot_config, + ¶chain_config, + telemetry_worker_handle, + &mut task_manager, + collator_options.clone(), + hwbench.clone(), + ) + .await + .map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?; + + let validator = parachain_config.role.is_authority(); + let prometheus_registry = parachain_config.prometheus_registry().cloned(); + let transaction_pool = params.transaction_pool.clone(); + let import_queue_service = params.import_queue.service(); + + let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = + build_network(BuildNetworkParams { + parachain_config: ¶chain_config, + net_config, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + para_id, + spawn_handle: task_manager.spawn_handle(), + relay_chain_interface: relay_chain_interface.clone(), + import_queue: params.import_queue, + sybil_resistance_level: CollatorSybilResistance::Resistant, // because of Aura + }) + .await?; + + let rpc_builder = { + let client = client.clone(); + let transaction_pool = transaction_pool.clone(); + + Box::new(move |deny_unsafe, _| { + let deps = crate::rpc::FullDeps { + client: client.clone(), + pool: transaction_pool.clone(), + deny_unsafe, + }; + + crate::rpc::create_full(deps).map_err(Into::into) + }) + }; + + sc_service::spawn_tasks(sc_service::SpawnTasksParams { + rpc_builder, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + task_manager: &mut task_manager, + config: parachain_config, + keystore: params.keystore_container.keystore(), + backend, + network: network.clone(), + sync_service: sync_service.clone(), + system_rpc_tx, + tx_handler_controller, + telemetry: telemetry.as_mut(), + })?; + + let announce_block = { + let sync_service = sync_service.clone(); + Arc::new(move |hash, data| sync_service.announce_block(hash, data)) + }; + + let relay_chain_slot_duration = Duration::from_secs(6); + + let overseer_handle = relay_chain_interface + .overseer_handle() + .map_err(|e| sc_service::Error::Application(Box::new(e)))?; + + start_relay_chain_tasks(StartRelayChainTasksParams { + client: client.clone(), + announce_block: announce_block.clone(), + para_id, + relay_chain_interface: relay_chain_interface.clone(), + task_manager: &mut task_manager, + da_recovery_profile: if validator { + DARecoveryProfile::Collator + } else { + DARecoveryProfile::FullNode + }, + import_queue: import_queue_service, + relay_chain_slot_duration, + recovery_handle: Box::new(overseer_handle.clone()), + sync_service: sync_service.clone(), + })?; + + if validator { + start_consensus( + client.clone(), + block_import, + prometheus_registry.as_ref(), + telemetry.as_ref().map(|t| t.handle()), + &task_manager, + relay_chain_interface.clone(), + transaction_pool, + sync_service.clone(), + params.keystore_container.keystore(), + relay_chain_slot_duration, + para_id, + collator_key.expect("Command line arguments do not allow this. qed"), + overseer_handle, + announce_block, + )?; + } + + start_network.start_network(); + + Ok((task_manager, client)) +} + +/// Build the import queue for the parachain runtime. +fn build_import_queue( + client: Arc, + block_import: ParachainBlockImport, + config: &Configuration, + telemetry: Option, + task_manager: &TaskManager, +) -> Result, sc_service::Error> { + let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; + + Ok( + cumulus_client_consensus_aura::equivocation_import_queue::fully_verifying_import_queue::< + sp_consensus_aura::sr25519::AuthorityPair, + _, + _, + _, + _, + >( + client, + block_import, + move |_, _| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + Ok(timestamp) + }, + slot_duration, + &task_manager.spawn_essential_handle(), + config.prometheus_registry(), + telemetry, + ), + ) +} + +#[allow(clippy::too_many_arguments)] // Polkadot-SDK allows this as well +fn start_consensus( + client: Arc, + block_import: ParachainBlockImport, + prometheus_registry: Option<&Registry>, + telemetry: Option, + task_manager: &TaskManager, + relay_chain_interface: Arc, + transaction_pool: Arc>, + sync_oracle: Arc>, + keystore: KeystorePtr, + relay_chain_slot_duration: Duration, + para_id: ParaId, + collator_key: CollatorPair, + overseer_handle: OverseerHandle, + announce_block: Arc>) + Send + Sync>, +) -> Result<(), sc_service::Error> { + use cumulus_client_consensus_aura::collators::basic::{ + self as basic_aura, Params as BasicAuraParams, + }; + + // NOTE: because we use Aura here explicitly, we can use `CollatorSybilResistance::Resistant` + // when starting the network. + + let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; + + let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( + task_manager.spawn_handle(), + client.clone(), + transaction_pool, + prometheus_registry, + telemetry.clone(), + ); + + let proposer = Proposer::new(proposer_factory); + + let collator_service = CollatorService::new( + client.clone(), + Arc::new(task_manager.spawn_handle()), + announce_block, + client.clone(), + ); + let client_for_cidp = client.clone(); + + let params = BasicAuraParams { + create_inherent_data_providers: move |parent_hash, ()| { + let maybe_parent_block = client_for_cidp.clone().block(parent_hash); + + async move { + let parent_block = maybe_parent_block? + .ok_or(sp_blockchain::Error::UnknownBlock(parent_hash.to_string()))? + .block; + let parent_idp = + tuxedo_core::inherents::ParentBlockInherentDataProvider(parent_block); + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + // There is no slot IDP here. This intentionally differs from the sovereign node. + // See https://substrate.stackexchange.com/questions/10435/ + Ok((parent_idp, timestamp)) + } + }, + block_import, + para_client: client, + relay_client: relay_chain_interface, + sync_oracle, + keystore, + collator_key, + para_id, + overseer_handle, + slot_duration, + relay_chain_slot_duration, + proposer, + collator_service, + // Very limited proposal time. + authoring_duration: Duration::from_millis(500), + collation_request_receiver: None, + }; + + let fut = + basic_aura::run::( + params, + ); + task_manager + .spawn_essential_handle() + .spawn("aura", None, fut); + + Ok(()) +} + +/// Start a parachain node. +pub async fn start_parachain_node( + parachain_config: Configuration, + polkadot_config: Configuration, + collator_options: CollatorOptions, + para_id: ParaId, + hwbench: Option, +) -> sc_service::error::Result<(TaskManager, Arc)> { + start_node_impl( + parachain_config, + polkadot_config, + collator_options, + para_id, + hwbench, + ) + .await +} diff --git a/tuxedo-core/Cargo.toml b/tuxedo-core/Cargo.toml index d0019f76b..47b13e09d 100644 --- a/tuxedo-core/Cargo.toml +++ b/tuxedo-core/Cargo.toml @@ -1,5 +1,5 @@ [package] -description = "Core components that all Tuxedo runtimes will use." +description = "UTXO framework for Substrate and Polkadot." edition = "2021" license = "Apache-2.0" name = "tuxedo-core" @@ -14,9 +14,11 @@ parity-util-mem = { optional = true, workspace = true } scale-info = { features = [ "derive" ], workspace = true } serde = { features = [ "derive" ], workspace = true } +# Macros in Tuxedo Core aggregator = { path = "aggregator" } derive-no-bound = { path = "no_bound" } +# Substrate sp-api = { default_features = false, workspace = true } sp-core = { default_features = false, workspace = true } sp-debug-derive = { features = [ "force-debug" ], default_features = false, workspace = true } diff --git a/tuxedo-core/src/executive.rs b/tuxedo-core/src/executive.rs index a5181c753..aaec674c2 100644 --- a/tuxedo-core/src/executive.rs +++ b/tuxedo-core/src/executive.rs @@ -17,7 +17,6 @@ use crate::{ }; use log::debug; use parity_scale_codec::{Decode, Encode}; -use scale_info::TypeInfo; use sp_api::{BlockT, HashT, HeaderT, TransactionValidity}; use sp_core::H256; use sp_inherents::{CheckInherentsResult, InherentData}; @@ -36,11 +35,8 @@ use sp_std::{collections::btree_set::BTreeSet, vec::Vec}; /// in the proper generic types. pub struct Executive(PhantomData<(B, V, C)>); -impl< - B: BlockT>, - V: Verifier + TypeInfo, - C: ConstraintChecker + TypeInfo, - > Executive +impl>, V: Verifier, C: ConstraintChecker> + Executive { /// Does pool-style validation of a tuxedo transaction. /// Does not commit anything to storage. @@ -395,9 +391,15 @@ impl< } else { // TODO, we need a good way to map our UtxoError into the supposedly generic InvalidTransaction // https://paritytech.github.io/substrate/master/sp_runtime/transaction_validity/enum.InvalidTransaction.html - // For now, I just make them all custom zero - Self::validate_tuxedo_transaction(&tx) - .map_err(|_| TransactionValidityError::Invalid(InvalidTransaction::Custom(0))) + // For now, I just make them all custom zero, and log the error variant + Self::validate_tuxedo_transaction(&tx).map_err(|e| { + log::warn!( + target: LOG_TARGET, + "Tuxedo Transaction did not validate (in the pool): {:?}", + e, + ); + TransactionValidityError::Invalid(InvalidTransaction::Custom(0)) + }) }; debug!(target: LOG_TARGET, "Validation result: {:?}", r); @@ -405,7 +407,7 @@ impl< r } - // The last two are for the standard beginning-of-block inherent extrinsics. + // The next two are for the standard beginning-of-block inherent extrinsics. pub fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { debug!( target: LOG_TARGET, diff --git a/tuxedo-core/src/genesis.rs b/tuxedo-core/src/genesis.rs index 486c3ee75..72c879b88 100644 --- a/tuxedo-core/src/genesis.rs +++ b/tuxedo-core/src/genesis.rs @@ -3,7 +3,7 @@ use crate::{ ensure, types::{Output, OutputRef, Transaction}, - ConstraintChecker, Verifier, EXTRINSIC_KEY, + ConstraintChecker, Verifier, EXTRINSIC_KEY, LOG_TARGET, }; use parity_scale_codec::{Decode, Encode}; use sc_chain_spec::BuildGenesisBlock; @@ -93,6 +93,12 @@ impl<'a, Block: BlockT, B: Backend, E: RuntimeVersionOf + CodeExecutor> extrinsics, ); + log::debug!( + target: LOG_TARGET, + "About to finish build_genesis_block. The hash at this point is {:?}", + block.header().hash() + ); + Ok((block, op)) } } diff --git a/tuxedo-core/src/inherents.rs b/tuxedo-core/src/inherents.rs index 4c2896f42..69f4b90ee 100644 --- a/tuxedo-core/src/inherents.rs +++ b/tuxedo-core/src/inherents.rs @@ -30,13 +30,12 @@ //! that update environmental data), needs to include this foundational previous block inherent data provider //! so that the Tuxedo executive can scrape it to find the output references of the previous inherent transactions. -use parity_scale_codec::{Decode, Encode}; +use parity_scale_codec::Encode; use scale_info::TypeInfo; use sp_core::H256; use sp_inherents::{ CheckInherentsResult, InherentData, InherentIdentifier, IsFatalError, MakeFatalError, }; -use sp_runtime::traits::Block as BlockT; use sp_std::{vec, vec::Vec}; use crate::{types::Transaction, ConstraintChecker, Verifier}; @@ -59,7 +58,9 @@ impl sp_std::ops::Deref for ParentBlockInherentDataProvider { } #[cfg(feature = "std")] #[async_trait::async_trait] -impl sp_inherents::InherentDataProvider for ParentBlockInherentDataProvider { +impl sp_inherents::InherentDataProvider + for ParentBlockInherentDataProvider +{ async fn provide_inherent_data( &self, inherent_data: &mut InherentData, @@ -75,7 +76,7 @@ impl sp_inherents::InherentDataProvider for ParentBlockInherentDataPr if identifier == &PARENT_INHERENT_IDENTIFIER { println!("UH OH! INHERENT ERROR!!!!!!!!!!!!!!!!!!!!!!"); Some(Err(sp_inherents::Error::Application(Box::from( - String::decode(&mut &error[..]).ok()?, + ::decode(&mut &error[..]).ok()?, )))) } else { None diff --git a/tuxedo-core/src/lib.rs b/tuxedo-core/src/lib.rs index c17402e2b..d47125152 100644 --- a/tuxedo-core/src/lib.rs +++ b/tuxedo-core/src/lib.rs @@ -3,7 +3,6 @@ //! All Tuxedo runtimes will use this machinery and plug in their specific //! Tuxedo piece(s) -// TODO Maybe this doesn't even need to be conditional. Just always build to no_std. #![cfg_attr(not(feature = "std"), no_std)] pub mod dynamic_typing; diff --git a/tuxedo-core/src/types.rs b/tuxedo-core/src/types.rs index 6dc781be9..b2c99def7 100644 --- a/tuxedo-core/src/types.rs +++ b/tuxedo-core/src/types.rs @@ -60,7 +60,7 @@ impl Transaction { // Manually implement Encode and Decode for the Transaction type // so that its encoding is the same as an opaque Vec. -impl Encode for Transaction { +impl Encode for Transaction { fn encode_to(&self, dest: &mut T) { let inputs = self.inputs.encode(); let peeks = self.peeks.encode(); @@ -78,7 +78,7 @@ impl Encode for Transaction { } } -impl Decode for Transaction { +impl Decode for Transaction { fn decode( input: &mut I, ) -> Result { diff --git a/tuxedo-parachain-core/Cargo.toml b/tuxedo-parachain-core/Cargo.toml new file mode 100644 index 000000000..d59940d40 --- /dev/null +++ b/tuxedo-parachain-core/Cargo.toml @@ -0,0 +1,71 @@ +[package] +description = "Tuxedo extensions to provide Polkadot parachain support." +edition = "2021" +license = "Apache-2.0" +name = "tuxedo-parachain-core" +repository = "https://github.com/Off-Narrative-Labs/Tuxedo" +version = "1.0.0-dev" + +[dependencies] +async-trait = { optional = true, workspace = true } +log = { workspace = true } +parity-scale-codec = { features = [ "derive" ], workspace = true } +parity-util-mem = { optional = true, workspace = true } +scale-info = { features = [ "derive" ], workspace = true } +serde = { features = [ "derive" ], workspace = true } + +# Local +tuxedo-core = { default-features = false, path = "../tuxedo-core" } +tuxedo-register-validate-block = { default_features = false, path = "register_validate_block" } + +# Substrate +sp-api = { default_features = false, workspace = true } +sp-core = { default_features = false, workspace = true } +sp-debug-derive = { features = [ "force-debug" ], default_features = false, workspace = true } +sp-inherents = { default_features = false, workspace = true } +sp-io = { features = [ "with-tracing" ], default_features = false, workspace = true } +sp-runtime = { default_features = false, workspace = true } +sp-std = { default_features = false, workspace = true } + +# Polkadot / Cumulus +bytes = { version = "1.4.0", default_features = false } +cumulus-primitives-core = { default_features = false, workspace = true } +cumulus-primitives-parachain-inherent = { default_features = false, workspace = true } +polkadot-parachain-primitives = { features = [ "wasm-api" ], default_features = false, workspace = true } +sp-externalities = { default_features = false, workspace = true } +sp-state-machine = { default_features = false, workspace = true } +sp-trie = { default_features = false, workspace = true } +trie-db = { default_features = false, workspace = true } + +[dev-dependencies] +array-bytes = { workspace = true } +cumulus-test-client = { workspace = true } +cumulus-test-relay-sproof-builder = { workspace = true } +sp-keyring = { workspace = true } +sp-tracing = { workspace = true } + + +[features] +default = [ "std" ] +std = [ + "async-trait", + "cumulus-primitives-core/std", + "cumulus-primitives-parachain-inherent/std", + "serde/std", + "sp-api/std", + "sp-core/std", + "sp-debug-derive/std", + "sp-externalities/std", + "sp-inherents/std", + "sp-io/std", + "sp-runtime/std", + "sp-state-machine/std", + "sp-std/std", + "sp-trie/std", + "parity-scale-codec/std", + "parity-util-mem", + "polkadot-parachain-primitives/std", + "trie-db/std", + "tuxedo-core/std", + "tuxedo-register-validate-block/std", +] diff --git a/tuxedo-parachain-core/register_validate_block/Cargo.toml b/tuxedo-parachain-core/register_validate_block/Cargo.toml new file mode 100644 index 000000000..aba2b56b7 --- /dev/null +++ b/tuxedo-parachain-core/register_validate_block/Cargo.toml @@ -0,0 +1,18 @@ +[package] +description = "Proc macro to register Polkadot's validate_block entrypoint in your Tuxedo Runtime. Inspired by cumulus-pallet-parachain-system-proc-macro" +edition = "2021" +name = "tuxedo-register-validate-block" +version = "0.1.0" + +[dependencies] +proc-macro-crate = "1.3.1" +proc-macro2 = "1.0.64" +quote = "1.0.33" +syn = "2.0.38" + +[features] +default = [ "std" ] +std = [] + +[lib] +proc-macro = true diff --git a/tuxedo-parachain-core/register_validate_block/src/lib.rs b/tuxedo-parachain-core/register_validate_block/src/lib.rs new file mode 100644 index 000000000..4820cf4bc --- /dev/null +++ b/tuxedo-parachain-core/register_validate_block/src/lib.rs @@ -0,0 +1,131 @@ +//! This macro is copied from cumulus-pallet-parachain-system-proc-macro crate +//! and modified slightly to fit Tuxedo's needs. + +use proc_macro2::Span; +use proc_macro_crate::{crate_name, FoundCrate}; +use syn::{ + parse::{Parse, ParseStream}, + Error, Ident, Token, +}; + +/// Provides an identifier that is a safe way to refer to the crate tuxedo_core within the macro +fn crate_() -> Result { + match crate_name("tuxedo-parachain-core") { + Ok(FoundCrate::Itself) => Ok(syn::Ident::new("tuxedo_parachain_core", Span::call_site())), + Ok(FoundCrate::Name(name)) => Ok(Ident::new(&name, Span::call_site())), + Err(e) => Err(Error::new(Span::call_site(), e)), + } +} + +struct RegisterValidateBlockInput { + pub block: Ident, + _comma1: Token![,], + pub verifier: Ident, + _comma2: Token![,], + pub constraint_checker: Ident, +} + +impl Parse for RegisterValidateBlockInput { + fn parse(input: ParseStream) -> syn::Result { + let parsed = Self { + block: input.parse()?, + _comma1: input.parse()?, + verifier: input.parse()?, + _comma2: input.parse()?, + constraint_checker: input.parse()?, + }; + + if !input.is_empty() { + return Err(Error::new( + input.span(), + "Expected exactly three parameters: Block, Verifier, ConstraintChecker.", + )); + } + + Ok(parsed) + } +} + +#[proc_macro] +pub fn register_validate_block(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + // Extract the paths to the parts from the runtime developer's input + // I will likely need to revise or simplify the fields that are passed in. + // I hope to only use the exposed runtime APIs here, not some custom trait impls. (if possible) + let input: RegisterValidateBlockInput = match syn::parse(input) { + Ok(t) => t, + Err(e) => return e.into_compile_error().into(), + }; + + let block = input.block.clone(); + let verifier = input.verifier.clone(); + let constraint_checker = input.constraint_checker.clone(); + + // A way to refer to the tuxedo_parachain_core crate from within the macro. + let crate_ = match crate_() { + Ok(c) => c, + Err(e) => return e.into_compile_error().into(), + }; + + //TODO We need to check inherents. At least the timestamp one, and maybe also the parachain one? + // https://github.com/Off-Narrative-Labs/Tuxedo/issues/144 + // But I think the parachain one is handled already. + // To start the hack, we will just not check them at all. Fewer places to panic XD + // let check_inherents = match check_inherents { + // Some(_check_inherents) => { + // quote::quote! { #_check_inherents } + // }, + // None => { + // quote::quote! { + // #crate_::DummyCheckInherents<<#runtime as #crate_::validate_block::GetRuntimeBlockType>::RuntimeBlock> + // } + // }, + // }; + + if cfg!(not(feature = "std")) { + quote::quote! { + #[doc(hidden)] + mod parachain_validate_block { + use super::*; + + #[no_mangle] + unsafe fn validate_block(arguments: *mut u8, arguments_len: usize) -> u64 { + // There is some complex low-level shared-memory stuff implemented here. + // It is basically a wrapper around the validate block implementation + // that handles extracting params and returning results via shared memory. + + // Setp 1. Extract the arguments from shared memory + + // We convert the `arguments` into a boxed slice and then into `Bytes`. + let args = #crate_::sp_std::boxed::Box::from_raw( + #crate_::sp_std::slice::from_raw_parts_mut( + arguments, + arguments_len, + ) + ); + let args = #crate_::bytes::Bytes::from(args); + + // Then we decode from these bytes the `MemoryOptimizedValidationParams`. + let params = #crate_::decode_from_bytes::< + #crate_::MemoryOptimizedValidationParams + >(args).expect("Invalid arguments to `validate_block`."); + + // Step 2: Call the actual validate_block implementation + let res = #crate_::validate_block::validate_block::< + #block, + #verifier, + #constraint_checker, + >(params); + + // Step 3: Write the return value back into the shared memory + let return_pointer = #crate_::polkadot_parachain_primitives::write_result(&res); + + return_pointer + } + } + } + } else { + // If we are building to std, we don't include this validate_block entry point at all + quote::quote!() + } + .into() +} diff --git a/tuxedo-parachain-core/src/collation_api.rs b/tuxedo-parachain-core/src/collation_api.rs new file mode 100644 index 000000000..330c569ca --- /dev/null +++ b/tuxedo-parachain-core/src/collation_api.rs @@ -0,0 +1,41 @@ +//! Tuxedo's implementation of the CollectCollationInfoApi. +//! It is pretty basic and just returns the encoded ehader along with some empty data. +//! It will get more complex and interesting when we start to support XCM or parachain runtime upgrades. + +use cumulus_primitives_core::{relay_chain::HeadData, CollationInfo}; +use parity_scale_codec::Encode; +use sp_api::BlockT; +use sp_std::vec::Vec; +use tuxedo_core::Executive; + +use crate::{GetRelayParentNumberStorage, RelayParentNumberStorage}; + +/// An extension trait that allows us to implement more methods on tuxedo-core's executive. +pub trait ParachainExecutiveExtension

{ + fn collect_collation_info(header: &Header) -> cumulus_primitives_core::CollationInfo; +} + +impl ParachainExecutiveExtension for Executive { + fn collect_collation_info(header: &B::Header) -> cumulus_primitives_core::CollationInfo { + // The implementation here is simple. Most of the fields are related to xcm and parachain runtime upgrades, + // neither or which are supported in the PoC, so they are left blank. + + // Get the relay parent number out of storage so we can advance the hrmp watermark + let hrmp_watermark = RelayParentNumberStorage::get(); + + // The final field allows us to specify head data. We will do the boring / standard / default / original + // thing which is to just directly encode the block header. + // The cumulus collator and FRAME pallets allow for custom head data, which seems to be motivated only + // by the solo to para migration path, so I will put that all off as well. For more details see + // https://github.com/paritytech/cumulus/pull/825 and https://github.com/paritytech/cumulus/pull/882 + // and https://substrate.stackexchange.com/q/10522/372 + CollationInfo { + upward_messages: Vec::new(), + horizontal_messages: Vec::new(), + new_validation_code: None, + processed_downward_messages: 0, + hrmp_watermark, + head_data: HeadData(header.encode()), + } + } +} diff --git a/tuxedo-parachain-core/src/lib.rs b/tuxedo-parachain-core/src/lib.rs new file mode 100644 index 000000000..47b267f90 --- /dev/null +++ b/tuxedo-parachain-core/src/lib.rs @@ -0,0 +1,159 @@ +//! This module is the core of Tuxedo's parachain support. +//! +//! The types and methods defined in this crate are of equal importance to +//! those in the `tuxedo-core` crate, and this crate should be considered +//! a simple extension to that one and equally "core"y. The reason Tuxedo +//! separates the parachain specific aspects is because Polkadot and Cumulus +//! are quite heavy to compile, and sovereign chains are able to completely avoid it. +//! +//! It's primary jobs are to +//! * Manage transiet storage details for the parachain inherent, specifically the relay +//! parent block number. +//! * Provide collation information to the client side collator service. +//! * Implement the `validate_block` funtion required by relay chain validators. +//! This task is achieved through the `register_validate_block!` macro. +//! +//! This code is inspired by, cumulus pallet parachain system +//! https://paritytech.github.io/polkadot-sdk/master/cumulus_pallet_parachain_system/index.html + +#![cfg_attr(not(feature = "std"), no_std)] + +#[cfg(test)] +mod tests; +#[cfg(not(feature = "std"))] +#[doc(hidden)] +pub mod validate_block; + +mod collation_api; +mod relay_state_snapshot; +pub use collation_api::ParachainExecutiveExtension; +use parity_scale_codec::{Decode, Encode}; + +#[cfg(not(feature = "std"))] +#[doc(hidden)] +mod trie_cache; + +#[cfg(not(feature = "std"))] +#[doc(hidden)] +pub use bytes; +#[cfg(not(feature = "std"))] +#[doc(hidden)] +pub use parity_scale_codec::decode_from_bytes; +#[cfg(not(feature = "std"))] +#[doc(hidden)] +pub use polkadot_parachain_primitives; +#[cfg(not(feature = "std"))] +#[doc(hidden)] +pub use sp_runtime::traits::GetRuntimeBlockType; +#[cfg(not(feature = "std"))] +#[doc(hidden)] +pub use sp_std; + +/// Re-export of the Tuxedo-core crate. This allows parachain-specific +/// Tuxedo-pieces to depend only on tuxedo-parachain-core without worrying about +/// accidental version mismatches. +pub use tuxedo_core; + +use cumulus_primitives_parachain_inherent::ParachainInherentData; +use tuxedo_core::{ + dynamic_typing::UtxoData, + support_macros::{CloneNoBound, DebugNoBound}, +}; + +/// A transient storage key that will hold the block number of the relay chain parent +/// that is associated with the current parachain block. This data enters the parachain +/// through the parachain inherent +const RELAY_PARENT_NUMBER_KEY: &[u8] = b"relay_parent_number"; + +/// An abstraction over reading the ambiently available relay parent block number. +/// This allows it to be mocked during tests and not require actual externalities. +pub trait GetRelayParentNumberStorage { + fn get() -> u32; +} + +/// An abstraction over setting the ambiently available relay parent block number. +/// This allows it to be mocked during tests and require actual externalities. +pub trait SetRelayParentNumberStorage { + fn set(new_parent_number: u32); +} + +/// A public interface for accessing and mutating the relay parent number. This is +/// expected to be called from the parachain piece +pub enum RelayParentNumberStorage {} + +impl GetRelayParentNumberStorage for RelayParentNumberStorage { + fn get() -> u32 { + let encoded = sp_io::storage::get(RELAY_PARENT_NUMBER_KEY) + .expect("Some relay parent number should always be stored"); + Decode::decode(&mut &encoded[..]) + .expect("properly encoded relay parent number should have been stored.") + } +} + +impl SetRelayParentNumberStorage for RelayParentNumberStorage { + fn set(new_parent_number: u32) { + sp_io::storage::set(RELAY_PARENT_NUMBER_KEY, &new_parent_number.encode()); + } +} + +/// A mock version of the RelayParentNumberStorage that can be used in tests without externalities. +pub enum MockRelayParentNumberStorage {} + +impl SetRelayParentNumberStorage for MockRelayParentNumberStorage { + fn set(_new_parent_number: u32) {} +} + +/// Basically the same as +/// [`ValidationParams`](polkadot_parachain_primitives::primitives::ValidationParams), but a little +/// bit optimized for our use case here. +/// +/// `block_data` and `head_data` are represented as [`bytes::Bytes`] to make them reuse +/// the memory of the input parameter of the exported `validate_blocks` function. +/// +/// The layout of this type must match exactly the layout of +/// [`ValidationParams`](polkadot_parachain_primitives::primitives::ValidationParams) to have the +/// same SCALE encoding. +#[derive(parity_scale_codec::Decode)] +#[cfg_attr(feature = "std", derive(parity_scale_codec::Encode))] +#[doc(hidden)] +pub struct MemoryOptimizedValidationParams { + pub parent_head: bytes::Bytes, + pub block_data: bytes::Bytes, + pub relay_parent_number: cumulus_primitives_core::relay_chain::BlockNumber, + pub relay_parent_storage_root: cumulus_primitives_core::relay_chain::Hash, +} + +/// Register the `validate_block` function that is used by parachains to validate blocks on a +/// validator. +/// +/// Does *nothing* when `std` feature is enabled. +/// +/// Expects as parameters the Block type, the OuterVerifier, and the OuterConstraintChecker. +pub use tuxedo_register_validate_block::register_validate_block; + +// Having to do this wrapping is one more reason to abandon this UtxoData trait, +// and go for a more strongly typed aggregate type approach. +// Tracking issue: https://github.com/Off-Narrative-Labs/Tuxedo/issues/153 +/// A wrapper type around Cumulus's ParachainInherentData type that can be stored. +#[derive(Encode, Decode, DebugNoBound, CloneNoBound, scale_info::TypeInfo)] + +/// A wrapper type around Cumulus's ParachainInherentData type. +/// This type is convertable Into and From the inner type. +/// This is necessary so that we can implement the `UtxoData` trait. +pub struct ParachainInherentDataUtxo(ParachainInherentData); + +impl UtxoData for ParachainInherentDataUtxo { + const TYPE_ID: [u8; 4] = *b"para"; +} + +impl From for ParachainInherentData { + fn from(val: ParachainInherentDataUtxo) -> Self { + val.0 + } +} + +impl From for ParachainInherentDataUtxo { + fn from(value: ParachainInherentData) -> Self { + Self(value) + } +} diff --git a/tuxedo-parachain-core/src/relay_state_snapshot.rs b/tuxedo-parachain-core/src/relay_state_snapshot.rs new file mode 100644 index 000000000..18fe6c97a --- /dev/null +++ b/tuxedo-parachain-core/src/relay_state_snapshot.rs @@ -0,0 +1,395 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Cumulus is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Cumulus. If not, see . + +//! Relay chain state proof provides means for accessing part of relay chain storage for reads. +//! This is copied entirely from Cumulus. Some of it will liekly be removed in the future, and +//! perhaps some added as well. +//! +//! For now it is mostly unused and is kept here in preparation for a fully secure validate_block +//! implementation and XCM support. + +// These warnings should be unsuppressed after validate_block is complete and XCM is working. +// FIXME https://github.com/Off-Narrative-Labs/Tuxedo/issues/149 +#![allow(dead_code)] + +use cumulus_primitives_core::{ + relay_chain, AbridgedHostConfiguration, AbridgedHrmpChannel, ParaId, +}; +use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; +use sp_runtime::traits::HashingFor; +use sp_state_machine::{Backend, TrieBackend, TrieBackendBuilder}; +use sp_std::vec::Vec; +use sp_trie::{HashDBT, MemoryDB, StorageProof, EMPTY_PREFIX}; + +/// The capacity of the upward message queue of a parachain on the relay chain. +// The field order should stay the same as the data can be found in the proof to ensure both are +// have the same encoded representation. +#[derive(Clone, Encode, Decode, TypeInfo, Default)] +pub struct RelayDispatchQueueRemainingCapacity { + /// The number of additional messages that can be enqueued. + pub remaining_count: u32, + /// The total size of additional messages that can be enqueued. + pub remaining_size: u32, +} + +/// A snapshot of some messaging related state of relay chain pertaining to the current parachain. +/// +/// This data is essential for making sure that the parachain is aware of current resource use on +/// the relay chain and that the candidates produced for this parachain do not exceed any of these +/// limits. +#[derive(Clone, Encode, Decode, TypeInfo)] +pub struct MessagingStateSnapshot { + /// The current message queue chain head for downward message queue. + /// + /// If the value is absent on the relay chain this will be set to all zeros. + pub dmq_mqc_head: relay_chain::Hash, + + /// The current capacity of the upward message queue of the current parachain on the relay + /// chain. + pub relay_dispatch_queue_remaining_capacity: RelayDispatchQueueRemainingCapacity, + + /// Information about all the inbound HRMP channels. + /// + /// These are structured as a list of tuples. The para id in the tuple specifies the sender + /// of the channel. Obviously, the recipient is the current parachain. + /// + /// The channels are sorted by the sender para id ascension. + pub ingress_channels: Vec<(ParaId, AbridgedHrmpChannel)>, + + /// Information about all the outbound HRMP channels. + /// + /// These are structured as a list of tuples. The para id in the tuple specifies the recipient + /// of the channel. Obviously, the sender is the current parachain. + /// + /// The channels are sorted by the recipient para id ascension. + pub egress_channels: Vec<(ParaId, AbridgedHrmpChannel)>, +} + +#[derive(Debug)] +pub enum Error { + /// The provided proof was created against unexpected storage root. + RootMismatch, + /// The entry cannot be read. + ReadEntry(ReadEntryErr), + /// The optional entry cannot be read. + ReadOptionalEntry(ReadEntryErr), + /// The slot cannot be extracted. + Slot(ReadEntryErr), + /// The upgrade go-ahead signal cannot be read. + UpgradeGoAhead(ReadEntryErr), + /// The upgrade restriction signal cannot be read. + UpgradeRestriction(ReadEntryErr), + /// The host configuration cannot be extracted. + Config(ReadEntryErr), + /// The DMQ MQC head cannot be extracted. + DmqMqcHead(ReadEntryErr), + /// Relay dispatch queue cannot be extracted. + RelayDispatchQueueRemainingCapacity(ReadEntryErr), + /// The hrmp inress channel index cannot be extracted. + HrmpIngressChannelIndex(ReadEntryErr), + /// The hrmp egress channel index cannot be extracted. + HrmpEgressChannelIndex(ReadEntryErr), + /// The channel identified by the sender and receiver cannot be extracted. + HrmpChannel(ParaId, ParaId, ReadEntryErr), + /// The latest included parachain head cannot be extracted. + ParaHead(ReadEntryErr), +} + +#[derive(Debug)] +pub enum ReadEntryErr { + /// The value cannot be extracted from the proof. + Proof, + /// The value cannot be decoded. + Decode, + /// The value is expected to be present on the relay chain, but it doesn't exist. + Absent, +} + +/// Read an entry given by the key and try to decode it. If the value specified by the key according +/// to the proof is empty, the `fallback` value will be returned. +/// +/// Returns `Err` in case the backend can't return the value under the specific key (likely due to +/// a malformed proof), in case the decoding fails, or in case where the value is empty in the relay +/// chain state and no fallback was provided. +fn read_entry(backend: &B, key: &[u8], fallback: Option) -> Result +where + T: Decode, + B: Backend>, +{ + backend + .storage(key) + .map_err(|_| ReadEntryErr::Proof)? + .map(|raw_entry| T::decode(&mut &raw_entry[..]).map_err(|_| ReadEntryErr::Decode)) + .transpose()? + .or(fallback) + .ok_or(ReadEntryErr::Absent) +} + +/// Read an optional entry given by the key and try to decode it. +/// Returns `None` if the value specified by the key according to the proof is empty. +/// +/// Returns `Err` in case the backend can't return the value under the specific key (likely due to +/// a malformed proof) or if the value couldn't be decoded. +fn read_optional_entry(backend: &B, key: &[u8]) -> Result, ReadEntryErr> +where + T: Decode, + B: Backend>, +{ + match read_entry(backend, key, None) { + Ok(v) => Ok(Some(v)), + Err(ReadEntryErr::Absent) => Ok(None), + Err(err) => Err(err), + } +} + +/// A state proof extracted from the relay chain. +/// +/// This state proof is extracted from the relay chain block we are building on top of. +pub struct RelayChainStateProof { + para_id: ParaId, + trie_backend: + TrieBackend>, HashingFor>, +} + +impl RelayChainStateProof { + /// Create a new instance of `Self`. + /// + /// Returns an error if the given `relay_parent_storage_root` is not the root of the given + /// `proof`. + pub fn new( + para_id: ParaId, + relay_parent_storage_root: relay_chain::Hash, + proof: StorageProof, + ) -> Result { + let db = proof.into_memory_db::>(); + if !db.contains(&relay_parent_storage_root, EMPTY_PREFIX) { + return Err(Error::RootMismatch); + } + let trie_backend = TrieBackendBuilder::new(db, relay_parent_storage_root).build(); + + Ok(Self { + para_id, + trie_backend, + }) + } + + /// Read the [`MessagingStateSnapshot`] from the relay chain state proof. + /// + /// Returns an error if anything failed at reading or decoding. + pub fn read_messaging_state_snapshot( + &self, + host_config: &AbridgedHostConfiguration, + ) -> Result { + let dmq_mqc_head: relay_chain::Hash = read_entry( + &self.trie_backend, + &relay_chain::well_known_keys::dmq_mqc_head(self.para_id), + Some(Default::default()), + ) + .map_err(Error::DmqMqcHead)?; + + let relay_dispatch_queue_remaining_capacity = read_optional_entry::< + RelayDispatchQueueRemainingCapacity, + _, + >( + &self.trie_backend, + &relay_chain::well_known_keys::relay_dispatch_queue_remaining_capacity(self.para_id) + .key, + ); + + // TODO paritytech/polkadot#6283: Remove all usages of `relay_dispatch_queue_size` + // + // When the relay chain and all parachains support + // `relay_dispatch_queue_remaining_capacity`, this code here needs to be removed and above + // needs to be changed to `read_entry` that returns an error if + // `relay_dispatch_queue_remaining_capacity` can not be found/decoded. + // + // For now we just fallback to the old dispatch queue size on `ReadEntryErr::Absent`. + // `ReadEntryErr::Decode` and `ReadEntryErr::Proof` are potentially subject to meddling + // by malicious collators, so we reject the block in those cases. + let relay_dispatch_queue_remaining_capacity = match relay_dispatch_queue_remaining_capacity + { + Ok(Some(r)) => r, + Ok(None) => { + let res = read_entry::<(u32, u32), _>( + &self.trie_backend, + #[allow(deprecated)] + &relay_chain::well_known_keys::relay_dispatch_queue_size(self.para_id), + Some((0, 0)), + ) + .map_err(Error::RelayDispatchQueueRemainingCapacity)?; + + let remaining_count = host_config.max_upward_queue_count.saturating_sub(res.0); + let remaining_size = host_config.max_upward_queue_size.saturating_sub(res.1); + RelayDispatchQueueRemainingCapacity { + remaining_count, + remaining_size, + } + } + Err(e) => return Err(Error::RelayDispatchQueueRemainingCapacity(e)), + }; + + let ingress_channel_index: Vec = read_entry( + &self.trie_backend, + &relay_chain::well_known_keys::hrmp_ingress_channel_index(self.para_id), + Some(Vec::new()), + ) + .map_err(Error::HrmpIngressChannelIndex)?; + + let egress_channel_index: Vec = read_entry( + &self.trie_backend, + &relay_chain::well_known_keys::hrmp_egress_channel_index(self.para_id), + Some(Vec::new()), + ) + .map_err(Error::HrmpEgressChannelIndex)?; + + let mut ingress_channels = Vec::with_capacity(ingress_channel_index.len()); + for sender in ingress_channel_index { + let channel_id = relay_chain::HrmpChannelId { + sender, + recipient: self.para_id, + }; + let hrmp_channel: AbridgedHrmpChannel = read_entry( + &self.trie_backend, + &relay_chain::well_known_keys::hrmp_channels(channel_id), + None, + ) + .map_err(|read_err| Error::HrmpChannel(sender, self.para_id, read_err))?; + ingress_channels.push((sender, hrmp_channel)); + } + + let mut egress_channels = Vec::with_capacity(egress_channel_index.len()); + for recipient in egress_channel_index { + let channel_id = relay_chain::HrmpChannelId { + sender: self.para_id, + recipient, + }; + let hrmp_channel: AbridgedHrmpChannel = read_entry( + &self.trie_backend, + &relay_chain::well_known_keys::hrmp_channels(channel_id), + None, + ) + .map_err(|read_err| Error::HrmpChannel(self.para_id, recipient, read_err))?; + egress_channels.push((recipient, hrmp_channel)); + } + + // NOTE that ingress_channels and egress_channels promise to be sorted. We satisfy this + // property by relying on the fact that `ingress_channel_index` and `egress_channel_index` + // are themselves sorted. + Ok(MessagingStateSnapshot { + dmq_mqc_head, + relay_dispatch_queue_remaining_capacity, + ingress_channels, + egress_channels, + }) + } + + /// Read the [`AbridgedHostConfiguration`] from the relay chain state proof. + /// + /// Returns an error if anything failed at reading or decoding. + pub fn read_abridged_host_configuration(&self) -> Result { + read_entry( + &self.trie_backend, + relay_chain::well_known_keys::ACTIVE_CONFIG, + None, + ) + .map_err(Error::Config) + } + + /// Read latest included parachain [head data](`relay_chain::HeadData`) from the relay chain + /// state proof. + /// + /// Returns an error if anything failed at reading or decoding. + pub fn read_included_para_head(&self) -> Result { + read_entry( + &self.trie_backend, + &relay_chain::well_known_keys::para_head(self.para_id), + None, + ) + .map_err(Error::ParaHead) + } + + /// Read the [`Slot`](relay_chain::Slot) from the relay chain state proof. + /// + /// The slot is slot of the relay chain block this state proof was extracted from. + /// + /// Returns an error if anything failed at reading or decoding. + pub fn read_slot(&self) -> Result { + read_entry( + &self.trie_backend, + relay_chain::well_known_keys::CURRENT_SLOT, + None, + ) + .map_err(Error::Slot) + } + + /// Read the go-ahead signal for the upgrade from the relay chain state proof. + /// + /// The go-ahead specifies whether the parachain can apply the upgrade or should abort it. If + /// the value is absent then there is either no judgment by the relay chain yet or no upgrade + /// is pending. + /// + /// Returns an error if anything failed at reading or decoding. + pub fn read_upgrade_go_ahead_signal( + &self, + ) -> Result, Error> { + read_optional_entry( + &self.trie_backend, + &relay_chain::well_known_keys::upgrade_go_ahead_signal(self.para_id), + ) + .map_err(Error::UpgradeGoAhead) + } + + /// Read the upgrade restriction signal for the upgrade from the relay chain state proof. + /// + /// If the upgrade restriction is not `None`, then the parachain cannot signal an upgrade at + /// this block. + /// + /// Returns an error if anything failed at reading or decoding. + pub fn read_upgrade_restriction_signal( + &self, + ) -> Result, Error> { + read_optional_entry( + &self.trie_backend, + &relay_chain::well_known_keys::upgrade_restriction_signal(self.para_id), + ) + .map_err(Error::UpgradeRestriction) + } + + /// Read an entry given by the key and try to decode it. If the value specified by the key + /// according to the proof is empty, the `fallback` value will be returned. + /// + /// Returns `Err` in case the backend can't return the value under the specific key (likely due + /// to a malformed proof), in case the decoding fails, or in case where the value is empty in + /// the relay chain state and no fallback was provided. + pub fn read_entry(&self, key: &[u8], fallback: Option) -> Result + where + T: Decode, + { + read_entry(&self.trie_backend, key, fallback).map_err(Error::ReadEntry) + } + + /// Read an optional entry given by the key and try to decode it. + /// + /// Returns `Err` in case the backend can't return the value under the specific key (likely due + /// to a malformed proof) or if the value couldn't be decoded. + pub fn read_optional_entry(&self, key: &[u8]) -> Result, Error> + where + T: Decode, + { + read_optional_entry(&self.trie_backend, key).map_err(Error::ReadOptionalEntry) + } +} diff --git a/tuxedo-parachain-core/src/tests.rs b/tuxedo-parachain-core/src/tests.rs new file mode 100644 index 000000000..aa782c9d9 --- /dev/null +++ b/tuxedo-parachain-core/src/tests.rs @@ -0,0 +1,313 @@ +use cumulus_primitives_core::{ParachainBlockData, PersistedValidationData}; +use cumulus_test_client::{ + generate_extrinsic, + runtime::{ + self as test_runtime, Block, Hash, Header, TestPalletCall, UncheckedExtrinsic, WASM_BINARY, + }, + transfer, BlockData, BuildParachainBlockData, Client, DefaultTestClientBuilderExt, HeadData, + InitBlockBuilder, TestClientBuilder, TestClientBuilderExt, ValidationParams, +}; +use cumulus_test_relay_sproof_builder::RelayStateSproofBuilder; +use parity_scale_codec::{Decode, DecodeAll, Encode}; +use sp_keyring::AccountKeyring::*; +use sp_runtime::traits::Header as HeaderT; +use std::{env, process::Command}; + +use crate::MemoryOptimizedValidationParams; + +fn call_validate_block_encoded_header( + parent_head: Header, + block_data: ParachainBlockData, + relay_parent_storage_root: Hash, +) -> cumulus_test_client::ExecutorResult> { + cumulus_test_client::validate_block( + ValidationParams { + block_data: BlockData(block_data.encode()), + parent_head: HeadData(parent_head.encode()), + relay_parent_number: 1, + relay_parent_storage_root, + }, + WASM_BINARY.expect("You need to build the WASM binaries to run the tests!"), + ) + .map(|v| v.head_data.0) +} + +fn call_validate_block( + parent_head: Header, + block_data: ParachainBlockData, + relay_parent_storage_root: Hash, +) -> cumulus_test_client::ExecutorResult
{ + call_validate_block_encoded_header(parent_head, block_data, relay_parent_storage_root) + .map(|v| Header::decode(&mut &v[..]).expect("Decodes `Header`.")) +} + +fn create_test_client() -> (Client, Header) { + let client = TestClientBuilder::new().build(); + + let genesis_header = client + .header(client.chain_info().genesis_hash) + .ok() + .flatten() + .expect("Genesis header exists; qed"); + + (client, genesis_header) +} + +struct TestBlockData { + block: ParachainBlockData, + validation_data: PersistedValidationData, +} + +fn build_block_with_witness( + client: &Client, + extra_extrinsics: Vec, + parent_head: Header, + mut sproof_builder: RelayStateSproofBuilder, +) -> TestBlockData { + sproof_builder.para_id = test_runtime::PARACHAIN_ID.into(); + sproof_builder.included_para_head = Some(HeadData(parent_head.encode())); + let (relay_parent_storage_root, _) = sproof_builder.clone().into_state_root_and_proof(); + let mut validation_data = PersistedValidationData { + relay_parent_number: 1, + parent_head: parent_head.encode().into(), + ..Default::default() + }; + let mut builder = client.init_block_builder(Some(validation_data.clone()), sproof_builder); + + validation_data.relay_parent_storage_root = relay_parent_storage_root; + + extra_extrinsics + .into_iter() + .for_each(|e| builder.push(e).unwrap()); + + let block = builder.build_parachain_block(*parent_head.state_root()); + + TestBlockData { + block, + validation_data, + } +} + +#[test] +fn validate_block_no_extra_extrinsics() { + sp_tracing::try_init_simple(); + + let (client, parent_head) = create_test_client(); + let TestBlockData { + block, + validation_data, + } = build_block_with_witness(&client, Vec::new(), parent_head.clone(), Default::default()); + let header = block.header().clone(); + + let res_header = call_validate_block( + parent_head, + block, + validation_data.relay_parent_storage_root, + ) + .expect("Calls `validate_block`"); + assert_eq!(header, res_header); +} + +#[test] +fn validate_block_with_extra_extrinsics() { + sp_tracing::try_init_simple(); + + let (client, parent_head) = create_test_client(); + let extra_extrinsics = vec![ + transfer(&client, Alice, Bob, 69), + transfer(&client, Bob, Charlie, 100), + transfer(&client, Charlie, Alice, 500), + ]; + + let TestBlockData { + block, + validation_data, + } = build_block_with_witness( + &client, + extra_extrinsics, + parent_head.clone(), + Default::default(), + ); + let header = block.header().clone(); + + let res_header = call_validate_block( + parent_head, + block, + validation_data.relay_parent_storage_root, + ) + .expect("Calls `validate_block`"); + assert_eq!(header, res_header); +} + +#[test] +fn validate_block_returns_custom_head_data() { + sp_tracing::try_init_simple(); + + let expected_header = vec![1, 3, 3, 7, 4, 5, 6]; + + let (client, parent_head) = create_test_client(); + let extra_extrinsics = vec![ + transfer(&client, Alice, Bob, 69), + generate_extrinsic( + &client, + Charlie, + TestPalletCall::set_custom_validation_head_data { + custom_header: expected_header.clone(), + }, + ), + transfer(&client, Bob, Charlie, 100), + ]; + + let TestBlockData { + block, + validation_data, + } = build_block_with_witness( + &client, + extra_extrinsics, + parent_head.clone(), + Default::default(), + ); + let header = block.header().clone(); + assert_ne!(expected_header, header.encode()); + + let res_header = call_validate_block_encoded_header( + parent_head, + block, + validation_data.relay_parent_storage_root, + ) + .expect("Calls `validate_block`"); + assert_eq!(expected_header, res_header); +} + +#[test] +fn validate_block_invalid_parent_hash() { + sp_tracing::try_init_simple(); + + if env::var("RUN_TEST").is_ok() { + let (client, parent_head) = create_test_client(); + let TestBlockData { + block, + validation_data, + } = build_block_with_witness(&client, Vec::new(), parent_head.clone(), Default::default()); + let (mut header, extrinsics, witness) = block.deconstruct(); + header.set_parent_hash(Hash::from_low_u64_be(1)); + + let block_data = ParachainBlockData::new(header, extrinsics, witness); + call_validate_block( + parent_head, + block_data, + validation_data.relay_parent_storage_root, + ) + .unwrap_err(); + } else { + let output = Command::new(env::current_exe().unwrap()) + .args(["validate_block_invalid_parent_hash", "--", "--nocapture"]) + .env("RUN_TEST", "1") + .output() + .expect("Runs the test"); + assert!(output.status.success()); + + assert!(dbg!(String::from_utf8(output.stderr).unwrap()).contains("Invalid parent hash")); + } +} + +#[test] +fn validate_block_fails_on_invalid_validation_data() { + sp_tracing::try_init_simple(); + + if env::var("RUN_TEST").is_ok() { + let (client, parent_head) = create_test_client(); + let TestBlockData { block, .. } = + build_block_with_witness(&client, Vec::new(), parent_head.clone(), Default::default()); + + call_validate_block(parent_head, block, Hash::random()).unwrap_err(); + } else { + let output = Command::new(env::current_exe().unwrap()) + .args([ + "validate_block_fails_on_invalid_validation_data", + "--", + "--nocapture", + ]) + .env("RUN_TEST", "1") + .output() + .expect("Runs the test"); + assert!(output.status.success()); + + assert!(dbg!(String::from_utf8(output.stderr).unwrap()) + .contains("Relay parent storage root doesn't match")); + } +} + +#[test] +fn check_inherents_are_unsigned_and_before_all_other_extrinsics() { + sp_tracing::try_init_simple(); + + if env::var("RUN_TEST").is_ok() { + let (client, parent_head) = create_test_client(); + + let TestBlockData { + block, + validation_data, + } = build_block_with_witness(&client, Vec::new(), parent_head.clone(), Default::default()); + + let (header, mut extrinsics, proof) = block.deconstruct(); + + extrinsics.insert(0, transfer(&client, Alice, Bob, 69)); + + call_validate_block( + parent_head, + ParachainBlockData::new(header, extrinsics, proof), + validation_data.relay_parent_storage_root, + ) + .unwrap_err(); + } else { + let output = Command::new(env::current_exe().unwrap()) + .args([ + "check_inherents_are_unsigned_and_before_all_other_extrinsics", + "--", + "--nocapture", + ]) + .env("RUN_TEST", "1") + .output() + .expect("Runs the test"); + assert!(output.status.success()); + + assert!(String::from_utf8(output.stderr) + .unwrap() + .contains("Could not find `set_validation_data` inherent")); + } +} + +/// Test that ensures that `ValidationParams` and `MemoryOptimizedValidationParams` +/// are encoding/decoding. +#[test] +fn validation_params_and_memory_optimized_validation_params_encode_and_decode() { + const BLOCK_DATA: &[u8] = &[1, 2, 3, 4, 5]; + const PARENT_HEAD: &[u8] = &[1, 3, 4, 5, 6, 7, 9]; + + let validation_params = ValidationParams { + block_data: BlockData(BLOCK_DATA.encode()), + parent_head: HeadData(PARENT_HEAD.encode()), + relay_parent_number: 1, + relay_parent_storage_root: Hash::random(), + }; + + let encoded = validation_params.encode(); + + let decoded = MemoryOptimizedValidationParams::decode_all(&mut &encoded[..]).unwrap(); + assert_eq!( + decoded.relay_parent_number, + validation_params.relay_parent_number + ); + assert_eq!( + decoded.relay_parent_storage_root, + validation_params.relay_parent_storage_root + ); + assert_eq!(decoded.block_data, validation_params.block_data.0); + assert_eq!(decoded.parent_head, validation_params.parent_head.0); + + let encoded = decoded.encode(); + + let decoded = ValidationParams::decode_all(&mut &encoded[..]).unwrap(); + assert_eq!(decoded, validation_params); +} diff --git a/tuxedo-parachain-core/src/trie_cache.rs b/tuxedo-parachain-core/src/trie_cache.rs new file mode 100644 index 000000000..3afafd65a --- /dev/null +++ b/tuxedo-parachain-core/src/trie_cache.rs @@ -0,0 +1,96 @@ +use sp_state_machine::TrieCacheProvider; +use sp_std::{ + boxed::Box, + cell::{RefCell, RefMut}, + collections::btree_map::{BTreeMap, Entry}, +}; +use sp_trie::NodeCodec; +use trie_db::{node::NodeOwned, Hasher}; + +/// Special purpose trie cache implementation that is able to cache an unlimited number +/// of values. To be used in `validate_block` to serve values and nodes that +/// have already been loaded and decoded from the storage proof. +pub(crate) struct TrieCache<'a, H: Hasher> { + node_cache: RefMut<'a, BTreeMap>>, + value_cache: Option, trie_db::CachedValue>>>, +} + +impl<'a, H: Hasher> trie_db::TrieCache> for TrieCache<'a, H> { + fn lookup_value_for_key(&mut self, key: &[u8]) -> Option<&trie_db::CachedValue> { + self.value_cache.as_ref().and_then(|cache| cache.get(key)) + } + + fn cache_value_for_key(&mut self, key: &[u8], value: trie_db::CachedValue) { + self.value_cache + .as_mut() + .and_then(|cache| cache.insert(key.into(), value)); + } + + fn get_or_insert_node( + &mut self, + hash: as trie_db::NodeCodec>::HashOut, + fetch_node: &mut dyn FnMut() -> trie_db::Result< + NodeOwned, + H::Out, + as trie_db::NodeCodec>::Error, + >, + ) -> trie_db::Result<&NodeOwned, H::Out, as trie_db::NodeCodec>::Error> + { + match self.node_cache.entry(hash) { + Entry::Occupied(entry) => Ok(entry.into_mut()), + Entry::Vacant(entry) => Ok(entry.insert(fetch_node()?)), + } + } + + fn get_node( + &mut self, + hash: &H::Out, + ) -> Option<&NodeOwned< as trie_db::NodeCodec>::HashOut>> { + self.node_cache.get(hash) + } +} + +/// Provider of [`TrieCache`] instances. +pub(crate) struct CacheProvider { + node_cache: RefCell>>, + value_cache: RefCell, trie_db::CachedValue>>, +} + +impl CacheProvider { + /// Constructs a new instance of [`CacheProvider`] with an uninitialized state + /// and empty node and value caches. + pub fn new() -> Self { + CacheProvider { + node_cache: Default::default(), + value_cache: Default::default(), + } + } +} + +impl TrieCacheProvider for CacheProvider { + type Cache<'a> = TrieCache<'a, H> where H: 'a; + + fn as_trie_db_cache(&self, _storage_root: ::Out) -> Self::Cache<'_> { + TrieCache { + value_cache: Some(self.value_cache.borrow_mut()), + node_cache: self.node_cache.borrow_mut(), + } + } + + fn as_trie_db_mut_cache(&self) -> Self::Cache<'_> { + // This method is called when we calculate the storage root. + // Since we are using a simplified cache architecture, + // we do not have separate key spaces for different storage roots. + // The value cache is therefore disabled here. + TrieCache { + value_cache: None, + node_cache: self.node_cache.borrow_mut(), + } + } + + fn merge<'a>(&'a self, _other: Self::Cache<'a>, _new_root: ::Out) {} +} + +// This is safe here since we are single-threaded in WASM +unsafe impl Send for CacheProvider {} +unsafe impl Sync for CacheProvider {} diff --git a/tuxedo-parachain-core/src/validate_block.rs b/tuxedo-parachain-core/src/validate_block.rs new file mode 100644 index 000000000..3fe7d6f95 --- /dev/null +++ b/tuxedo-parachain-core/src/validate_block.rs @@ -0,0 +1,440 @@ +//! The actual implementation of the validate block functionality. + +use super::{ + trie_cache, GetRelayParentNumberStorage, MemoryOptimizedValidationParams, + ParachainInherentDataUtxo, RelayParentNumberStorage, +}; +use cumulus_primitives_core::{ + relay_chain::Hash as RHash, ParachainBlockData, PersistedValidationData, +}; +use cumulus_primitives_parachain_inherent::ParachainInherentData; +use polkadot_parachain_primitives::primitives::{ + HeadData, RelayChainBlockNumber, ValidationResult, +}; +use tuxedo_core::{types::Transaction, ConstraintChecker, Executive, Verifier}; + +use parity_scale_codec::Encode; +use scale_info::TypeInfo; +use sp_core::storage::{ChildInfo, StateVersion}; +use sp_externalities::{set_and_run_with_externalities, Externalities}; +use sp_io::KillStorageResult; +use sp_runtime::traits::{Block as BlockT, Extrinsic, HashingFor, Header as HeaderT}; +use sp_std::prelude::*; +use sp_trie::MemoryDB; + +type TrieBackend = sp_state_machine::TrieBackend< + MemoryDB>, + HashingFor, + trie_cache::CacheProvider>, +>; + +type Ext<'a, B> = sp_state_machine::Ext<'a, HashingFor, TrieBackend>; + +fn with_externalities R, R>(f: F) -> R { + sp_externalities::with_externalities(f).expect("Environmental externalities not set.") +} + +/// Validate the given parachain block. +/// +/// This function is doing roughly the following: +/// +/// 1. We decode the [`ParachainBlockData`] from the `block_data` in `params`. +/// +/// 2. We are doing some security checks like checking that the `parent_head` in `params` +/// is the parent of the block we are going to check. We also ensure that the `set_validation_data` +/// inherent is present in the block and that the validation data matches the values in `params`. +/// +/// 3. We construct the sparse in-memory database from the storage proof inside the block data and +/// then ensure that the storage root matches the storage root in the `parent_head`. +/// +/// 4. We replace all the storage related host functions with functions inside the wasm blob. +/// This means instead of calling into the host, we will stay inside the wasm execution. This is +/// very important as the relay chain validator hasn't the state required to verify the block. But +/// we have the in-memory database that contains all the values from the state of the parachain +/// that we require to verify the block. +/// +/// 5. We are going to run `check_inherents`. This is important to check stuff like the timestamp +/// matching the real world time. +/// +/// 6. The last step is to execute the entire block in the machinery we just have setup. Executing +/// the blocks include running all transactions in the block against our in-memory database and +/// ensuring that the final storage root matches the storage root in the header of the block. In the +/// end we return back the [`ValidationResult`] with all the required information for the validator. +#[doc(hidden)] +pub fn validate_block( + MemoryOptimizedValidationParams { + block_data, + parent_head, + relay_parent_number, + relay_parent_storage_root, + }: MemoryOptimizedValidationParams, +) -> ValidationResult +where + B: BlockT>, + Transaction: Extrinsic, + V: TypeInfo + Verifier + 'static, + C: TypeInfo + ConstraintChecker + 'static, // + Into>, +{ + sp_runtime::runtime_logger::RuntimeLogger::init(); + log::info!(target: "tuxvb", "🕵️🕵️🕵️🕵️Entering validate_block implementation"); + // Step 1: Decode block data + let block_data = parity_scale_codec::decode_from_bytes::>(block_data) + .expect("Invalid parachain block data"); + + // Step 2: Security Checks + log::info!(target: "tuxvb", "🕵️🕵️🕵️🕵️ Step 2"); + let parent_header = parity_scale_codec::decode_from_bytes::(parent_head.clone()) + .expect("Invalid parent head"); + + let (header, extrinsics, storage_proof) = block_data.deconstruct(); + + let block = B::new(header, extrinsics); + assert!( + parent_header.hash() == *block.header().parent_hash(), + "Invalid parent hash" + ); + + let inherent_data = extract_parachain_inherent_data(&block); + + validate_validation_data( + &inherent_data.validation_data, + relay_parent_number, + relay_parent_storage_root, + parent_head, + ); + + // Step 3: Create the sparse in-memory db + log::info!(target: "tuxvb", "🕵️🕵️🕵️🕵️ Step 3"); + let db = match storage_proof.to_memory_db(Some(parent_header.state_root())) { + Ok((db, _)) => db, + Err(_) => panic!("Compact proof decoding failure."), + }; + + sp_std::mem::drop(storage_proof); + + let cache_provider = trie_cache::CacheProvider::new(); + // We use the storage root of the `parent_head` to ensure that it is the correct root. + // This is already being done above while creating the in-memory db, but let's be paranoid!! + let backend = sp_state_machine::TrieBackendBuilder::new_with_cache( + db, + *parent_header.state_root(), + cache_provider, + ) + .build(); + + // Step 4: Replace host functions + log::info!(target: "tuxvb", "🕵️🕵️🕵️🕵️ Step 4"); + let _guard = ( + // Replace storage calls with our own implementations + sp_io::storage::host_read.replace_implementation(host_storage_read), + sp_io::storage::host_set.replace_implementation(host_storage_set), + sp_io::storage::host_get.replace_implementation(host_storage_get), + sp_io::storage::host_exists.replace_implementation(host_storage_exists), + sp_io::storage::host_clear.replace_implementation(host_storage_clear), + sp_io::storage::host_root.replace_implementation(host_storage_root), + sp_io::storage::host_clear_prefix.replace_implementation(host_storage_clear_prefix), + sp_io::storage::host_append.replace_implementation(host_storage_append), + sp_io::storage::host_next_key.replace_implementation(host_storage_next_key), + sp_io::storage::host_start_transaction + .replace_implementation(host_storage_start_transaction), + sp_io::storage::host_rollback_transaction + .replace_implementation(host_storage_rollback_transaction), + sp_io::storage::host_commit_transaction + .replace_implementation(host_storage_commit_transaction), + sp_io::default_child_storage::host_get + .replace_implementation(host_default_child_storage_get), + sp_io::default_child_storage::host_read + .replace_implementation(host_default_child_storage_read), + sp_io::default_child_storage::host_set + .replace_implementation(host_default_child_storage_set), + sp_io::default_child_storage::host_clear + .replace_implementation(host_default_child_storage_clear), + sp_io::default_child_storage::host_storage_kill + .replace_implementation(host_default_child_storage_storage_kill), + sp_io::default_child_storage::host_exists + .replace_implementation(host_default_child_storage_exists), + sp_io::default_child_storage::host_clear_prefix + .replace_implementation(host_default_child_storage_clear_prefix), + sp_io::default_child_storage::host_root + .replace_implementation(host_default_child_storage_root), + sp_io::default_child_storage::host_next_key + .replace_implementation(host_default_child_storage_next_key), + sp_io::offchain_index::host_set.replace_implementation(host_offchain_index_set), + sp_io::offchain_index::host_clear.replace_implementation(host_offchain_index_clear), + ); + + //TODO Consider whether and how to check inherents. + // https://github.com/Off-Narrative-Labs/Tuxedo/issues/144 + // https://substrate.stackexchange.com/questions/10436 + // The code below is commented from Cumulus, and is one option. I prefer to re-use the + // existing check-inehrent logic if possible. + + // Step 5: Check inherents. + // run_with_externalities::(&backend, || { + // let relay_chain_proof = super::RelayChainStateProof::new( + // PID::get(), + // inherent_data.validation_data.relay_parent_storage_root, + // inherent_data.relay_chain_state.clone(), + // ) + // .expect("Invalid relay chain state proof"); + // + // let res = CI::check_inherents(&block, &relay_chain_proof); + // + // if !res.ok() { + // if log::log_enabled!(log::Level::Error) { + // res.into_errors().for_each(|e| { + // log::error!("Checking inherent with identifier `{:?}` failed", e.0) + // }); + // } + // + // panic!("Checking inherents failed"); + // } + // }); + + run_with_externalities::(&backend, || { + log::info!(target: "tuxvb", "🕵️🕵️🕵️🕵️ In the run_with_externalities closure"); + let head_data = HeadData(block.header().encode()); + + Executive::::execute_block(block); + + log::info!(target: "tuxvb", "🕵️🕵️🕵️🕵️ returned from execute block"); + + // TODO Once we support XCM, we will need to gather some messaging state stuff here + // Seems like we could call the existing collect_collation_info api to get this information here + // instead of FRAME's approach of tightly coupling to pallet parachain system. + // That would mean less duplicated code as well as a more flexible validate block macro. + + // Get the relay parent number out of storage so we can advance the hrmp watermark + let hrmp_watermark = RelayParentNumberStorage::get(); + + ValidationResult { + head_data, + new_validation_code: None, + upward_messages: Default::default(), + processed_downward_messages: 0, + horizontal_messages: Default::default(), + hrmp_watermark, + } + }) +} + +/// Extract the [`ParachainInherentData`] from a parachain block. +/// The data has to be extracted from the extrinsics themselves. +/// I want the runtime to expose a method to do this, and I also want it to +/// be nice and flexible by searching for the right transactions. +/// For now I have a hacky implementation that assumes the parachain inherent is last +fn extract_parachain_inherent_data(block: &B) -> ParachainInherentData +where + B: BlockT>, + // Consider an alternative way to express the bounds here: + // Transaction: Extrinsic + V: TypeInfo + Verifier + 'static, + C: TypeInfo + ConstraintChecker + 'static, +{ + // The commented stuff is Basti's algo. + // It is nicer than my hack because it searches the transactions, + // But it is still not good enough because it lived right here in this file as + // opposed to with the runtime. + // FIXME https://github.com/Off-Narrative-Labs/Tuxedo/issues/146 + + // One idea from github.com/Off-Narrative-Labs/Tuxedo/pull/130#discussion_r1408250978 + // is to find the inehrent based o nthe dynamic type of the output. + // This is a reason to keep dynamic typing which is discussed in + // https://github.com/Off-Narrative-Labs/Tuxedo/issues/153 + + // block + // .extrinsics() + // .iter() + // // Inherents are at the front of the block and are unsigned. + // // + // // If `is_signed` is returning `None`, we keep it safe and assume that it is "signed". + // // We are searching for unsigned transactions anyway. + // .take_while(|e| !e.is_signed().unwrap_or(true)) + // .filter_map(|e| e.call().is_sub_type()) + // .find_map(|c| match c { + // crate::Call::set_validation_data { data: validation_data } => Some(validation_data), + // _ => None, + // }) + // .expect("Could not find `set_validation_data` inherent") + + block + .extrinsics() + .iter() + .take_while(|&e| !e.is_signed().unwrap_or(true)) + .collect::>() + .last() + .expect("There should be at least one inherent extrinsic which is the parachain inherent.") + .outputs + .get(0) + .expect("Parachain inherent should be first and should have exactly one output.") + .payload + .extract::() + .expect("Should decode to proper type based on the position in the block.") + .into() +} + +/// Validate the given [`PersistedValidationData`] against the [`MemoryOptimizedValidationParams`]. +fn validate_validation_data( + validation_data: &PersistedValidationData, + relay_parent_number: RelayChainBlockNumber, + relay_parent_storage_root: RHash, + parent_head: bytes::Bytes, +) { + assert_eq!( + parent_head, validation_data.parent_head.0, + "Parent head doesn't match" + ); + assert_eq!( + relay_parent_number, validation_data.relay_parent_number, + "Relay parent number doesn't match", + ); + assert_eq!( + relay_parent_storage_root, validation_data.relay_parent_storage_root, + "Relay parent storage root doesn't match", + ); +} + +/// Run the given closure with the externalities set. +fn run_with_externalities R>( + backend: &TrieBackend, + execute: F, +) -> R { + let mut overlay = sp_state_machine::OverlayedChanges::default(); + let mut ext = Ext::::new(&mut overlay, backend); + + set_and_run_with_externalities(&mut ext, || execute()) +} + +fn host_storage_read(key: &[u8], value_out: &mut [u8], value_offset: u32) -> Option { + match with_externalities(|ext| ext.storage(key)) { + Some(value) => { + let value_offset = value_offset as usize; + let data = &value[value_offset.min(value.len())..]; + let written = sp_std::cmp::min(data.len(), value_out.len()); + value_out[..written].copy_from_slice(&data[..written]); + Some(value.len() as u32) + } + None => None, + } +} + +fn host_storage_set(key: &[u8], value: &[u8]) { + with_externalities(|ext| ext.place_storage(key.to_vec(), Some(value.to_vec()))) +} + +fn host_storage_get(key: &[u8]) -> Option { + with_externalities(|ext| ext.storage(key).map(|value| value.into())) +} + +fn host_storage_exists(key: &[u8]) -> bool { + with_externalities(|ext| ext.exists_storage(key)) +} + +fn host_storage_clear(key: &[u8]) { + with_externalities(|ext| ext.place_storage(key.to_vec(), None)) +} + +fn host_storage_root(version: StateVersion) -> Vec { + with_externalities(|ext| ext.storage_root(version)) +} + +fn host_storage_clear_prefix(prefix: &[u8], limit: Option) -> KillStorageResult { + with_externalities(|ext| ext.clear_prefix(prefix, limit, None).into()) +} + +fn host_storage_append(key: &[u8], value: Vec) { + with_externalities(|ext| ext.storage_append(key.to_vec(), value)) +} + +fn host_storage_next_key(key: &[u8]) -> Option> { + with_externalities(|ext| ext.next_storage_key(key)) +} + +fn host_storage_start_transaction() { + with_externalities(|ext| ext.storage_start_transaction()) +} + +fn host_storage_rollback_transaction() { + with_externalities(|ext| ext.storage_rollback_transaction().ok()) + .expect("No open transaction that can be rolled back."); +} + +fn host_storage_commit_transaction() { + with_externalities(|ext| ext.storage_commit_transaction().ok()) + .expect("No open transaction that can be committed."); +} + +fn host_default_child_storage_get(storage_key: &[u8], key: &[u8]) -> Option> { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| ext.child_storage(&child_info, key)) +} + +fn host_default_child_storage_read( + storage_key: &[u8], + key: &[u8], + value_out: &mut [u8], + value_offset: u32, +) -> Option { + let child_info = ChildInfo::new_default(storage_key); + match with_externalities(|ext| ext.child_storage(&child_info, key)) { + Some(value) => { + let value_offset = value_offset as usize; + let data = &value[value_offset.min(value.len())..]; + let written = sp_std::cmp::min(data.len(), value_out.len()); + value_out[..written].copy_from_slice(&data[..written]); + Some(value.len() as u32) + } + None => None, + } +} + +fn host_default_child_storage_set(storage_key: &[u8], key: &[u8], value: &[u8]) { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| { + ext.place_child_storage(&child_info, key.to_vec(), Some(value.to_vec())) + }) +} + +fn host_default_child_storage_clear(storage_key: &[u8], key: &[u8]) { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| ext.place_child_storage(&child_info, key.to_vec(), None)) +} + +fn host_default_child_storage_storage_kill( + storage_key: &[u8], + limit: Option, +) -> KillStorageResult { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| ext.kill_child_storage(&child_info, limit, None).into()) +} + +fn host_default_child_storage_exists(storage_key: &[u8], key: &[u8]) -> bool { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| ext.exists_child_storage(&child_info, key)) +} + +fn host_default_child_storage_clear_prefix( + storage_key: &[u8], + prefix: &[u8], + limit: Option, +) -> KillStorageResult { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| { + ext.clear_child_prefix(&child_info, prefix, limit, None) + .into() + }) +} + +fn host_default_child_storage_root(storage_key: &[u8], version: StateVersion) -> Vec { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| ext.child_storage_root(&child_info, version)) +} + +fn host_default_child_storage_next_key(storage_key: &[u8], key: &[u8]) -> Option> { + let child_info = ChildInfo::new_default(storage_key); + with_externalities(|ext| ext.next_child_storage_key(&child_info, key)) +} + +fn host_offchain_index_set(_key: &[u8], _value: &[u8]) {} + +fn host_offchain_index_clear(_key: &[u8]) {} diff --git a/tuxedo-template-runtime/Cargo.toml b/tuxedo-template-runtime/Cargo.toml index bf8e04a36..4949fb6cb 100644 --- a/tuxedo-template-runtime/Cargo.toml +++ b/tuxedo-template-runtime/Cargo.toml @@ -42,6 +42,11 @@ runtime-upgrade = { default-features = false, path = "../wardrobe/runtime_upgrad timestamp = { default-features = false, path = "../wardrobe/timestamp" } tuxedo-core = { default-features = false, path = "../tuxedo-core" } +# Parachain related ones +cumulus-primitives-core = { default-features = false, optional = true, workspace = true } +parachain-piece = { default-features = false, optional = true, path = "../wardrobe/parachain" } +tuxedo-parachain-core = { default-features = false, optional = true, path = "../tuxedo-parachain-core" } + [build-dependencies] substrate-wasm-builder = { workspace = true } @@ -50,6 +55,11 @@ sp-keystore = { default_features = false, workspace = true } [features] default = [ "std" ] +parachain = [ + "cumulus-primitives-core", + "parachain-piece", + "tuxedo-parachain-core", +] std = [ "sp-debug-derive/std", "sp-block-builder/std", @@ -76,4 +86,8 @@ std = [ "kitties/std", "timestamp/std", "runtime-upgrade/std", + # Parachain related ones, don't forget the `?` + "cumulus-primitives-core?/std", + "parachain-piece?/std", + "tuxedo-parachain-core?/std", ] diff --git a/tuxedo-template-runtime/src/lib.rs b/tuxedo-template-runtime/src/lib.rs index 6ff6867ff..bea0f00d2 100644 --- a/tuxedo-template-runtime/src/lib.rs +++ b/tuxedo-template-runtime/src/lib.rs @@ -54,6 +54,8 @@ pub mod opaque { /// Opaque block type. pub type Block = sp_runtime::generic::Block; + /// Opaque block hash type. + pub type Hash = ::Output; // This part is necessary for generating session keys in the runtime impl_opaque_keys! { @@ -139,15 +141,64 @@ impl timestamp::TimestampConfig for Runtime { } } +#[cfg(feature = "parachain")] +impl parachain_piece::ParachainPieceConfig for Runtime { + // Use the para ID 2_000 which is the first available in the rococo-local runtime. + // This is the default value, so this could be omitted, but explicit is better. + const PARA_ID: u32 = 2_000; + + type SetRelayParentNumberStorage = tuxedo_parachain_core::RelayParentNumberStorage; +} + // Observation: For some applications, it will be invalid to simply delete // a UTXO without any further processing. Therefore, we explicitly include // AmoebaDeath and PoeRevoke on an application-specific basis +// The macro doesn't understand conditional compilation flags inside, so we have to +// feature gate the entire thing, and repeat it twice. I remember this was a problem +// with frame's construct_runtime! as well. + +/// A constraint checker is a piece of logic that can be used to check a transaction. +/// For any given Tuxedo runtime there is a finite set of such constraint checkers. +/// For example, this may check that input token values exceed output token values. +#[derive(Serialize, Deserialize, Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[tuxedo_constraint_checker(OuterVerifier)] +#[cfg(feature = "parachain")] +pub enum OuterConstraintChecker { + /// Checks monetary transactions in a basic fungible cryptocurrency + Money(money::MoneyConstraintChecker<0>), + /// Checks Free Kitty transactions + FreeKittyConstraintChecker(kitties::FreeKittyConstraintChecker), + /// Checks that an amoeba can split into two new amoebas + AmoebaMitosis(amoeba::AmoebaMitosis), + /// Checks that a single amoeba is simply removed from the state + AmoebaDeath(amoeba::AmoebaDeath), + /// Checks that a single amoeba is simply created from the void... and it is good + AmoebaCreation(amoeba::AmoebaCreation), + /// Checks that new valid proofs of existence are claimed + PoeClaim(poe::PoeClaim), + /// Checks that proofs of existence are revoked. + PoeRevoke(poe::PoeRevoke), + /// Checks that one winning claim came earlier than all the other claims, and thus + /// the losing claims can be removed from storage. + PoeDispute(poe::PoeDispute), + /// Set the block's timestamp via an inherent extrinsic. + SetTimestamp(timestamp::SetTimestamp), + /// Upgrade the Wasm Runtime + RuntimeUpgrade(runtime_upgrade::RuntimeUpgrade), + + // TODO This one is last for now so that I can write a hacky algorithm to scrape + // the inherent data and assume it is last. + /// Set some parachain related information via an inherent extrinsic. + ParachainInfo(parachain_piece::SetParachainInfo), +} + /// A constraint checker is a piece of logic that can be used to check a transaction. /// For any given Tuxedo runtime there is a finite set of such constraint checkers. /// For example, this may check that input token values exceed output token values. #[derive(Serialize, Deserialize, Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] #[tuxedo_constraint_checker(OuterVerifier)] +#[cfg(not(feature = "parachain"))] pub enum OuterConstraintChecker { /// Checks monetary transactions in a basic fungible cryptocurrency Money(money::MoneyConstraintChecker<0>), @@ -170,6 +221,30 @@ pub enum OuterConstraintChecker { SetTimestamp(timestamp::SetTimestamp), /// Upgrade the Wasm Runtime RuntimeUpgrade(runtime_upgrade::RuntimeUpgrade), + + /// A Dummy Constraint Checker to make the encoding compatible with the parachain. + /// This does nothing. + ParachainInfo(DummyParachainInfo), +} + +#[derive( + Serialize, Deserialize, Encode, Decode, Debug, Default, PartialEq, Eq, Clone, TypeInfo, +)] +/// A Dummy constraint checker that does nothing. It is only present to make the +/// Parachain and non-parahcain OuterConstraintCheckers scale compatible +pub struct DummyParachainInfo; + +impl tuxedo_core::SimpleConstraintChecker for DummyParachainInfo { + type Error = (); + + fn check( + &self, + _input_data: &[tuxedo_core::dynamic_typing::DynamicallyTypedData], + _peeks: &[tuxedo_core::dynamic_typing::DynamicallyTypedData], + _output_data: &[tuxedo_core::dynamic_typing::DynamicallyTypedData], + ) -> Result { + Ok(0) + } } /// The main struct in this module. @@ -347,4 +422,16 @@ impl_runtime_apis! { None } } + + #[cfg(feature = "parachain")] + impl cumulus_primitives_core::CollectCollationInfo for Runtime { + fn collect_collation_info(header: &::Header) -> cumulus_primitives_core::CollationInfo { + use tuxedo_parachain_core::ParachainExecutiveExtension; + Executive::collect_collation_info(header) + } + } } + +// Register the `validate_block` function that Polkadot validators will call to verify this parachain block. +#[cfg(feature = "parachain")] +tuxedo_parachain_core::register_validate_block!(Block, OuterVerifier, OuterConstraintChecker); diff --git a/wallet/Dockerfile b/wallet/Dockerfile index 619d9c713..b685c5129 100644 --- a/wallet/Dockerfile +++ b/wallet/Dockerfile @@ -6,6 +6,7 @@ # For the build stage, we use an image provided by Parity FROM docker.io/paritytech/ci-linux:production as builder WORKDIR /wallet +#TODO The Workdir and Copy command is different here than in the node... COPY . . RUN cargo build --locked --release -p tuxedo-template-wallet @@ -28,7 +29,7 @@ RUN useradd -m -u 1000 -U -s /bin/sh -d /node-dev node-dev && \ USER node-dev -EXPOSE 9933 9944 +EXPOSE 9944 VOLUME ["/wallet-data"] ENTRYPOINT ["/usr/local/bin/tuxedo-template-wallet"] \ No newline at end of file diff --git a/wardrobe/amoeba/src/tests.rs b/wardrobe/amoeba/src/tests.rs index 6b95ff197..379c6da6e 100644 --- a/wardrobe/amoeba/src/tests.rs +++ b/wardrobe/amoeba/src/tests.rs @@ -12,7 +12,7 @@ fn creation_valid_transaction_works() { let input_data = Vec::new(); let output_data = vec![to_spawn.into()]; - assert_eq!(AmoebaCreation.check(&input_data, &[], &output_data), Ok(0),); + assert_eq!(AmoebaCreation.check(&input_data, &[], &output_data), Ok(0)); } #[test] @@ -99,7 +99,7 @@ fn mitosis_valid_transaction_works() { let input_data = vec![mother.into()]; let output_data = vec![d1.into(), d2.into()]; - assert_eq!(AmoebaMitosis.check(&input_data, &[], &output_data), Ok(0),); + assert_eq!(AmoebaMitosis.check(&input_data, &[], &output_data), Ok(0)); } #[test] @@ -241,7 +241,7 @@ fn death_valid_transaction_works() { let input_data = vec![example.into()]; let output_data = vec![]; - assert_eq!(AmoebaDeath.check(&input_data, &[], &output_data), Ok(0),); + assert_eq!(AmoebaDeath.check(&input_data, &[], &output_data), Ok(0)); } #[test] diff --git a/wardrobe/parachain/Cargo.toml b/wardrobe/parachain/Cargo.toml new file mode 100644 index 000000000..211a2def7 --- /dev/null +++ b/wardrobe/parachain/Cargo.toml @@ -0,0 +1,42 @@ +[package] +description = "A Tuxedo piece that allows collators to include a information specific to this parachain through an inherent." +edition = "2021" +name = "parachain-piece" +version = "0.1.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +cumulus-primitives-core = { optional = true, workspace = true } +cumulus-primitives-parachain-inherent = { default_features = false, workspace = true } +cumulus-test-relay-sproof-builder = { optional = true, workspace = true } +log = { workspace = true } +parity-scale-codec = { features = [ "derive" ], default_features = false, workspace = true } +scale-info = { features = [ "derive" ], default_features = false, workspace = true } +serde = { features = [ "derive" ], default_features = false, workspace = true } +sp-api = { default_features = false, workspace = true } +sp-core = { default_features = false, workspace = true } +sp-inherents = { default_features = false, workspace = true } +sp-io = { default_features = false, workspace = true } +sp-runtime = { default_features = false, workspace = true } +sp-std = { default_features = false, workspace = true } +tuxedo-parachain-core = { default-features = false, path = "../../tuxedo-parachain-core" } + +[features] +default = [ "std" ] +std = [ + "cumulus-primitives-parachain-inherent/std", + "cumulus-primitives-core", + "cumulus-test-relay-sproof-builder", + "log/std", + "parity-scale-codec/std", + "scale-info/std", + "serde/std", + "sp-api/std", + "sp-core/std", + "sp-inherents/std", + "sp-io/std", + "sp-runtime/std", + "sp-std/std", + "tuxedo-parachain-core/std", +] diff --git a/wardrobe/parachain/src/lib.rs b/wardrobe/parachain/src/lib.rs new file mode 100644 index 000000000..9f4ee6647 --- /dev/null +++ b/wardrobe/parachain/src/lib.rs @@ -0,0 +1,277 @@ +//! Allow collators to include information about the relay chain, parachain, and their relationship, via an inherent. +//! +//! This piece is necessary if the runtime is going to work as a parachain. +//! +//! In each block, the block author must include a single `SetParachainInfo` transaction that consumes the +//! corresponding UTXO that was created in the previous block, and creates a new one with updated parachain info. +//! This is quite similar to how the timestamp inherent works, except that in this case we are consuming the previous +//! input directly instead of peeking. This decision may be revisitied if keeping the info around would be useful. +//! +//! ## Comparison with Cumulus Pallet Parachain System +//! +//! This is similar to FRAME's pallet parachain system, although this piece is only responsible for the inherent flow +//! while that pallet is responsible for most of the core parachain requirements including the validate block function. +//! +//! ## Hack Warning +//! +//! Like the timestamp piece, this piece currently abuses the UpForGrabs verifier. +//! This should be replaced with an Unspendable verifier and an eviction workflow. + +#![cfg_attr(not(feature = "std"), no_std)] + +use core::marker::PhantomData; + +use cumulus_primitives_parachain_inherent::{ParachainInherentData, INHERENT_IDENTIFIER}; +use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; +use serde::{Deserialize, Serialize}; +use sp_core::H256; +use sp_inherents::{CheckInherentsResult, InherentData}; +use sp_runtime::transaction_validity::TransactionPriority; +use sp_std::{vec, vec::Vec}; +// We get all the Tuxedo core stuff through the re-export so we don't risk crossed versions. +use tuxedo_parachain_core::ParachainInherentDataUtxo; +use tuxedo_parachain_core::{ + tuxedo_core::{ + ensure, + inherents::{TuxedoInherent, TuxedoInherentAdapter}, + support_macros::{CloneNoBound, DebugNoBound, DefaultNoBound}, + types::{Input, Output, OutputRef, Transaction}, + verifier::UpForGrabs, + ConstraintChecker, Verifier, + }, + SetRelayParentNumberStorage, +}; + +#[cfg(test)] +mod tests; + +/// A piece-wide target for logging +const LOG_TARGET: &str = "parachain-info"; + +/// Options to configure the timestamp piece when it is aggregated or used in a runtime. +pub trait ParachainPieceConfig { + // This value is duplicated in the chain spec extension. Soon (as soon as SDK 1.4.0) the API + // for genesis storage is being refactored to have access to the chain spec, and this design + // should be revised. We will likely want to leverage storage similar to how we have + // for the relay chain parent id. + + /// The Parachain Id of this chain. + /// This is currently a copmile time constant, which is simple but not that flexible. + /// + /// The default value is set to 2_000 to match the first available id in the rococo-local runtime. + const PARA_ID: u32 = 2_000; + + /// A means of setting an ambiently available relay parent number. This value WILL be used when + /// the collator calls the collation API after the block is authored and also in validate_block. + /// Additionally, it MAY be used by any other pieces in the runtime who have access to it. + type SetRelayParentNumberStorage: SetRelayParentNumberStorage; +} + +/// Reasons that setting or cleaning up the parachain info may go wrong. +#[derive(Debug, Eq, PartialEq)] +pub enum ParachainError { + /// UTXO data has an unexpected type + BadlyTyped, + /// When attempting to set a new parachain info, you have not included any output. + MissingNewInfo, + /// Multiple outputs were specified while setting the parachain info, but exactly one is required. + ExtraOutputs, + /// No previous parachain info was consumed in this transaction, but consuming the previous UTXO is required. + MissingPreviousInfo, + /// Multiple inputs were specified while setting the parachain info, but exactly one is required. + ExtraInputs, + /// The new relay chain block number is expected to be higher than the previous, but that is not the case. + RelayBlockNotIncreasing, +} + +/// A constraint checker for the simple act of including new parachain information. +/// +/// This is expected to be performed through an inherent, and to happen exactly once per block. +/// +/// This transaction comsumes a single input which is the previous parachain info, +/// And it creates a new output which is the current parachain info. +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + DebugNoBound, + DefaultNoBound, + PartialEq, + Eq, + CloneNoBound, + TypeInfo, +)] +#[scale_info(skip_type_params(T))] +pub struct SetParachainInfo(PhantomData); + +impl> ConstraintChecker + for SetParachainInfo +{ + type Error = ParachainError; + type InherentHooks = TuxedoInherentAdapter; + + fn check( + &self, + input_data: &[Output], + _peek_data: &[Output], + output_data: &[Output], + ) -> Result { + log::debug!( + target: LOG_TARGET, + "Checking onchain constraints for SetParachainInfo." + ); + + // Make sure there is exactly one output which is the current parachain info + ensure!(!output_data.is_empty(), Self::Error::MissingNewInfo); + ensure!(output_data.len() == 1, Self::Error::ExtraOutputs); + let current: ParachainInherentData = output_data[0] + .payload + .extract::() + .map_err(|_| Self::Error::BadlyTyped)? + .into(); + + // SIDE EFFECT: Write the relay parent block number to storage to use later in the collation info api + T::SetRelayParentNumberStorage::set(current.validation_data.relay_parent_number); + + // Make sure there is exactly one input which is the previous parachain info + ensure!(!input_data.is_empty(), Self::Error::MissingPreviousInfo); + ensure!(input_data.len() == 1, Self::Error::ExtraInputs); + let previous: ParachainInherentData = input_data[0] + .payload + .extract::() + .map_err(|_| Self::Error::BadlyTyped)? + .into(); + + // Make sure the relay chain block height is strictly increasing. + // In frame this logic is generic and it doesn't have to be so strict. + // But for now I'll start simple. + ensure!( + current.validation_data.relay_parent_number + > previous.validation_data.relay_parent_number, + Self::Error::RelayBlockNotIncreasing, + ); + + // We may need to put a log on the block header at some point. + // Frame does this. However, it seems this design is not fully fleshed out in cumulus itself. + // FIXME https://github.com/Off-Narrative-Labs/Tuxedo/issues/147 for more context and info. + + // When we support async backing, we will need to validate that the parent is included + // and perform consensus checks as well. For now, we rely on synchronous backing. + // FIXME https://github.com/Off-Narrative-Labs/Tuxedo/issues/148 + + Ok(0) + } + + fn is_inherent(&self) -> bool { + true + } +} + +impl, T: ParachainPieceConfig + 'static> TuxedoInherent + for SetParachainInfo +{ + // Same error type as in frame + type Error = sp_inherents::MakeFatalError<()>; + const INHERENT_IDENTIFIER: sp_inherents::InherentIdentifier = INHERENT_IDENTIFIER; + + fn create_inherent( + authoring_inherent_data: &InherentData, + (_previous_inherent, previous_id): (Transaction, H256), + ) -> Transaction { + let current_info: ParachainInherentData = authoring_inherent_data + .get_data(&INHERENT_IDENTIFIER) + .expect("Inherent data should decode properly") + .expect("Parachain inherent data should be present."); + + log::debug!( + target: LOG_TARGET, + "parachain inherent data while creating inherent: {:?}", current_info + ); + + // The first task is to construct the input that we will consume. + // We are given the entire previous inherent in case we need data from it or need to scrape the outputs. + // But our transactions are simple enough that we know we just need the one and only output. + let output_ref = OutputRef { + tx_hash: previous_id, + // There is always 1 output, so we know right where to find it. + index: 0, + }; + + let input = Input { + output_ref, + redeemer: Vec::new(), + }; + + let new_output = Output { + payload: ParachainInherentDataUtxo::from(current_info).into(), + verifier: UpForGrabs.into(), + }; + + let t = Transaction { + inputs: vec![input], + peeks: Vec::new(), + outputs: vec![new_output], + checker: Self::default(), + }; + + log::debug!( + target: LOG_TARGET, + "created inherent transaction {:?}.", t + ); + + t + } + + fn check_inherent( + _importing_inherent_data: &InherentData, + _inherent: Transaction, + _result: &mut CheckInherentsResult, + ) { + log::debug!( + target: LOG_TARGET, + "In check_inherents for parachain inherent. No actual off-chain checks are required." + ); + + //TODO The debug message above reflects the current design which is a copy of basti's design. + // I think the process of checking this inherent should be accessible through some abstract interface in the end. + } + + #[cfg(feature = "std")] + fn genesis_transactions() -> Vec> { + let payload = new_data_from_relay_parent_number(0).into(); + + vec![Transaction { + inputs: Vec::new(), + peeks: Vec::new(), + outputs: vec![Output { + payload, + verifier: UpForGrabs.into(), + }], + checker: Self::default(), + }] + } +} + +#[cfg(feature = "std")] +fn new_data_from_relay_parent_number(relay_parent_number: u32) -> ParachainInherentDataUtxo { + let sproof_builder = cumulus_test_relay_sproof_builder::RelayStateSproofBuilder::default(); + //TODO consider changing the para_id here. For sure do it if we keep the piece config item. + + let (relay_parent_storage_root, relay_chain_state_proof) = + sproof_builder.into_state_root_and_proof(); + + ParachainInherentData { + validation_data: cumulus_primitives_core::PersistedValidationData { + parent_head: Default::default(), + relay_parent_number, + relay_parent_storage_root, + max_pov_size: Default::default(), + }, + relay_chain_state: relay_chain_state_proof, + downward_messages: Default::default(), + horizontal_messages: Default::default(), + } + .into() +} diff --git a/wardrobe/parachain/src/tests.rs b/wardrobe/parachain/src/tests.rs new file mode 100644 index 000000000..73bd72a11 --- /dev/null +++ b/wardrobe/parachain/src/tests.rs @@ -0,0 +1,119 @@ +//! Unit tests for the Parachain Info inherent piece + +use super::*; +use tuxedo_parachain_core::{ + tuxedo_core::dynamic_typing::{testing::Bogus, DynamicallyTypedData}, + MockRelayParentNumberStorage, +}; +use ParachainError::*; + +/// The mock config ignores the set relay parent storage number. +pub struct MockConfig; + +impl ParachainPieceConfig for MockConfig { + type SetRelayParentNumberStorage = MockRelayParentNumberStorage; +} + +#[test] +fn update_parachain_info_happy_path() { + let old: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let inputs: Vec> = vec![old.into()]; + let new: DynamicallyTypedData = new_data_from_relay_parent_number(4).into(); + let outputs: Vec> = vec![new.into()]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Ok(0), + ); +} + +#[test] +fn update_parachain_info_relay_block_not_increasing() { + let old: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let inputs: Vec> = vec![old.into()]; + let new: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let outputs: Vec> = vec![new.into()]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Err(RelayBlockNotIncreasing), + ); +} + +#[test] +fn update_parachain_info_extra_inputs() { + let old1: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let old2: DynamicallyTypedData = Bogus.into(); + let inputs: Vec> = vec![old1.into(), old2.into()]; + let new: DynamicallyTypedData = new_data_from_relay_parent_number(4).into(); + let outputs: Vec> = vec![new.into()]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Err(ExtraInputs) + ); +} + +#[test] +fn update_parachain_info_missing_input() { + let inputs: Vec> = vec![]; + let new: DynamicallyTypedData = new_data_from_relay_parent_number(4).into(); + let outputs: Vec> = vec![new.into()]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Err(MissingPreviousInfo) + ); +} + +#[test] +fn update_parachain_info_bogus_input() { + let old: DynamicallyTypedData = Bogus.into(); + let inputs: Vec> = vec![old.into()]; + let new: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let outputs: Vec> = vec![new.into()]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Err(BadlyTyped) + ); +} + +#[test] +fn update_parachain_info_extra_outputs() { + let old: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let inputs: Vec> = vec![old.into()]; + let new1: DynamicallyTypedData = new_data_from_relay_parent_number(4).into(); + let new2: DynamicallyTypedData = Bogus.into(); + let outputs: Vec> = vec![new1.into(), new2.into()]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Err(ExtraOutputs) + ); +} + +#[test] +fn update_parachain_info_missing_output() { + let old: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let inputs: Vec> = vec![old.into()]; + let outputs: Vec> = vec![]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Err(MissingNewInfo) + ); +} + +#[test] +fn update_parachain_info_bogus_output() { + let old: DynamicallyTypedData = new_data_from_relay_parent_number(3).into(); + let inputs: Vec> = vec![old.into()]; + let new: DynamicallyTypedData = Bogus.into(); + let outputs: Vec> = vec![new.into()]; + + assert_eq!( + SetParachainInfo::(Default::default()).check(&inputs, &[], &outputs), + Err(BadlyTyped) + ); +} diff --git a/wardrobe/timestamp/src/cleanup_tests.rs b/wardrobe/timestamp/src/cleanup_tests.rs index 9252eac2e..0be12a24f 100644 --- a/wardrobe/timestamp/src/cleanup_tests.rs +++ b/wardrobe/timestamp/src/cleanup_tests.rs @@ -28,7 +28,7 @@ fn cleanup_timestamp_happy_path() { let peek = vec![newer.into()]; assert_eq!( - CleanUpTimestamp::::default().check(&inp, &peek, &[],), + CleanUpTimestamp::::default().check(&inp, &peek, &[]), Ok(0), ); } @@ -179,7 +179,7 @@ fn cleanup_timestamp_cannot_create_state() { let out = vec![Bogus.into()]; assert_eq!( - CleanUpTimestamp::::default().check(&inp, &peek, &out,), + CleanUpTimestamp::::default().check(&inp, &peek, &out), Err(CleanupCannotCreateState) ); } diff --git a/zombienet.toml b/zombienet.toml new file mode 100644 index 000000000..a8c97c106 --- /dev/null +++ b/zombienet.toml @@ -0,0 +1,38 @@ +# This is a configuration file for zombienet: https://github.com/paritytech/zombienet +# You can use it to launch a custom relay-para network with relative ease. +# After building the collator and relay chain binaries, and installing zombienet 1.3.74 onwards, +# zombienet --provider native spawn zombienet.toml + +[relaychain] +default_image = "docker.io/parity/polkadot:latest" +default_command = "polkadot" +default_args = [ "-lparachain=debug" ] + +chain = "rococo-local" + + [[relaychain.nodes]] + name = "relay-01" + validator = true + args = ["-lruntime=debug", "-lparachain=debug", "-ltuxedo-core=debug", "-ltuxvb=debug"] + + [[relaychain.nodes]] + name = "relay-02" + validator = true + args = ["-lruntime=debug", "-lparachain=debug", "-ltuxedo-core=debug", "-ltuxvb=debug"] + + +[[parachains]] +id = 2000 + + [[parachains.collators]] + name = "alice" + image = "ghcr.io/off-narrative-labs/tuxedo-parachain:latest" + command = "parachain-template-node" + args = ["--alice"] + + [[parachains.collators]] + name = "tuxedo-full-node" + image = "ghcr.io/off-narrative-labs/tuxedo-parachain:latest" + command = "parachain-template-node" + # This makes this node a full node instead of a collator (despite the schema name) + validator = false