difftreelog
Merge branch 'develop' into feature/sapphire-is-quartz
in: master
55 files changed
Cargo.lockdiffbeforeafterboth1030 packageslockfile v3
Might be heavy and slow!
addr2line
0.17.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816bdepends onused byaddr2line
0.19.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97depends onused byadler
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35feused byaead
0.4.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877depends onaes
0.7.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8used byaes-gcm
0.9.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6used byahash
0.7.6crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47aho-corasick
0.7.20crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071acdepends onused byalways-assert
0.1.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbf688625d06217d5b1bb0ea9d9c44a1635fd0ee3534466388d18203174f4d11android_system_properties
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311depends onused byansi_term
0.12.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.68crates.io↘ 0↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61used by- jsonrpsee-core
0.16.2 - jsonrpsee-types
0.16.2 - mmr-rpc
4.0.0-dev - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-packet-utils
0.5.1 - prost-derive
0.11.5 - tiny-bip39
0.8.2 - uc-rpc
0.1.4 - wasm-opt
0.110.2 - wasm-opt-cxx-sys
0.110.2 - wasm-opt-sys
0.110.2 - wasmtime
1.0.2 - wasmtime-cache
1.0.2 - wasmtime-cranelift
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2
- jsonrpsee-core
approx
0.5.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6depends onarray-bytes
4.2.0crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6used by- beefy-gadget
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sp-core
7.0.0 - substrate-test-client
2.0.1
- beefy-gadget
array-bytes
6.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22f72e9d6fac4bc80778ea470b20197b88d28c292bb7d60c3fb099280003cd19arrayref
0.3.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544arrayvec
0.5.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068barrayvec
0.7.2crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6asn1_der
0.7.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21used byassert_matches
1.5.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9async-attributes
1.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5depends onused byasync-channel
1.8.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833async-executor
1.5.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0bdepends onused byasync-global-executor
2.3.1crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776depends onasync-io
1.12.0crates.io↘ 12↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794depends onasync-lock
2.6.0crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685depends onasync-process
1.6.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4depends onused byasync-std
1.12.0crates.io↘ 19↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5ddepends on- async-attributes
1.1.2 - async-channel
1.8.0 - async-global-executor
2.3.1 - async-io
1.12.0 - async-lock
2.6.0 - crossbeam-utils
0.8.14 - futures-channel
0.3.25 - futures-core
0.3.25 - futures-io
0.3.25 - futures-lite
1.12.0 - gloo-timers
0.2.5 - kv-log-macro
1.0.7 - log
0.4.17 - memchr
2.5.0 - once_cell
1.16.0 - pin-project-lite
0.2.9 - pin-utils
0.1.0 - slab
0.4.7 - wasm-bindgen-futures
0.4.33
used by- async-attributes
async-task
4.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524async-trait
0.1.60crates.io↘ 3↖ 47sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum677d1d8ab452a3936018a687b20e6f7cf5363d713b732b8884001317b0e48aa3depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - jsonrpsee-core
0.16.2 - libp2p-request-response
0.22.1 - orchestra
0.0.2 - polkadot-client
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-service
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-authorship
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-rpc-client
0.10.0-dev - substrate-test-client
2.0.1 - trust-dns-proto
0.22.0
- beefy-gadget
asynchronous-codec
0.6.1crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06a0daa378f5fd10634e44b0a29b2a87b890657658e072a30d6f26e57ddee182atomic-waker
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2aused byatty
0.2.14crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onauto_impl
0.5.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4used byautocfg
1.1.0crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fabacktrace
0.3.67crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564cadepends onused bybase-x
0.2.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270used bybase16ct
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678ccebase58
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581used bybase64
0.13.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8beef
0.5.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1depends onbeefy-gadget
4.0.0-devgithub.com/paritytech/substrate↘ 30↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- array-bytes
4.2.0 - async-trait
0.1.60 - fnv
1.0.7 - futures
0.3.25 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-beefy
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38 - wasm-timer
0.2.5
- array-bytes
beefy-gadget-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bybeefy-merkle-tree
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51bincode
1.3.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcaddepends onbindgen
0.60.1crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6depends onused bybitflags
1.3.2crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718aused bybitvec
0.20.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848depends onused bybitvec
1.0.1crates.io↘ 4↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9cdepends onused by- kusama-runtime
0.9.36 - parity-scale-codec
3.2.1 - polkadot-collator-protocol
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - scale-info
2.3.1 - westend-runtime
0.9.36
- kusama-runtime
blake2
0.10.6crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efedepends onblake2b_simd
1.0.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127used byblake2s_simd
1.0.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4used byblake3
1.3.3crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccefused byblock-buffer
0.7.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bblock-buffer
0.9.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-buffer
0.10.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7edepends onused byblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused byblocking
1.3.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8depends onbondrewd
0.1.14crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d1660fac8d3acced44dac64453fafedf5aab2de196b932c727e63e4ae42d1ccdepends onused bybondrewd-derive
0.3.18crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723da0dee1eef38edc021b0793f892bdc024500c6a5b0727a2efe16f0e0a6977depends onused bybounded-vec
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3372be4090bf9d4da36bd8ba7ce6ca1669503d0cf6e667236c6df7f053153eb6depends onbs58
0.4.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
0.2.17crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223used bybuild-helper
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5fdepends onbumpalo
3.11.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880babyte-slice-cast
1.2.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0cbyte-tools
0.3.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7byteorder
1.4.3crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610bytes
1.3.0crates.io↘ 0↖ 33sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3cused by- asynchronous-codec
0.6.1 - cumulus-pallet-parachain-system
0.1.0 - ethereum
0.12.0 - ethereum
0.14.0 - h2
0.3.15 - http
0.2.8 - http-body
0.4.5 - hyper
0.14.23 - libp2p
0.49.0 - libp2p-kad
0.41.0 - libp2p-mplex
0.37.0 - libp2p-noise
0.40.0 - libp2p-request-response
0.22.1 - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.3 - parity-scale-codec
3.2.1 - polkadot-network-bridge
0.9.36 - prost
0.11.5 - prost-build
0.11.5 - prost-codec
0.2.0 - prost-types
0.11.5 - rlp
0.5.2 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-offchain
4.0.0-dev - soketto
0.7.1 - sp-io
7.0.0 - sp-runtime-interface
7.0.0 - tokio
1.23.0 - tokio-util
0.7.4 - tower-http
0.3.5 - unsigned-varint
0.7.1
- asynchronous-codec
bzip2-sys
0.1.11+1.0.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdcdepends onused bycamino
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1edepends onused bycargo_metadata
0.14.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181facargo-platform
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27depends onused bycc
1.0.78crates.io↘ 1↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3ddepends onused by- backtrace
0.3.67 - blake3
1.3.3 - bzip2-sys
0.1.11+1.0.8 - cxx
1.0.85 - cxx-build
1.0.85 - errno-dragonfly
0.1.2 - librocksdb-sys
0.8.0+7.4.4 - libz-sys
1.1.8 - link-cplusplus
1.0.8 - lz4-sys
1.9.4 - psm
0.1.21 - ring
0.16.20 - secp256k1-sys
0.6.1 - tikv-jemalloc-sys
0.5.2+5.3.0-patched - wasm-opt-sys
0.110.2 - wasmtime-runtime
1.0.2 - wepoll-ffi
0.1.2 - zstd-sys
2.0.4+zstd.1.5.2
- backtrace
cexpr
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766depends onused bycfg_aliases
0.1.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89ecfg-expr
0.10.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485dbdepends oncfg-if
1.0.0crates.io↘ 0↖ 49sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- aes
0.7.5 - async-process
1.6.0 - backtrace
0.3.67 - blake3
1.3.3 - chacha20
0.8.2 - ckb-merkle-mountain-range
0.5.2 - cpp_demangle
0.3.5 - crc32fast
1.3.2 - crossbeam-channel
0.5.6 - crossbeam-deque
0.8.2 - crossbeam-epoch
0.9.13 - crossbeam-queue
0.3.8 - crossbeam-utils
0.8.14 - curve25519-dalek
4.0.0-pre.5 - directories-next
2.0.0 - filetime
0.2.19 - frame-metadata
15.0.0 - getrandom
0.1.16 - getrandom
0.2.8 - instant
0.1.12 - k256
0.11.6 - libloading
0.7.4 - log
0.4.17 - mockall
0.11.3 - mockall_derive
0.11.3 - nix
0.24.3 - packed_simd_2
0.3.8 - parking_lot_core
0.8.6 - parking_lot_core
0.9.5 - polling
2.5.2 - polyval
0.5.3 - prometheus
0.13.3 - sc-executor-wasmtime
0.10.0-dev - scale-info
2.3.1 - sha-1
0.9.8 - sha1
0.10.5 - sha2
0.9.9 - sha2
0.10.6 - tempfile
3.3.0 - tracing
0.1.37 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - twox-hash
1.6.3 - wasm-bindgen
0.2.83 - wasm-bindgen-futures
0.4.33 - wasmtime
1.0.2 - wasmtime-asm-macros
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2
- aes
chacha20
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6used bychacha20poly1305
0.9.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5used bychrono
0.4.23crates.io↘ 7↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411fdepends oncid
0.8.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2cipher
0.3.0crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7depends onckb-merkle-mountain-range
0.5.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8depends onused byclang-sys
1.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3depends onused byclap
4.0.32crates.io↘ 7↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39depends onclap_derive
4.0.21crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014used byclap_lex
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8depends onused bycoarsetime
0.1.22crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum454038500439e141804c655b4cd1bc6a70bcb95cd2bc9463af5661b6956f0e46codespan-reporting
0.11.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6edepends onused bycomfy-table
6.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume621e7e86c46fd8a14c32c6ae3cb95656621b4743a27d0cffedb831d46e7ad21concurrent-queue
2.0.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390bdepends onconsole
0.15.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718cused byconstant_time_eq
0.1.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbcconstant_time_eq
0.2.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279used byconvert_case
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0eused bycore-foundation
0.9.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146depends oncore-foundation-sys
0.8.3crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dccore2
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505depends onused bycpp_demangle
0.3.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710fdepends onused bycpu-time
1.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume9e393a7668fe1fad3075085b86c781883000b4ede868f43627b34a87c8b7deddepends onused bycpufeatures
0.2.5crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320depends oncranelift-bforest
0.88.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52056f6d0584484b57fa6c1a65c1fcb15f3780d8b6a758426d9e3084169b2ddddepends onused bycranelift-codegen
0.88.2crates.io↘ 12↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18fed94c8770dc25d01154c3ffa64ed0b3ba9d583736f305fed7beebe5d9cf74depends oncranelift-codegen-meta
0.88.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c451b81faf237d11c7e4f3165eeb6bac61112762c5cfe7b4c0fb7241474358fdepends onused bycranelift-entity
0.88.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87a0f1b2fdc18776956370cf8d9b009ded3f855350c480c1c52142510961f352depends oncranelift-frontend
0.88.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34897538b36b216cc8dd324e73263596d51b8cf610da6498322838b2546baf8acranelift-isle
0.88.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b2629a569fae540f16a76b70afcc87ad7decb38dc28fa6c648ac73b51e78470used bycranelift-native
0.88.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20937dab4e14d3e225c5adfc9c7106bafd4ac669bdb43027b911ff794c6fb318used bycranelift-wasm
0.88.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80fc2288957a94fd342a015811479de1837850924166d1f1856d8406e6f3609bdepends onused bycrc32fast
1.3.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880ddepends oncrossbeam-channel
0.5.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521depends onused bycrossbeam-deque
0.8.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fcused bycrossbeam-epoch
0.9.13crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5aused bycrossbeam-queue
0.3.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353adddepends oncrossbeam-utils
0.8.14crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929fdepends oncrunchy
0.2.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-bigint
0.4.9crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17efcrypto-common
0.1.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3depends onused bycrypto-mac
0.8.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onused bycrypto-mac
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714depends onused byctor
0.1.26crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096depends onused byctr
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761eadepends onused bycumulus-client-cli
0.1.0github.com/paritytech/cumulus↘ 8↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncumulus-client-collator
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.25 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-overseer
0.9.36 - polkadot-primitives
0.9.36 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - tracing
0.1.37
- cumulus-client-consensus-common
cumulus-client-consensus-aura
0.1.0github.com/paritytech/cumulus↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- async-trait
0.1.60 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.25 - parity-scale-codec
3.2.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tracing
0.1.37
used by- async-trait
cumulus-client-consensus-common
0.1.0github.com/paritytech/cumulus↘ 16↖ 4sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- async-trait
0.1.60 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - dyn-clone
1.0.10 - futures
0.3.25 - log
0.4.17 - parity-scale-codec
3.2.1 - polkadot-primitives
0.9.36 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-runtime
7.0.0 - sp-trie
7.0.0 - tracing
0.1.37
- async-trait
cumulus-client-network
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- async-trait
0.1.60 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.25 - futures-timer
3.0.2 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - sc-client-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - tracing
0.1.37
- async-trait
cumulus-client-pov-recovery
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.25 - futures-timer
3.0.2 - parity-scale-codec
3.2.1 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-overseer
0.9.36 - polkadot-primitives
0.9.36 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-consensus
0.10.0-dev - sp-maybe-compressed-blob
4.1.0-dev - sp-runtime
7.0.0 - tracing
0.1.37
- cumulus-primitives-core
cumulus-client-service
0.1.0github.com/paritytech/cumulus↘ 21↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - futures
0.3.25 - parking_lot
0.12.1 - polkadot-primitives
0.9.36 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0
used by- cumulus-client-cli
cumulus-pallet-aura-ext
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncumulus-pallet-dmp-queue
0.1.0github.com/paritytech/cumulus↘ 10↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncumulus-pallet-parachain-system
0.1.0github.com/paritytech/cumulus↘ 21↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- bytes
1.3.0 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - environmental
1.1.4 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - log
0.4.17 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - scale-info
2.3.1 - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-trie
7.0.0 - sp-version
5.0.0
- bytes
cumulus-pallet-parachain-system-proc-macro
0.1.0github.com/paritytech/cumulus↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0cumulus-pallet-xcm
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncumulus-pallet-xcmp-queue
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncumulus-primitives-core
0.1.0github.com/paritytech/cumulus↘ 8↖ 24sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - opal-runtime
0.9.36 - orml-xtokens
0.4.1-dev - parachain-info
0.1.0 - quartz-runtime
0.9.36 - unique-node
0.9.36 - unique-runtime
0.9.36 - up-common
0.9.36
- cumulus-client-collator
cumulus-primitives-parachain-inherent
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- async-trait
0.1.60 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - parity-scale-codec
3.2.1 - sc-client-api
4.0.0-dev - scale-info
2.3.1 - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-storage
7.0.0 - sp-trie
7.0.0 - tracing
0.1.37
- async-trait
cumulus-primitives-timestamp
0.1.0github.com/paritytech/cumulus↘ 6↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncumulus-primitives-utility
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncumulus-relay-chain-inprocess-interface
0.1.0github.com/paritytech/cumulus↘ 18↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- async-trait
0.1.60 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.25 - futures-timer
3.0.2 - polkadot-cli
0.9.36 - polkadot-client
0.9.36 - polkadot-service
0.9.36 - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0
- async-trait
cumulus-relay-chain-interface
0.1.0github.com/paritytech/cumulus↘ 13↖ 9sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends onused by- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - unique-node
0.9.36
- cumulus-client-consensus-common
cumulus-relay-chain-minimal-node
0.1.0github.com/paritytech/cumulus↘ 33↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- array-bytes
6.0.0 - async-trait
0.1.60 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - futures
0.3.25 - lru
0.8.1 - polkadot-core-primitives
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-primitives
0.9.36 - polkadot-service
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-runtime
7.0.0 - tokio
1.23.0 - tracing
0.1.37 - url
2.3.1
- array-bytes
cumulus-relay-chain-rpc-interface
0.1.0github.com/paritytech/cumulus↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends on- async-trait
0.1.60 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.25 - futures-timer
3.0.2 - jsonrpsee
0.16.2 - lru
0.8.1 - parity-scale-codec
3.2.1 - polkadot-service
0.9.36 - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - serde
1.0.151 - serde_json
1.0.91 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-state-machine
0.13.0 - sp-storage
7.0.0 - tokio
1.23.0 - tracing
0.1.37 - url
2.3.1
- async-trait
cumulus-test-relay-sproof-builder
0.1.0github.com/paritytech/cumulus↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends oncurve25519-dalek
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216used bycurve25519-dalek
3.2.0crates.io↘ 5↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61curve25519-dalek
4.0.0-pre.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67bc65846be335cb20f4e52d49a437b773a2c1fdb42b19fc84e79e6f6771536fused bycxx
1.0.85crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fdcxx-build
1.0.85crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0depends oncxxbridge-flags
1.0.85crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59used bycxxbridge-macro
1.0.85crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6depends onused bydata-encoding
2.3.3crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fbdata-encoding-macro
0.1.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029acaused bydata-encoding-macro-internal
0.1.10crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038dbdepends onused byder
0.6.1crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4dedepends onderivative
2.2.0crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770bdepends onderive_more
0.99.17crates.io↘ 5↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321used by- polkadot-availability-distribution
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-parachain
0.9.36 - polkadot-runtime-parachains
0.9.36 - prioritized-metered-channel
0.2.0 - reed-solomon-novelpoly
1.0.0 - scale-info
2.3.1
- polkadot-availability-distribution
difflib
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8used bydigest
0.8.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondigest
0.10.6crates.io↘ 3↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76fdirectories
4.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210depends onused bydirectories-next
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbcdepends onused bydirs-sys
0.3.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6depends onused bydirs-sys-next
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4ddepends onused bydns-parser
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbeadepends onused bydowncast
0.11.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1used bydowncast-rs
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650used bydtoa
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc00704156a7de8df8da0911424e30c2049957b0a714542a44e05fe693dd85313used bydyn-clonable
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4depends onused bydyn-clonable-impl
0.9.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5depends onused bydyn-clone
1.0.10crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9b0705efd4599c15a38151f4721f7bc388306f61084d3bfd50bd07fbca5cb60ecdsa
0.14.8crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5cused byed25519
1.5.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369depends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9dused byed25519-zebra
3.1.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6used byeither
1.8.0crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797elliptic-curve
0.12.3crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3depends onused byencode_unicode
0.3.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831fused byenum-as-inner
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116used byenumflags2
0.7.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccbdepends onenumflags2_derive
0.7.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5aedepends onused byenumn
0.1.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume88bcb3a067a6555d577aba299e75eff9942da276e6506fc6274327daa026132depends onused byenv_logger
0.9.3crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7environmental
1.1.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15berrno
0.2.8crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1used byerrno-dragonfly
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bfdepends onused byethbloom
0.12.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007efused byethbloom
0.13.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60depends onused byethereum
0.12.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23750149fe8834c0e24bb9adcbacbe06c45b9861f15df53e09f26cb7c4ab91efdepends onused byethereum
0.14.0crates.io↘ 10↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a89fb87a9e103f71b903b80b670200b54cc67a07578f070681f1fffb7396fb7depends onused by- evm
0.35.0 - evm-coder
0.1.5 - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - pallet-common
0.1.12 - pallet-ethereum
4.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-fungible
0.1.9 - pallet-nonfungible
0.1.12 - pallet-refungible
0.2.11
- evm
ethereum-types
0.13.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6depends onused byethereum-types
0.14.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8eedepends onevent-listener
2.5.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0evm
0.35.0github.com/uniquenetwork/evm↘ 13↖ 4sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2adepends onevm-coder
0.1.5workspace↘ 13↖ 11depends onevm-coder-procedural
0.2.2workspace↘ 6↖ 1evm-core
0.35.0github.com/uniquenetwork/evm↘ 4↖ 4sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2aevm-gasometer
0.35.0github.com/uniquenetwork/evm↘ 4↖ 1sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2aused byevm-runtime
0.35.0github.com/uniquenetwork/evm↘ 5↖ 2sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2aused byexit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byexpander
0.0.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881used byexpander
0.0.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3774182a5df13c3d1690311ad32fbe913feef26baba609fa2dd5f72042bd2ab6fallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.8.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499depends onfatality
0.0.6crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ad875162843b0d046276327afe0136e9ed3a23d5a754210fb6f1f33610d39abdepends onused by- polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-statement-distribution
0.9.36
- polkadot-availability-distribution
fatality-proc-macro
0.0.6crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bddepends onused byfc-consensus
2.0.0-devgithub.com/uniquenetwork/frontier↘ 12↖ 1sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onused byfc-db
2.0.0-devgithub.com/uniquenetwork/frontier↘ 12↖ 5sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfc-mapping-sync
2.0.0-devgithub.com/uniquenetwork/frontier↘ 10↖ 2sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfc-rpc
2.0.0-devgithub.com/uniquenetwork/frontier↘ 36↖ 2sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends on- ethereum
0.14.0 - ethereum-types
0.14.1 - evm
0.35.0 - fc-db
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.25 - hex
0.4.3 - jsonrpsee
0.16.2 - libsecp256k1
0.7.1 - log
0.4.17 - lru
0.8.1 - parity-scale-codec
3.2.1 - prometheus
0.13.3 - rand
0.8.5 - rlp
0.5.2 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-storage
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.23.0
- ethereum
fc-rpc-core
1.1.0-devgithub.com/uniquenetwork/frontier↘ 7↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byff
0.12.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160depends onfiat-crypto
0.1.17crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma214f5bb88731d436478f3ae1f8a277b62124089ba9fb67f4f93fb100ef73c90used byfile-per-thread-logger
0.1.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02fdepends onused byfiletime
0.2.19crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9finality-grandpa
0.16.0crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5depends onfixed-hash
0.7.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493cfixed-hash
0.8.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534fixedbitset
0.4.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80used byflate2
1.0.25crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841used byflexi_logger
0.24.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumade8e86c48285f138a4d6ca15a2912e39bd6c74d62db42da4f1985f651a0b057depends onused byfloat-cmp
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4depends onused byfnv
1.0.7crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
3.0.0github.com/paritytech/substrate↘ 1↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onform_urlencoded
1.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8depends onused byfp-consensus
2.0.0-devgithub.com/uniquenetwork/frontier↘ 5↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14fp-ethereum
1.0.0-devgithub.com/uniquenetwork/frontier↘ 8↖ 2sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfp-evm
3.0.0-devgithub.com/uniquenetwork/frontier↘ 7↖ 13sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onused byfp-evm-mapping
0.1.0github.com/uniquenetwork/frontier↘ 2↖ 9sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfp-rpc
3.0.0-devgithub.com/uniquenetwork/frontier↘ 10↖ 10sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfp-self-contained
1.0.0-devgithub.com/uniquenetwork/frontier↘ 6↖ 4sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfp-storage
2.0.0github.com/uniquenetwork/frontier↘ 2↖ 4sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onfragile
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaaused byframe-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 74sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- frame-benchmarking-cli
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.3 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-migration
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.12 - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm-benchmarks
0.9.36 - polkadot-client
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36 - xcm-executor
0.9.36
- frame-benchmarking-cli
frame-benchmarking-cli
4.0.0-devgithub.com/paritytech/substrate↘ 45↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- Inflector
0.11.4 - array-bytes
4.2.0 - chrono
0.4.23 - clap
4.0.32 - comfy-table
6.1.3 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - gethostname
0.2.3 - handlebars
4.3.6 - hash-db
0.15.2 - itertools
0.10.5 - kvdb
0.13.0 - lazy_static
1.4.0 - linked-hash-map
0.5.6 - log
0.4.17 - memory-db
0.31.0 - parity-scale-codec
3.2.1 - rand
0.8.5 - rand_pcg
0.3.1 - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - serde
1.0.151 - serde_json
1.0.91 - serde_nanos
0.1.2 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-storage
7.0.0 - sp-trie
7.0.0 - tempfile
3.3.0 - thiserror
1.0.38 - thousands
0.2.0
- Inflector
frame-election-provider-solution-type
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51frame-election-provider-support
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- kusama-runtime
0.9.36 - pallet-bags-list
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-test-runtime
0.9.36 - westend-runtime
0.9.36
- kusama-runtime
frame-executive
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onframe-metadata
15.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2dused byframe-remote-externalities
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused byframe-support
4.0.0-devgithub.com/paritytech/substrate↘ 25↖ 122sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- bitflags
1.3.2 - frame-metadata
15.0.0 - frame-support-procedural
4.0.0-dev - impl-trait-for-tuples
0.2.2 - k256
0.11.6 - log
0.4.17 - once_cell
1.16.0 - parity-scale-codec
3.2.1 - paste
1.0.11 - scale-info
2.3.1 - serde
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-core
7.0.0 - sp-core-hashing-proc-macro
5.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-tracing
6.0.0 - sp-weights
4.0.0 - tt-call
1.0.9
used by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - evm-coder
0.1.5 - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.36 - kusama-runtime-constants
0.9.36 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.12 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parachain-info
0.1.0 - polkadot-parachain
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - rococo-runtime-constants
0.9.36 - test-runtime-constants
0.9.36 - tests
0.1.1 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - westend-runtime
0.9.36 - westend-runtime-constants
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- bitflags
frame-support-procedural
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused byframe-support-procedural-tools
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onframe-support-procedural-tools-derive
3.0.0github.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onframe-system
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 105sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.12 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parachain-info
0.1.0 - polkadot-client
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - tests
0.1.1 - unique-runtime
0.9.36 - up-data-structs
0.2.2 - westend-runtime
0.9.36 - xcm-builder
0.9.36
- cumulus-pallet-aura-ext
frame-system-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onframe-system-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onframe-try-runtime
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51fs_extra
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394fs-err
2.9.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541fs2
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213depends onused byfunty
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7used byfunty
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9cused byfutures
0.1.31crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678used byfutures
0.3.25crates.io↘ 7↖ 121sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - exit-future
0.2.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.16.0 - frame-remote-externalities
0.10.0-dev - if-watch
2.0.0 - libp2p
0.49.0 - libp2p-core
0.37.0 - libp2p-dns
0.37.0 - libp2p-identify
0.40.0 - libp2p-kad
0.41.0 - libp2p-mdns
0.41.0 - libp2p-mplex
0.37.0 - libp2p-noise
0.40.0 - libp2p-ping
0.40.1 - libp2p-request-response
0.22.1 - libp2p-swarm
0.40.1 - libp2p-tcp
0.37.0 - libp2p-wasm-ext
0.37.0 - libp2p-websocket
0.39.0 - libp2p-yamux
0.41.1 - mick-jaeger
0.1.8 - mmr-gadget
4.0.0-dev - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.3 - orchestra
0.0.2 - polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-cli
0.9.36 - polkadot-client
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36 - polkadot-test-service
0.9.36 - prioritized-metered-channel
0.2.0 - rtnetlink
0.10.1 - rw-stream-sink
0.3.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - substrate-test-utils
4.0.0-dev - unique-node
0.9.36 - unique-rpc
0.1.2 - wasm-timer
0.2.5 - yamux
0.10.2
- beefy-gadget
futures-channel
0.3.25crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eeddepends onfutures-core
0.3.25crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3acfutures-executor
0.3.25crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2used byfutures-io
0.3.25crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4ebfutures-lite
1.12.0crates.io↘ 7↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48depends onfutures-macro
0.3.25crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835ddepends onused byfutures-rustls
0.22.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bddepends onused byfutures-sink
0.3.25crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9futures-task
0.3.25crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6eafutures-timer
3.0.2crates.io↘ 0↖ 44sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cused by- beefy-gadget
4.0.0-dev - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.16.0 - jsonrpsee-core
0.16.2 - libp2p
0.49.0 - libp2p-core
0.37.0 - libp2p-identify
0.40.0 - libp2p-kad
0.41.0 - libp2p-ping
0.40.1 - libp2p-swarm
0.40.1 - libp2p-tcp
0.37.0 - orchestra
0.0.2 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-overseer
0.9.36 - prioritized-metered-channel
0.2.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-consensus
0.10.0-dev - sp-timestamp
4.0.0-dev
- beefy-gadget
futures-util
0.3.25crates.io↘ 11↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6depends onfxhash
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50cdepends onused bygeneric-array
0.12.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bddepends onused bygeneric-array
0.14.6crates.io↘ 2↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9depends ongethostname
0.2.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862edepends ongetrandom
0.1.16crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.8crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31ghash
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99depends onused bygimli
0.26.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5dgimli
0.27.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdec7af912d60cdbd3677c1af9352ebae6fb8394d165568a2234df0fa00f87793used byglob
0.3.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.9crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0aused bygloo-timers
0.2.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum98c4a8d6391675c6b2ee1a6c8d06e8e2d03605c44cec1270675985a4c2a5500bused bygroup
0.12.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7depends onused byh2
0.3.15crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4depends onused byhandlebars
4.3.6crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum035ef95d03713f2c347a72547b7cd38cbc9af7cd51e6099fb62d586d4a6dee3ahash-db
0.15.2crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364ahash256-std-hasher
0.15.2crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2depends onhashbrown
0.12.3crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888depends onheck
0.4.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9hermit-abi
0.1.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhermit-abi
0.2.6crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7depends onhex
0.4.3crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70hex-literal
0.3.4crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0hmac
0.8.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840depends onhmac
0.11.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69bdepends onused byhmac
0.12.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5edepends onused byhmac-drbg
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1depends onused byhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhttp
0.2.8crates.io↘ 3↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399depends onhttp-body
0.4.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1depends onused byhttp-range-header
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29used byhttparse
1.8.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904used byhttpdate
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421used byhumantime
2.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4used byhyper
0.14.23crates.io↘ 16↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3cdepends onhyper-rustls
0.23.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661cdepends onused byiana-time-zone
0.1.53crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765depends onused byiana-time-zone-haiku
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dcadepends onused byidna
0.2.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8used byidna
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6used byif-addrs
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9depends onused byif-watch
2.0.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065c008e570a43c00de6aed9714035e5ea6a498c255323db9091722af6ee67dddepends onimpl-codec
0.6.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2fdepends onimpl-rlp
0.3.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808depends onimpl-serde
0.4.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cddepends onimpl-trait-for-tuples
0.2.2crates.io↘ 3↖ 24sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395ebdepends onused by- cumulus-pallet-parachain-system
0.1.0 - evm-coder
0.1.5 - fp-evm
3.0.0-dev - frame-support
4.0.0-dev - opal-runtime
0.9.36 - orml-traits
0.4.1-dev - pallet-authorship
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-session
4.0.0-dev - pallet-treasury
4.0.0-dev - parity-scale-codec
2.3.1 - parity-scale-codec
3.2.1 - polkadot-runtime-common
0.9.36 - quartz-runtime
0.9.36 - sc-chain-spec
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-wasm-interface
7.0.0 - sp-weights
4.0.0 - unique-runtime
0.9.36 - up-sponsorship
0.1.0 - xcm
0.9.36 - xcm-executor
0.9.36
- cumulus-pallet-parachain-system
indexmap
1.9.2crates.io↘ 3↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399depends onInflector
0.11.4crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.12crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends oninteger-encoding
3.0.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02used byinteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byio-lifetimes
0.7.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074used byio-lifetimes
1.0.3crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63cdepends onused byip_network
0.4.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1ipconfig
0.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5beused byipnet
2.7.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917eis-terminal
0.4.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189used byitertools
0.10.5crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473depends onitoa
1.0.5crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440jobserver
0.1.25crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90bdepends onused byjs-sys
0.3.60crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47depends onjsonrpsee
0.16.2crates.io↘ 6↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d291e3a5818a2384645fd9756362e6d89cf0541b0b916fa7702ea4a9833608edepends onused by- beefy-gadget-rpc
4.0.0-dev - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-rpc
0.9.36 - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2
- beefy-gadget-rpc
jsonrpsee-client-transport
0.16.2crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum965de52763f2004bc91ac5bcec504192440f0b568a5d621c59d9dbd6f886c3fbdepends onused byjsonrpsee-core
0.16.2crates.io↘ 20↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4e70b4439a751a5de7dd5ed55eacff78ebf4ffe0fc009cb1ebb11417f5b536bdepends onjsonrpsee-proc-macros
0.16.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaa6da1e4199c10d7b1d0a6e5e8bd8e55f351163b6f4b3cbb044672a69bd4c1cused byjsonrpsee-server
0.16.2crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fb69dad85df79527c019659a992498d03f8495390496da2f07e6c24c2b356fcdepends onused byjsonrpsee-types
0.16.2crates.io↘ 6↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5bd522fe1ce3702fd94812965d7bb7a3364b1c9aba743944c5a00529aae80f8cjsonrpsee-ws-client
0.16.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b83daeecfc6517cfe210df24e570fb06213533dfb990318fae781f4c7119dd9used byk256
0.11.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8bused bykeccak
0.1.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768depends onkusama-runtime
0.9.36github.com/paritytech/polkadot↘ 90↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - kusama-runtime-constants
0.9.36 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parity-scale-codec
3.2.1 - polkadot-primitives
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.151 - serde_derive
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- bitvec
kusama-runtime-constants
0.9.36github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bykv-log-macro
1.0.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977fdepends onused bykvdb
0.13.0crates.io↘ 1↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d770dcb02bf6835887c3a979b5107a04ff4bbde97a5f0928d27404a155add9depends onused by- frame-benchmarking-cli
4.0.0-dev - kvdb-memorydb
0.13.0 - kvdb-rocksdb
0.17.0 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-service
0.9.36 - sc-client-db
0.10.0-dev - sp-database
4.0.0-dev
- frame-benchmarking-cli
kvdb-memorydb
0.13.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2depends onused bykvdb-rocksdb
0.17.0crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2182b8219fee6bd83aacaab7344e840179ae079d5216aa4e249b4d704646a844lazy_static
1.4.0crates.io↘ 0↖ 27sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.60.1 - bstr
0.2.17 - console
0.15.2 - flexi_logger
0.24.2 - frame-benchmarking-cli
4.0.0-dev - libp2p
0.49.0 - libp2p-core
0.37.0 - libp2p-noise
0.40.0 - logtest
2.0.0 - mockall
0.11.3 - polkadot-node-jaeger
0.9.36 - prometheus
0.13.3 - prost-build
0.11.5 - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - schannel
0.1.20 - sharded-slab
0.1.4 - sp-core
7.0.0 - sp-keyring
7.0.0 - sp-panic-handler
5.0.0 - sp-trie
7.0.0 - statrs
0.15.0 - tracing-log
0.1.3 - tracing-subscriber
0.2.25 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used bylibc
0.2.139crates.io↘ 0↖ 76sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79used by- android_system_properties
0.1.5 - async-io
1.12.0 - async-process
1.6.0 - atty
0.2.14 - backtrace
0.3.67 - bzip2-sys
0.1.11+1.0.8 - clang-sys
1.4.0 - coarsetime
0.1.22 - console
0.15.2 - core-foundation
0.9.3 - cpu-time
1.0.0 - cpufeatures
0.2.5 - cranelift-native
0.88.2 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - errno-dragonfly
0.1.2 - fdlimit
0.2.1 - filetime
0.2.19 - fs2
0.4.3 - gethostname
0.2.3 - getrandom
0.1.16 - getrandom
0.2.8 - hermit-abi
0.1.19 - hermit-abi
0.2.6 - hostname
0.3.1 - if-addrs
0.7.0 - io-lifetimes
1.0.3 - jobserver
0.1.25 - libp2p-tcp
0.37.0 - librocksdb-sys
0.8.0+7.4.4 - lz4
1.24.0 - lz4-sys
1.9.4 - mach
0.3.2 - memmap2
0.5.8 - mio
0.8.5 - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-sys
0.8.3 - nix
0.24.3 - num_cpus
1.15.0 - parity-db
0.4.2 - parking_lot_core
0.8.6 - parking_lot_core
0.9.5 - polling
2.5.2 - rand
0.7.3 - rand
0.8.5 - ring
0.16.20 - rocksdb
0.19.0 - rpassword
7.2.0 - rtoolbox
0.0.1 - rustix
0.35.13 - rustix
0.36.5 - sc-executor-wasmtime
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - security-framework
2.7.0 - security-framework-sys
2.6.1 - signal-hook
0.3.14 - signal-hook-registry
1.4.0 - socket2
0.4.7 - static_init
0.5.2 - static_init
1.0.3 - system-configuration-sys
0.5.0 - tempfile
3.3.0 - terminal_size
0.1.17 - tikv-jemalloc-ctl
0.5.0 - tikv-jemalloc-sys
0.5.2+5.3.0-patched - time
0.1.45 - tokio
1.23.0 - wasm-opt
0.110.2 - wasmtime
1.0.2 - wasmtime-runtime
1.0.2 - which
4.3.0 - zstd-safe
5.0.2+zstd.1.5.2 - zstd-sys
2.0.4+zstd.1.5.2
- android_system_properties
libloading
0.7.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9fdepends onused bylibm
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9aused bylibm
0.2.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffblibp2p
0.49.0crates.io↘ 26↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec878fda12ebec479186b3914ebc48ff180fa4c51847e11a1a68bf65249e02c1depends on- bytes
1.3.0 - futures
0.3.25 - futures-timer
3.0.2 - getrandom
0.2.8 - instant
0.1.12 - lazy_static
1.4.0 - libp2p-core
0.37.0 - libp2p-dns
0.37.0 - libp2p-identify
0.40.0 - libp2p-kad
0.41.0 - libp2p-mdns
0.41.0 - libp2p-metrics
0.10.0 - libp2p-mplex
0.37.0 - libp2p-noise
0.40.0 - libp2p-ping
0.40.1 - libp2p-request-response
0.22.1 - libp2p-swarm
0.40.1 - libp2p-swarm-derive
0.30.1 - libp2p-tcp
0.37.0 - libp2p-wasm-ext
0.37.0 - libp2p-websocket
0.39.0 - libp2p-yamux
0.41.1 - multiaddr
0.14.0 - parking_lot
0.12.1 - pin-project
1.0.12 - smallvec
1.10.0
used by- sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-telemetry
4.0.0-dev
- bytes
libp2p-core
0.37.0crates.io↘ 25↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum799676bb0807c788065e57551c6527d461ad572162b0519d1958946ff9e0539ddepends on- asn1_der
0.7.5 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.8.0 - fnv
1.0.7 - futures
0.3.25 - futures-timer
3.0.2 - instant
0.1.12 - lazy_static
1.4.0 - log
0.4.17 - multiaddr
0.14.0 - multihash
0.16.3 - multistream-select
0.12.1 - parking_lot
0.12.1 - pin-project
1.0.12 - prost
0.11.5 - prost-build
0.11.5 - rand
0.8.5 - rw-stream-sink
0.3.0 - sha2
0.10.6 - smallvec
1.10.0 - thiserror
1.0.38 - unsigned-varint
0.7.1 - void
1.0.2 - zeroize
1.5.7
- asn1_der
libp2p-dns
0.37.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2322c9fb40d99101def6a01612ee30500c89abbbecb6297b3cd252903a4c1720depends onused bylibp2p-identify
0.40.0crates.io↘ 13↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcf9a121f699e8719bda2e6e9e9b6ddafc6cff4602471d6481c1067930ccb29bdepends onlibp2p-kad
0.41.0crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6721c200e2021f6c3fab8b6cf0272ead8912d871610ee194ebd628cecf428f22depends onlibp2p-mdns
0.41.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum761704e727f7d68d58d7bc2231eafae5fc1b9814de24290f126df09d4bd37a15depends onused bylibp2p-metrics
0.10.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ee31b08e78b7b8bfd1c4204a9dd8a87b4fcdf6dafc57eb51701c1c264a81cb9depends onused bylibp2p-mplex
0.37.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum692664acfd98652de739a8acbb0a0d670f1d67190a49be6b4395e22c37337d89depends onused bylibp2p-noise
0.40.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum048155686bd81fe6cb5efdef0c6290f25ad32a0a42e8f4f72625cf6a505a206fdepends onused bylibp2p-ping
0.40.1crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7228b9318d34689521349a86eb39a3c3a802c9efc99a0568062ffb80913e3f91depends onlibp2p-request-response
0.22.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8827af16a017b65311a410bb626205a9ad92ec0473967618425039fa5231adc1depends onused bylibp2p-swarm
0.40.1crates.io↘ 12↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46d13df7c37807965d82930c0e4b04a659efcb6cca237373b206043db5398ecfdepends onlibp2p-swarm-derive
0.30.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0eddc4497a8b5a506013c40e8189864f9c3a00db2b25671f428ae9007f3ba32depends onused bylibp2p-tcp
0.37.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9839d96761491c6d3e238e70554b856956fca0ab60feb9de2cd08eed4473fa92depends onused bylibp2p-wasm-ext
0.37.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma17b5b8e7a73e379e47b1b77f8a82c4721e97eca01abcd18e9cd91a23ca6ce97depends onused bylibp2p-websocket
0.39.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3758ae6f89b2531a24b6d9f5776bda6a626b60a57600d7185d43dfa75ca5ecc4depends onused bylibp2p-yamux
0.41.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d6874d66543c4f7e26e3b8ca9a6bead351563a13ab4fafd43c7927f7c0d6c12used bylibrocksdb-sys
0.8.0+7.4.4crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum611804e4666a25136fcc5f8cf425ab4d26c7f74ea245ffe92ea23b85b6420b5ddepends onused bylibsecp256k1
0.7.1crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1depends onlibsecp256k1-core
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451depends onlibsecp256k1-gen-ecmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809depends onused bylibsecp256k1-gen-genmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7cdepends onused bylibz-sys
1.1.8crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbfdepends onlink-cplusplus
1.0.8crates.io↘ 1↖ 1linked_hash_set
0.1.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onlinked-hash-map
0.5.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770flinregress
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8depends onused bylinux-raw-sys
0.0.46crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854dused bylinux-raw-sys
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4used bylock_api
0.4.9crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4dfdepends onlog
0.4.17crates.io↘ 2↖ 174sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382edepends onused by- async-io
1.12.0 - async-std
1.12.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cranelift-codegen
0.88.2 - cranelift-frontend
0.88.2 - cranelift-wasm
0.88.2 - cumulus-client-consensus-common
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - env_logger
0.9.3 - evm
0.35.0 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - file-per-thread-logger
0.1.5 - finality-grandpa
0.16.0 - flexi_logger
0.24.2 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - globset
0.4.9 - handlebars
4.3.6 - hyper-rustls
0.23.2 - if-watch
2.0.0 - kusama-runtime
0.9.36 - kv-log-macro
1.0.7 - libp2p-core
0.37.0 - libp2p-dns
0.37.0 - libp2p-identify
0.40.0 - libp2p-kad
0.41.0 - libp2p-mdns
0.41.0 - libp2p-mplex
0.37.0 - libp2p-noise
0.40.0 - libp2p-ping
0.40.1 - libp2p-request-response
0.22.1 - libp2p-swarm
0.40.1 - libp2p-tcp
0.37.0 - libp2p-websocket
0.39.0 - libp2p-yamux
0.41.1 - logtest
2.0.0 - mio
0.8.5 - mmr-gadget
4.0.0-dev - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.3 - opal-runtime
0.9.36 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.3.0 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-offences
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-unique-scheduler-v2
0.1.0 - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parity-db
0.4.2 - polkadot-cli
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-performance-test
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - polling
2.5.2 - prost-build
0.11.5 - quartz-runtime
0.9.36 - regalloc2
0.3.2 - rococo-runtime
0.9.36 - rtnetlink
0.10.1 - rustls
0.20.7 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-peerset
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-wasm-interface
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - thrift
0.15.0 - tracing
0.1.37 - tracing-log
0.1.3 - trie-db
0.24.0 - try-runtime-cli
0.10.0-dev - unique-node
0.9.36 - unique-runtime
0.9.36 - want
0.3.0 - wasm-bindgen-backend
0.2.83 - wasmtime
1.0.2 - wasmtime-cache
1.0.2 - wasmtime-cranelift
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2 - westend-runtime
0.9.36 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36 - yamux
0.10.2
- async-io
logtest
2.0.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb3e43a8657c1d64516dcc9db8ca03826a4aceaf89d5ce1b37b59f6ff0e43026depends onlru
0.8.1crates.io↘ 1↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - libp2p-identify
0.40.0 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-service
0.9.36 - sc-executor
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-trie
7.0.0
- cumulus-relay-chain-minimal-node
lru-cache
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1cdepends onused bylz4
1.24.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1depends onused bylz4-sys
1.9.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900depends onused bymach
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onused bymatch_cfg
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4used bymatchers
0.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1depends onused bymatrixmultiply
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumadd85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84depends onused bymemchr
2.5.0crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566dmemfd
0.6.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efbdepends onused bymemmap2
0.5.8crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dcdepends onmemoffset
0.6.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79cedepends onused bymemoffset
0.7.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4depends onused bymemory_units
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3used bymemory-db
0.31.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e0c7cba9ce19ac7ffd2053ac9f49843bbd3f4318feedfd74e85c19d5fb0ba66depends onmerlin
2.0.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42mick-jaeger
0.1.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532depends onused byminimal-lexical
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79aused byminiz_oxide
0.6.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fadepends onused bymio
0.8.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158deused bymmr-gadget
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bymmr-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bymockall
0.11.3crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50e4a1c770583dac7ab5e2f6c139153b783a53a1bbee9729613f193e59828326depends onmockall_derive
0.11.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum832663583d5fa284ca8810bf7015e46c9fff9622d3cf34bd1eea5003fec06dd0used bymultiaddr
0.14.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261depends onmultibase
0.9.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404used bymultihash
0.16.3crates.io↘ 9↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2ccdepends onmultihash-derive
0.8.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcddepends onused bymultimap
0.8.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6aused bymultistream-select
0.12.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27aused bynalgebra
0.27.1crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum462fffe4002f4f2e1f6a9dcf12cc1a6fc0e15989014efc02a941d3e0f5dc2120depends onused bynalgebra-macros
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218depends onused bynames
0.13.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146depends onused bynanorand
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3netlink-packet-core
0.4.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297netlink-packet-route
0.12.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaabdepends onused bynetlink-packet-utils
0.5.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845enetlink-proto
0.10.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6depends onused bynetlink-sys
0.8.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027used bynix
0.24.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069depends onused bynohash-hasher
0.2.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451nom
7.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36depends onused bynormalize-line-endings
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5beused bynu-ansi-term
0.46.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84depends onused bynum_cpus
1.15.0crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593bdepends onnum_enum
0.5.7crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9depends onnum_enum_derive
0.5.7crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ceused bynum-bigint
0.4.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75fnum-complex
0.4.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19depends onused bynum-format
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3depends onused bynum-integer
0.1.45crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9depends onnum-rational
0.4.1crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0num-traits
0.2.15crates.io↘ 2↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcddepends onused by- approx
0.5.1 - chrono
0.4.23 - finality-grandpa
0.16.0 - float-cmp
0.9.0 - integer-sqrt
0.1.5 - nalgebra
0.27.1 - num-bigint
0.4.3 - num-complex
0.4.2 - num-integer
0.1.45 - num-rational
0.4.1 - ordered-float
1.1.1 - orml-traits
0.4.1-dev - rand_distr
0.4.3 - sc-consensus-babe
0.10.0-dev - simba
0.5.1 - sp-arithmetic
6.0.0 - sp-core
7.0.0 - sp-state-machine
0.13.0 - statrs
0.15.0 - wasmi_core
0.2.1
- approx
object
0.29.0crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53object
0.30.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum239da7f290cfa979f43f85a8efeee9a8a76d0827c356d37f9d3d7254d6b537fbdepends onused byonce_cell
1.16.0crates.io↘ 0↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860used by- ahash
0.7.6 - async-global-executor
2.3.1 - async-std
1.12.0 - clap
4.0.32 - coarsetime
0.1.22 - cxx-build
1.0.85 - frame-support
4.0.0-dev - pest_meta
2.5.1 - proc-macro-crate
1.2.1 - ring
0.16.20 - sc-executor-wasmtime
0.10.0-dev - sc-offchain
4.0.0-dev - sc-tracing
4.0.0-dev - thread_local
1.1.4 - tiny-bip39
0.8.2 - tracing-core
0.1.30 - trybuild
1.0.73 - wasm-bindgen-backend
0.2.83 - wasmtime
1.0.2 - wasmtime-jit-debug
1.0.2 - which
4.3.0
- ahash
opal-runtime
0.9.36workspace↘ 98↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.1.5 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - logtest
2.0.0 - num_enum
0.5.7 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-collator-selection
4.0.0 - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-nonfungible
0.1.12 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-xcm
0.9.36 - parachain-info
0.1.0 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - precompile-utils-macro
0.1.0 - rmrk-rpc
0.0.2 - scale-info
2.3.1 - serde
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
used by- app-promotion-rpc
opaque-debug
0.2.3crates.io↘ 0↖ 2opaque-debug
0.3.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssl-probe
0.1.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cfused byorchestra
0.0.2crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0aab54694ddaa8a9b703724c6ef04272b2d27bc32d2c855aae5cdd1857216b43depends onorchestra-proc-macro
0.0.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma702b2f6bf592b3eb06c00d80d05afaf7a8eff6b41bb361e397d799acc21b45adepends onused byordered-float
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7depends onused byorml-tokens
0.4.1-devgithub.com/uniquenetwork/open-runtime-module-library↘ 8↖ 4sourcegit+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68depends onorml-traits
0.4.1-devgithub.com/uniquenetwork/open-runtime-module-library↘ 11↖ 6sourcegit+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68depends onorml-utilities
0.4.1-devgithub.com/uniquenetwork/open-runtime-module-library↘ 7↖ 1sourcegit+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68depends onused byorml-vesting
0.4.1-devgithub.com/uniquenetwork/open-runtime-module-library↘ 8↖ 3sourcegit+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68depends onorml-xcm-support
0.4.1-devgithub.com/uniquenetwork/open-runtime-module-library↘ 7↖ 1sourcegit+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68depends onused byorml-xtokens
0.4.1-devgithub.com/uniquenetwork/open-runtime-module-library↘ 14↖ 3sourcegit+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68depends onos_str_bytes
6.4.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723eeused byoverload
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39used bypacked_simd_2
0.3.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282depends onused bypallet-app-promotion
0.1.3workspace↘ 20↖ 3depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-randomness-collective-flip
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-unique
0.2.1 - parity-scale-codec
3.2.1 - scale-info
2.3.1 - serde
1.0.151 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2
- frame-benchmarking
pallet-aura
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-babe
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36
- kusama-runtime
pallet-babe
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.2.1 - scale-info
2.3.1 - sp-application-crypto
7.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-bags-list
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-balances
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 22sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.3 - pallet-bags-list
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-foreign-assets
0.1.0 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-treasury
4.0.0-dev - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - tests
0.1.1 - unique-runtime
0.9.36 - westend-runtime
0.9.36
- kusama-runtime
pallet-base-fee
1.0.0github.com/uniquenetwork/frontier↘ 8↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onpallet-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-beefy-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-child-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-collator-selection
4.0.0workspace↘ 21↖ 3depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-configuration
0.1.3 - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.2.1 - rand
0.8.5 - scale-info
2.3.1 - serde
1.0.151 - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-tracing
6.0.0
- frame-benchmarking
pallet-collective
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-common
0.1.12workspace↘ 16↖ 18depends onused by- app-promotion-rpc
0.1.0 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-nonfungible
0.1.12 - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.36 - tests
0.1.1 - uc-rpc
0.1.4 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-rpc
0.1.3
- app-promotion-rpc
pallet-configuration
0.1.3workspace↘ 12↖ 5depends onpallet-conviction-voting
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bypallet-democracy
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-election-provider-multi-phase
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-election-provider-support-benchmarking
4.0.0-dev - parity-scale-codec
3.2.1 - rand
0.7.3 - scale-info
2.3.1 - sp-arithmetic
6.0.0 - sp-core
7.0.0 - sp-io
7.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-std
5.0.0 - static_assertions
1.1.0 - strum
0.24.1
- frame-benchmarking
pallet-election-provider-support-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-elections-phragmen
5.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-ethereum
4.0.0-devgithub.com/uniquenetwork/frontier↘ 21↖ 8sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends on- ethereum
0.14.0 - ethereum-types
0.14.1 - evm
0.35.0 - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.2.1 - rlp
0.5.2 - scale-info
2.3.1 - serde
1.0.151 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0
- ethereum
pallet-evm
6.0.0-devgithub.com/uniquenetwork/frontier↘ 20↖ 24sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends on- environmental
1.1.4 - evm
0.35.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex
0.4.3 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.2.1 - primitive-types
0.12.1 - rlp
0.5.2 - scale-info
2.3.1 - serde
1.0.151 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0
used by- app-promotion-rpc
0.1.0 - evm-coder
0.1.5 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.3 - pallet-common
0.1.12 - pallet-ethereum
4.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.9 - pallet-nonfungible
0.1.12 - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.36 - tests
0.1.1 - uc-rpc
0.1.4 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-rpc
0.1.3
- environmental
pallet-evm-coder-substrate
0.1.3workspace↘ 12↖ 10depends onpallet-evm-contract-helpers
0.3.0workspace↘ 17↖ 4depends on- ethereum
0.14.0 - evm-coder
0.1.5 - fp-evm-mapping
0.1.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-common
0.1.12 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-transaction-payment
0.1.1 - parity-scale-codec
3.2.1 - scale-info
2.3.1 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2 - up-sponsorship
0.1.0
- ethereum
pallet-evm-migration
0.1.1workspace↘ 12↖ 4depends onpallet-evm-precompile-simple
2.0.0-devgithub.com/uniquenetwork/frontier↘ 3↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14depends onpallet-evm-transaction-payment
0.1.1workspace↘ 13↖ 4depends onpallet-fast-unstake
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-foreign-assets
0.1.0workspace↘ 22↖ 3depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex
0.4.3 - log
0.4.17 - orml-tokens
0.4.1-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.12 - pallet-fungible
0.1.9 - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.2.1 - scale-info
2.3.1 - serde
1.0.151 - serde_json
1.0.91 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- frame-benchmarking
pallet-fungible
0.1.9workspace↘ 15↖ 5depends onpallet-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.2.1 - scale-info
2.3.1 - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-identity
4.0.0-devworkspace↘ 11↖ 0pallet-identity
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-im-online
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-indices
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-inflation
0.1.1workspace↘ 13↖ 3depends onpallet-maintenance
0.1.0workspace↘ 6↖ 3pallet-membership
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-multisig
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-nis
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-nomination-pools
1.0.0github.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-nomination-pools-benchmarking
1.0.0github.com/paritytech/substrate↘ 13↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-nomination-pools-runtime-api
1.0.0-devgithub.com/paritytech/substrate↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51pallet-nonfungible
0.1.12workspace↘ 16↖ 7depends on- ethereum
0.14.0 - evm-coder
0.1.5 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.12 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-structure
0.1.2 - parity-scale-codec
3.2.1 - scale-info
2.3.1 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - struct-versioning
0.1.0 - up-data-structs
0.2.2
- ethereum
pallet-offences
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-offences-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - parity-scale-codec
3.2.1 - scale-info
2.3.1 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-preimage
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-proxy
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-randomness-collective-flip
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-ranked-collective
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bypallet-recovery
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-referenda
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bypallet-refungible
0.2.11workspace↘ 17↖ 5depends on- derivative
2.2.0 - ethereum
0.14.0 - evm-coder
0.1.5 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.12 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-structure
0.1.2 - parity-scale-codec
3.2.1 - scale-info
2.3.1 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - struct-versioning
0.1.0 - up-data-structs
0.2.2
- derivative
pallet-rmrk-core
0.1.2workspace↘ 15↖ 4depends onpallet-rmrk-equip
0.1.2workspace↘ 14↖ 3depends onpallet-scheduler
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-session
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-grandpa
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36
- kusama-runtime
pallet-session-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-society
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-staking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.2.1 - rand_chacha
0.2.2 - scale-info
2.3.1 - serde
1.0.151 - sp-application-crypto
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
used by- kusama-runtime
0.9.36 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - rococo-runtime
0.9.36 - westend-runtime
0.9.36
- frame-benchmarking
pallet-staking-reward-curve
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51pallet-staking-reward-fn
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-state-trie-migration
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bypallet-structure
0.1.2workspace↘ 9↖ 8depends onpallet-sudo
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-template-transaction-payment
3.0.0github.com/uniquenetwork/pallet-sponsoring↘ 13↖ 3sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.36#55943b982e9b0b80465885f31f76db3dba91dac4depends onpallet-test-utils
0.1.0workspace↘ 6↖ 1pallet-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-inflation
0.1.1 - pallet-session
4.0.0-dev - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - tests
0.1.1 - unique-runtime
0.9.36 - westend-runtime
0.9.36
- kusama-runtime
pallet-tips
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-transaction-payment
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-template-transaction-payment
3.0.0 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - tests
0.1.1 - unique-runtime
0.9.36 - westend-runtime
0.9.36 - xcm-builder
0.9.36
- kusama-runtime
pallet-transaction-payment-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-transaction-payment-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-treasury
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-unique
0.2.1workspace↘ 18↖ 6depends on- ethereum
0.12.0 - evm-coder
0.1.5 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.12 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-nonfungible
0.1.12 - pallet-refungible
0.2.11 - parity-scale-codec
3.2.1 - scale-info
2.3.1 - serde
1.0.151 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2
- ethereum
pallet-unique-scheduler-v2
0.1.0workspace↘ 12↖ 2pallet-utility
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-vesting
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onpallet-whitelist
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bypallet-xcm
0.9.36github.com/paritytech/polkadot↘ 11↖ 9sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onpallet-xcm-benchmarks
0.9.36github.com/paritytech/polkadot↘ 10↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onparachain-info
0.1.0github.com/paritytech/cumulus↘ 5↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0depends onparity-db
0.4.2crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a7511a0bec4a336b5929999d02b560d2439c993cccf98c26481484e811adc43depends onparity-scale-codec
2.3.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909depends onused byparity-scale-codec
3.2.1crates.io↘ 7↖ 245sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6adepends onused by- app-promotion-rpc
0.1.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - ethereum
0.14.0 - evm
0.35.0 - evm-core
0.35.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.16.0 - fork-tree
3.0.0 - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.0.0 - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - impl-codec
0.6.0 - kusama-runtime
0.9.36 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.12 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parachain-info
0.1.0 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-core-primitives
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-erasure-coding
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-metrics
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-statement-distribution
0.9.36 - polkadot-statement-table
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rmrk-traits
0.1.0 - rococo-runtime
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool
4.0.0-dev - scale-info
2.3.1 - slot-range-helper
0.9.36 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
6.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-version-proc-macro
4.0.0-dev - sp-wasm-interface
7.0.0 - sp-weights
4.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-runtime
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.36 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- app-promotion-rpc
parity-scale-codec-derive
2.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27used byparity-scale-codec-derive
3.1.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cdused byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-wasm
0.45.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304parking
2.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72parking_lot
0.11.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99parking_lot
0.12.1crates.io↘ 2↖ 50sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228fdepends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - fc-db
2.0.0-dev - finality-grandpa
0.16.0 - jsonrpsee-core
0.16.2 - kvdb-memorydb
0.13.0 - kvdb-rocksdb
0.17.0 - libp2p
0.49.0 - libp2p-core
0.37.0 - libp2p-dns
0.37.0 - libp2p-mplex
0.37.0 - libp2p-websocket
0.39.0 - libp2p-yamux
0.41.1 - parity-db
0.4.2 - polkadot-network-bridge
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-overseer
0.9.36 - prometheus
0.13.3 - prometheus-client
0.18.1 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0 - tokio
1.23.0 - trust-dns-resolver
0.22.0 - unique-node
0.9.36 - yamux
0.10.2
- beefy-gadget
parking_lot_core
0.8.6crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dcparking_lot_core
0.9.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9baused bypaste
1.0.11crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deebapbkdf2
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbddepends onused bypbkdf2
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffadepends onused bypeeking_take_while
0.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099used bypercent-encoding
2.2.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98epest
2.5.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0depends onpest_derive
2.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcdc078600d06ff90d4ed238f0119d84ab5d43dbaad278b0e33a8820293b32344depends onused bypest_generator
2.5.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28a1af60b1c4148bb269006a750cff8e2ea36aff34d2d96cf7be0b14d1bed23cused bypest_meta
2.5.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfec8605d59fc2ae0c6c1aefc0c7c7a9769732017c0ce07f7a9cfffa7b4404f20depends onused bypetgraph
0.6.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143depends onpin-project
1.0.12crates.io↘ 1↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6eccdepends onused by- jsonrpsee-client-transport
0.16.2 - libp2p
0.49.0 - libp2p-core
0.37.0 - libp2p-swarm
0.40.1 - multistream-select
0.12.1 - orchestra
0.0.2 - polkadot-node-core-pvf
0.9.36 - polkadot-node-subsystem-util
0.9.36 - rw-stream-sink
0.3.0 - sc-network
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - tracing-futures
0.2.5
- jsonrpsee-client-transport
pin-project-internal
1.0.12crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55depends onused bypin-project-lite
0.1.12crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777used bypin-project-lite
0.2.9crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116pin-utils
0.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkg-config
0.3.26crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160platforms
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94platforms
3.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630used bypolkadot-approval-distribution
0.9.36github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-availability-bitfield-distribution
0.9.36github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-availability-distribution
0.9.36github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.25 - lru
0.8.1 - parity-scale-codec
3.2.1 - polkadot-erasure-coding
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-primitives
0.9.36 - rand
0.8.5 - sp-core
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.38 - tracing-gum
0.9.36
used by- derive_more
polkadot-availability-recovery
0.9.36github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- fatality
0.0.6 - futures
0.3.25 - lru
0.8.1 - parity-scale-codec
3.2.1 - polkadot-erasure-coding
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-primitives
0.9.36 - rand
0.8.5 - sc-network
0.10.0-dev - thiserror
1.0.38 - tracing-gum
0.9.36
used by- fatality
polkadot-cli
0.9.36github.com/paritytech/polkadot↘ 20↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- clap
4.0.32 - frame-benchmarking-cli
4.0.0-dev - futures
0.3.25 - log
0.4.17 - polkadot-client
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-performance-test
0.9.36 - polkadot-service
0.9.36 - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keyring
7.0.0 - substrate-build-script-utils
3.0.0 - thiserror
1.0.38 - try-runtime-cli
0.10.0-dev
- clap
polkadot-client
0.9.36github.com/paritytech/polkadot↘ 35↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- async-trait
0.1.60 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-system
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.25 - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-core-primitives
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- async-trait
polkadot-collator-protocol
0.9.36github.com/paritytech/polkadot↘ 15↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- always-assert
0.1.2 - bitvec
1.0.1 - fatality
0.0.6 - futures
0.3.25 - futures-timer
3.0.2 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-primitives
0.9.36 - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - thiserror
1.0.38 - tracing-gum
0.9.36
used by- always-assert
polkadot-core-primitives
0.9.36github.com/paritytech/polkadot↘ 5↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcpolkadot-dispute-distribution
0.9.36github.com/paritytech/polkadot↘ 18↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.25 - futures-timer
3.0.2 - indexmap
1.9.2 - lru
0.8.1 - parity-scale-codec
3.2.1 - polkadot-erasure-coding
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-primitives
0.9.36 - sc-network
0.10.0-dev - sp-application-crypto
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.38 - tracing-gum
0.9.36
used by- derive_more
polkadot-erasure-coding
0.9.36github.com/paritytech/polkadot↘ 7↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onpolkadot-gossip-support
0.9.36github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-network-bridge
0.9.36github.com/paritytech/polkadot↘ 17↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- always-assert
0.1.2 - async-trait
0.1.60 - bytes
1.3.0 - fatality
0.0.6 - futures
0.3.25 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-primitives
0.9.36 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sp-consensus
0.10.0-dev - thiserror
1.0.38 - tracing-gum
0.9.36
- always-assert
polkadot-node-collation-generation
0.9.36github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-approval-voting
0.9.36github.com/paritytech/polkadot↘ 22↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitvec
1.0.1 - derive_more
0.99.17 - futures
0.3.25 - futures-timer
3.0.2 - kvdb
0.13.0 - lru
0.8.1 - merlin
2.0.1 - parity-scale-codec
3.2.1 - polkadot-node-jaeger
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-primitives
0.9.36 - sc-keystore
4.0.0-dev - schnorrkel
0.9.1 - sp-application-crypto
7.0.0 - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-runtime
7.0.0 - thiserror
1.0.38 - tracing-gum
0.9.36
used by- bitvec
polkadot-node-core-av-store
0.9.36github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-backing
0.9.36github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-bitfield-signing
0.9.36github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-candidate-validation
0.9.36github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-chain-api
0.9.36github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-chain-selection
0.9.36github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-dispute-coordinator
0.9.36github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-parachains-inherent
0.9.36github.com/paritytech/polkadot↘ 11↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onpolkadot-node-core-provisioner
0.9.36github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-pvf
0.9.36github.com/paritytech/polkadot↘ 26↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- always-assert
0.1.2 - assert_matches
1.5.0 - async-process
1.6.0 - async-std
1.12.0 - cpu-time
1.0.0 - futures
0.3.25 - futures-timer
3.0.2 - parity-scale-codec
3.2.1 - pin-project
1.0.12 - polkadot-core-primitives
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-parachain
0.9.36 - rand
0.8.5 - rayon
1.6.1 - sc-executor
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - slotmap
1.0.6 - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-io
7.0.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-tracing
6.0.0 - sp-wasm-interface
7.0.0 - tempfile
3.3.0 - tracing-gum
0.9.36
- always-assert
polkadot-node-core-pvf-checker
0.9.36github.com/paritytech/polkadot↘ 9↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-core-runtime-api
0.9.36github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-node-jaeger
0.9.36github.com/paritytech/polkadot↘ 11↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onpolkadot-node-metrics
0.9.36github.com/paritytech/polkadot↘ 12↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onpolkadot-node-network-protocol
0.9.36github.com/paritytech/polkadot↘ 16↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- async-trait
0.1.60 - derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.25 - hex
0.4.3 - parity-scale-codec
3.2.1 - polkadot-node-jaeger
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-primitives
0.9.36 - rand
0.8.5 - sc-authority-discovery
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - strum
0.24.1 - thiserror
1.0.38 - tracing-gum
0.9.36
used by- cumulus-relay-chain-minimal-node
0.1.0 - polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36
- async-trait
polkadot-node-primitives
0.9.36github.com/paritytech/polkadot↘ 15↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bounded-vec
0.6.0 - futures
0.3.25 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - schnorrkel
0.9.1 - serde
1.0.151 - sp-application-crypto
7.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-maybe-compressed-blob
4.1.0-dev - thiserror
1.0.38 - zstd
0.11.2+zstd.1.5.2
used by- cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-erasure-coding
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-performance-test
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36 - polkadot-test-service
0.9.36
- bounded-vec
polkadot-node-subsystem
0.9.36github.com/paritytech/polkadot↘ 3↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcused by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36 - polkadot-test-service
0.9.36
- cumulus-client-collator
polkadot-node-subsystem-types
0.9.36github.com/paritytech/polkadot↘ 16↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- async-trait
0.1.60 - derive_more
0.99.17 - futures
0.3.25 - orchestra
0.0.2 - polkadot-node-jaeger
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-primitives
0.9.36 - polkadot-statement-table
0.9.36 - sc-network
0.10.0-dev - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-babe
0.10.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
polkadot-node-subsystem-util
0.9.36github.com/paritytech/polkadot↘ 25↖ 23sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- async-trait
0.1.60 - derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.25 - itertools
0.10.5 - kvdb
0.13.0 - lru
0.8.1 - parity-db
0.4.2 - parity-scale-codec
3.2.1 - parking_lot
0.11.2 - pin-project
1.0.12 - polkadot-node-jaeger
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-overseer
0.9.36 - polkadot-primitives
0.9.36 - prioritized-metered-channel
0.2.0 - rand
0.8.5 - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.38 - tracing-gum
0.9.36
used by- cumulus-relay-chain-minimal-node
0.1.0 - polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36
- async-trait
polkadot-overseer
0.9.36github.com/paritytech/polkadot↘ 16↖ 13sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- async-trait
0.1.60 - futures
0.3.25 - futures-timer
3.0.2 - lru
0.8.1 - orchestra
0.0.2 - parking_lot
0.12.1 - polkadot-node-metrics
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-primitives
0.9.36 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - tikv-jemalloc-ctl
0.5.0 - tracing-gum
0.9.36
used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - polkadot-network-bridge
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36
- async-trait
polkadot-parachain
0.9.36github.com/paritytech/polkadot↘ 9↖ 17sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - opal-runtime
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-primitives
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - unique-node
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36 - xcm-builder
0.9.36
- cumulus-client-network
polkadot-performance-test
0.9.36github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-primitives
0.9.36github.com/paritytech/polkadot↘ 19↖ 58sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitvec
1.0.1 - hex-literal
0.3.4 - parity-scale-codec
3.2.1 - polkadot-core-primitives
0.9.36 - polkadot-parachain
0.9.36 - scale-info
2.3.1 - serde
1.0.151 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - kusama-runtime
0.9.36 - kusama-runtime-constants
0.9.36 - polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-client
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-erasure-coding
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-runtime-metrics
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36 - polkadot-statement-table
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - rococo-runtime
0.9.36 - rococo-runtime-constants
0.9.36 - test-runtime-constants
0.9.36 - tracing-gum
0.9.36 - unique-node
0.9.36 - westend-runtime
0.9.36 - westend-runtime-constants
0.9.36
- bitvec
polkadot-rpc
0.9.36github.com/paritytech/polkadot↘ 25↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - jsonrpsee
0.16.2 - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-primitives
0.9.36 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-rpc
4.0.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev
- beefy-gadget
polkadot-runtime
0.9.36github.com/paritytech/polkadot↘ 82↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.36 - parity-scale-codec
3.2.1 - polkadot-primitives
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-runtime-parachains
0.9.36 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.151 - serde_derive
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- bitvec
polkadot-runtime-common
0.9.36github.com/paritytech/polkadot↘ 41↖ 12sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - libsecp256k1
0.7.1 - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.2.1 - polkadot-primitives
0.9.36 - polkadot-runtime-parachains
0.9.36 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.151 - serde_derive
1.0.151 - slot-range-helper
0.9.36 - sp-api
4.0.0-dev - sp-beefy
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - static_assertions
1.1.0 - xcm
0.9.36
used by- kusama-runtime
0.9.36 - kusama-runtime-constants
0.9.36 - polkadot-client
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - rococo-runtime
0.9.36 - rococo-runtime-constants
0.9.36 - test-runtime-constants
0.9.36 - westend-runtime
0.9.36 - westend-runtime-constants
0.9.36
- bitvec
polkadot-runtime-constants
0.9.36github.com/paritytech/polkadot↘ 7↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onpolkadot-runtime-metrics
0.9.36github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcpolkadot-runtime-parachains
0.9.36github.com/paritytech/polkadot↘ 36↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitflags
1.3.2 - bitvec
1.0.1 - derive_more
0.99.17 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.2.1 - polkadot-primitives
0.9.36 - polkadot-runtime-metrics
0.9.36 - rand
0.8.5 - rand_chacha
0.3.1 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.151 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - static_assertions
1.1.0 - xcm
0.9.36 - xcm-executor
0.9.36
- bitflags
polkadot-service
0.9.36github.com/paritytech/polkadot↘ 99↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- async-trait
0.1.60 - beefy-gadget
4.0.0-dev - frame-support
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.25 - hex-literal
0.3.4 - kusama-runtime
0.9.36 - kvdb
0.13.0 - kvdb-rocksdb
0.17.0 - lru
0.8.1 - mmr-gadget
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-db
0.4.2 - polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-client
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-statement-distribution
0.9.36 - rococo-runtime
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.151 - serde_json
1.0.91 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38 - tracing-gum
0.9.36 - westend-runtime
0.9.36
- async-trait
polkadot-statement-distribution
0.9.36github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bypolkadot-statement-table
0.9.36github.com/paritytech/polkadot↘ 3↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcpolkadot-test-runtime
0.9.36github.com/paritytech/polkadot↘ 54↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitvec
1.0.1 - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.36 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.151 - serde_derive
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - test-runtime-constants
0.9.36 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
used by- bitvec
polkadot-test-service
0.9.36github.com/paritytech/polkadot↘ 47↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- frame-benchmarking
4.0.0-dev - frame-system
4.0.0-dev - futures
0.3.25 - hex
0.4.3 - pallet-balances
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem
0.9.36 - polkadot-overseer
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - rand
0.8.5 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - substrate-test-client
2.0.1 - tempfile
3.3.0 - test-runtime-constants
0.9.36 - tokio
1.23.0 - tracing-gum
0.9.36
used by- frame-benchmarking
polling
2.5.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6used bypoly1305
0.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246edeused bypolyval
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1used byppv-lite86
0.2.17crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6deprecompile-utils-macro
0.1.0workspace↘ 5↖ 3predicates
2.1.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf54fc5dc63ed3bbf19494623db4f3af16842c0d975818e469022d09e53f0aa05depends onused bypredicates-core
1.0.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72f883590242d3c6fc5bf50299011695fa6590c2c70eac95ee1bdb9a733ad1a2predicates-tree
1.0.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54ff541861505aabf6ea722d2131ee980b8276e10a1297b94e896dd8b621850ddepends onused byprettyplease
0.1.22crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c8992a85d8e93a28bdf76137db888d3874e3b230dee5ed8bebac4c9f7617773depends onused byprimitive-types
0.11.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94aused byprimitive-types
0.12.1crates.io↘ 6↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66prioritized-metered-channel
0.2.0crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum382698e48a268c832d0b181ed438374a6bb708a82a8ca273bb0f61c74cf209c4depends onproc-macro-crate
1.2.1crates.io↘ 3↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9depends onused by- cumulus-pallet-parachain-system-proc-macro
0.1.0 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - jsonrpsee-proc-macros
0.16.2 - multihash-derive
0.8.0 - num_enum_derive
0.5.7 - orchestra-proc-macro
0.0.2 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - sp-api-proc-macro
4.0.0-dev - sp-runtime-interface-proc-macro
6.0.0 - substrate-test-utils-derive
0.10.0-dev - tracing-gum-proc-macro
0.9.36
- cumulus-pallet-parachain-system-proc-macro
proc-macro-error
1.0.4crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro2
1.0.49crates.io↘ 1↖ 68sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5depends onused by- async-trait
0.1.60 - auto_impl
0.5.0 - bindgen
0.60.1 - bondrewd-derive
0.3.18 - clap_derive
4.0.21 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.85 - cxxbridge-macro
1.0.85 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.4 - enumn
0.1.6 - evm-coder-procedural
0.2.2 - expander
0.0.4 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.25 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - mockall_derive
0.11.3 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - num_enum_derive
0.5.7 - orchestra-proc-macro
0.0.2 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - pest_generator
2.5.1 - pin-project-internal
1.0.12 - precompile-utils-macro
0.1.0 - prettyplease
0.1.22 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.3.0 - prost-derive
0.11.5 - quote
1.0.23 - ref-cast-impl
1.0.14 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - serde_derive
1.0.151 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.36.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.107 - synstructure
0.12.6 - thiserror-impl
1.0.38 - tokio-macros
1.8.2 - tracing-attributes
0.1.23 - tracing-gum-proc-macro
0.9.36 - wasm-bindgen-backend
0.2.83 - wasm-bindgen-macro-support
0.2.83 - xcm-procedural
0.9.36 - zeroize_derive
1.3.3
- async-trait
prometheus
0.13.3crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8cprometheus-client
0.18.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83cd1b99916654a69008fd66b4f9397fbe08e6e51dfe23d4417acf5d3b8cb87cused byprometheus-client-derive-text-encode
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66a455fbcb954c1a7decf3c586e860fd7889cddf4b8e164be736dbac95a953cddepends onused byprost
0.11.5crates.io↘ 2↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc01db6702aa05baa3f57dec92b8eeeeb4cb19e894e73996b32a4093289e54592depends onprost-build
0.11.5crates.io↘ 14↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcb5320c680de74ba083512704acb90fe00f28f79207286a848e730c45dd73ed6depends onprost-codec
0.2.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum011ae9ff8359df7915f97302d591cdd9e0e27fbd5a4ddc5bd13b71079bb20987used byprost-derive
0.11.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8842bad1a5419bca14eac663ba798f6bc19c413c2fdceb5f3ba3b0932d96720used byprost-types
0.11.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum017f79637768cde62820bc2d4fe0e45daaa027755c323ad077767c6c5f173091depends onused bypsm
0.1.21crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874depends onused byquartz-runtime
0.9.36workspace↘ 96↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.1.5 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - logtest
2.0.0 - num_enum
0.5.7 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-collator-selection
4.0.0 - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-nonfungible
0.1.12 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-xcm
0.9.36 - parachain-info
0.1.0 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - precompile-utils-macro
0.1.0 - rmrk-rpc
0.0.2 - scale-info
2.3.1 - serde
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
used by- app-promotion-rpc
quick-error
1.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
1.0.23crates.io↘ 1↖ 72sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7bdepends onused by- async-attributes
1.1.2 - async-trait
0.1.60 - auto_impl
0.5.0 - bindgen
0.60.1 - bondrewd-derive
0.3.18 - clap_derive
4.0.21 - ctor
0.1.26 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.85 - cxxbridge-macro
1.0.85 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.4 - enumn
0.1.6 - evm-coder-procedural
0.2.2 - expander
0.0.4 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.25 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - libp2p-swarm-derive
0.30.1 - mockall_derive
0.11.3 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - num_enum_derive
0.5.7 - orchestra-proc-macro
0.0.2 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - pest_generator
2.5.1 - pin-project-internal
1.0.12 - polkadot-performance-test
0.9.36 - precompile-utils-macro
0.1.0 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.3.0 - prost-derive
0.11.5 - ref-cast-impl
1.0.14 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - serde_derive
1.0.151 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.36.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - struct-versioning
0.1.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.107 - synstructure
0.12.6 - thiserror-impl
1.0.38 - tokio-macros
1.8.2 - tracing-attributes
0.1.23 - tracing-gum-proc-macro
0.9.36 - wasm-bindgen-backend
0.2.83 - wasm-bindgen-macro
0.2.83 - wasm-bindgen-macro-support
0.2.83 - xcm-procedural
0.9.36 - zeroize_derive
1.3.3
- async-attributes
radium
0.6.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fbused byradium
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09used byrand
0.7.3crates.io↘ 6↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- ed25519-dalek
1.0.1 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - tiny-bip39
0.8.2
- ed25519-dalek
rand
0.8.5crates.io↘ 3↖ 38sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404used by- cumulus-client-pov-recovery
0.1.0 - fc-rpc
2.0.0-dev - fixed-hash
0.8.0 - frame-benchmarking-cli
4.0.0-dev - jsonrpsee-core
0.16.2 - libp2p-core
0.37.0 - libp2p-kad
0.41.0 - libp2p-mdns
0.41.0 - libp2p-mplex
0.37.0 - libp2p-noise
0.40.0 - libp2p-ping
0.40.1 - libp2p-request-response
0.22.1 - libp2p-swarm
0.40.1 - libsecp256k1
0.7.1 - mick-jaeger
0.1.8 - nalgebra
0.27.1 - names
0.13.0 - pallet-collator-selection
4.0.0 - parity-db
0.4.2 - polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-service
0.9.36 - rand_distr
0.4.3 - sc-finality-grandpa
0.10.0-dev - soketto
0.7.1 - statrs
0.15.0 - trust-dns-proto
0.22.0 - twox-hash
1.6.3 - wasmtime-runtime
1.0.2 - yamux
0.10.2
- cumulus-client-pov-recovery
rand_chacha
0.2.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onrand_chacha
0.3.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88depends onrand_core
0.5.1crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.4crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922cdepends onrand_distr
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31depends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_pcg
0.2.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byrand_pcg
0.3.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73edepends onrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.6.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7depends onrayon-core
1.10.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3used byredox_syscall
0.2.16crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519adepends onredox_users
0.4.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2breed-solomon-novelpoly
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221ref-cast
1.0.14crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c78fb8c9293bcd48ef6fce7b4ca950ceaf21210de6e105a883ee280c0f7b9eddepends onused byref-cast-impl
1.0.14crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f9c0c92af03644e4806106281fe2e068ac5bc0ae74a707266d06ea27bccee5fdepends onused byregalloc2
0.3.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd43a209257d978ef079f3d446331d0f1794f5e0fc19b306a199983857833a779used byregex
1.7.0crates.io↘ 3↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868aregex-automata
0.1.10crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-syntax
0.6.28crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848remove_dir_all
0.5.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7depends onused byresolv-conf
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00depends onused byrfc6979
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabbdepends onused byring
0.16.20crates.io↘ 7↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcripemd
0.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09fdepends onrlp
0.5.2crates.io↘ 3↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ecdepends onrlp-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672adepends onused byrmrk-traits
0.1.0workspace↘ 3↖ 4rocksdb
0.19.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e9562ea1d70c0cc63a34a22d977753b50cca91cc6b6527750463bd5dd8697bcdepends onused byrococo-runtime
0.9.36github.com/paritytech/polkadot↘ 78↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- beefy-merkle-tree
4.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - rococo-runtime-constants
0.9.36 - scale-info
2.3.1 - serde
1.0.151 - serde_derive
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
used by- beefy-merkle-tree
rococo-runtime-constants
0.9.36github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused byrpassword
7.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322depends onused byrtnetlink
0.10.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0depends onused byrtoolbox
0.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524adepends onused byrustc_version
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onused byrustc_version
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366depends onused byrustc-demangle
0.1.21crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342rustc-hash
1.1.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustc-hex
2.1.0crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rustix
0.35.13crates.io↘ 6↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum727a1a6d65f786ec22df8a81ca3121107f235970dc1705ed681d3e6e8b9cd5f9rustix
0.36.5crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588used byrustls
0.20.7crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2cdepends onrustls-native-certs
0.6.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50rustls-pemfile
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55depends onused byrustversion
1.0.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70used byrw-stream-sink
0.3.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04ryu
1.0.12crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decdeused bysafe-mix
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215cdepends onsame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused bysc-allocator
4.1.0-devgithub.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sc-authority-discovery
0.10.0-devgithub.com/paritytech/substrate↘ 20↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - futures
0.3.25 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.49.0 - log
0.4.17 - parity-scale-codec
3.2.1 - prost
0.11.5 - prost-build
0.11.5 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network-common
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-basic-authorship
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- futures
0.3.25 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.2.1 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev
- futures
sc-block-builder
0.10.0-devgithub.com/paritytech/substrate↘ 9↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-chain-spec
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-chain-spec-derive
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used bysc-cli
0.10.0-devgithub.com/paritytech/substrate↘ 33↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- array-bytes
4.2.0 - chrono
0.4.23 - clap
4.0.32 - fdlimit
0.2.1 - futures
0.3.25 - libp2p
0.49.0 - log
0.4.17 - names
0.13.0 - parity-scale-codec
3.2.1 - rand
0.7.3 - regex
1.7.0 - rpassword
7.2.0 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.151 - serde_json
1.0.91 - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keyring
7.0.0 - sp-keystore
0.13.0 - sp-panic-handler
5.0.0 - sp-runtime
7.0.0 - sp-version
5.0.0 - thiserror
1.0.38 - tiny-bip39
0.8.2 - tokio
1.23.0
- array-bytes
sc-client-api
4.0.0-devgithub.com/paritytech/substrate↘ 21↖ 54sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- fnv
1.0.7 - futures
0.3.25 - hash-db
0.15.2 - log
0.4.17 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - sc-executor
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-trie
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev
used by- beefy-gadget
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - mmr-gadget
4.0.0-dev - polkadot-client
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-overseer
0.9.36 - polkadot-rpc
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2
- fnv
sc-client-db
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- hash-db
0.15.2 - kvdb
0.13.0 - kvdb-memorydb
0.13.0 - kvdb-rocksdb
0.17.0 - linked-hash-map
0.5.6 - log
0.4.17 - parity-db
0.4.2 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-state-db
0.10.0-dev - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0
- hash-db
sc-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 22sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - futures
0.3.25 - futures-timer
3.0.2 - libp2p
0.49.0 - log
0.4.17 - mockall
0.11.3 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.151 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - polkadot-client
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.36
- async-trait
sc-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 22↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - futures
0.3.25 - log
0.4.17 - parity-scale-codec
3.2.1 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 34↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - fork-tree
3.0.0 - futures
0.3.25 - log
0.4.17 - merlin
2.0.1 - num-bigint
0.4.3 - num-rational
0.4.1 - num-traits
0.2.15 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-keystore
4.0.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - serde
1.0.151 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-consensus-babe-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 15↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysc-consensus-epochs
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-consensus-manual-seal
0.10.0-devgithub.com/paritytech/substrate↘ 27↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- assert_matches
1.5.0 - async-trait
0.1.60 - futures
0.3.25 - jsonrpsee
0.16.2 - log
0.4.17 - parity-scale-codec
3.2.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.151 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- assert_matches
sc-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 17↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - futures
0.3.25 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.2.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - thiserror
1.0.38
- async-trait
sc-executor
0.10.0-devgithub.com/paritytech/substrate↘ 17↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- lru
0.8.1 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - sc-executor-common
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-io
7.0.0 - sp-panic-handler
5.0.0 - sp-runtime-interface
7.0.0 - sp-trie
7.0.0 - sp-version
5.0.0 - sp-wasm-interface
7.0.0 - tracing
0.1.37 - wasmi
0.13.2
- lru
sc-executor-common
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-executor-wasmi
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysc-executor-wasmtime
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-finality-grandpa
0.10.0-devgithub.com/paritytech/substrate↘ 34↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- ahash
0.7.6 - array-bytes
4.2.0 - async-trait
0.1.60 - dyn-clone
1.0.10 - finality-grandpa
0.16.0 - fork-tree
3.0.0 - futures
0.3.25 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.91 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- ahash
sc-finality-grandpa-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-informant
0.10.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysc-keystore
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-network
0.10.0-devgithub.com/paritytech/substrate↘ 40↖ 17sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- array-bytes
4.2.0 - async-trait
0.1.60 - asynchronous-codec
0.6.1 - bitflags
1.3.2 - bytes
1.3.0 - cid
0.8.6 - either
1.8.0 - fnv
1.0.7 - fork-tree
3.0.0 - futures
0.3.25 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.49.0 - linked-hash-map
0.5.6 - linked_hash_set
0.1.4 - log
0.4.17 - lru
0.8.1 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - pin-project
1.0.12 - prost
0.11.5 - rand
0.7.3 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.151 - serde_json
1.0.91 - smallvec
1.10.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38 - unsigned-varint
0.7.1 - zeroize
1.5.7
used by- beefy-gadget
4.0.0-dev - cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - polkadot-availability-recovery
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-service
0.10.0-dev - unique-node
0.9.36 - unique-rpc
0.1.2
- array-bytes
sc-network-bitswap
0.10.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysc-network-common
0.10.0-devgithub.com/paritytech/substrate↘ 19↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - bitflags
1.3.2 - bytes
1.3.0 - futures
0.3.25 - futures-timer
3.0.2 - libp2p
0.49.0 - linked_hash_set
0.1.4 - parity-scale-codec
3.2.1 - prost-build
0.11.5 - sc-consensus
0.10.0-dev - sc-peerset
4.0.0-dev - serde
1.0.151 - smallvec
1.10.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- beefy-gadget
4.0.0-dev - cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - polkadot-network-bridge
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev
- async-trait
sc-network-gossip
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-network-light
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysc-network-sync
0.10.0-devgithub.com/paritytech/substrate↘ 25↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- array-bytes
4.2.0 - async-trait
0.1.60 - fork-tree
3.0.0 - futures
0.3.25 - libp2p
0.49.0 - log
0.4.17 - lru
0.8.1 - mockall
0.11.3 - parity-scale-codec
3.2.1 - prost
0.11.5 - prost-build
0.11.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - smallvec
1.10.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- array-bytes
sc-network-transactions
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysc-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 23↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- array-bytes
4.2.0 - bytes
1.3.0 - fnv
1.0.7 - futures
0.3.25 - futures-timer
3.0.2 - hyper
0.14.23 - hyper-rustls
0.23.2 - libp2p
0.49.0 - num_cpus
1.15.0 - once_cell
1.16.0 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - threadpool
1.8.1 - tracing
0.1.37
- array-bytes
sc-peerset
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sc-proposer-metrics
0.10.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sc-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 23↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- futures
0.3.25 - hash-db
0.15.2 - jsonrpsee
0.16.2 - log
0.4.17 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.91 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-version
5.0.0
- futures
sc-rpc-api
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-rpc-server
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-rpc-spec-v2
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysc-service
0.10.0-devgithub.com/paritytech/substrate↘ 63↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - directories
4.0.1 - exit-future
0.2.0 - futures
0.3.25 - futures-timer
3.0.2 - hash-db
0.15.2 - jsonrpsee
0.16.2 - log
0.4.17 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - pin-project
1.0.12 - rand
0.7.3 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-informant
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.151 - serde_json
1.0.91 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-tracing
6.0.0 - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - static_init
1.0.3 - substrate-prometheus-endpoint
0.10.0-dev - tempfile
3.3.0 - thiserror
1.0.38 - tokio
1.23.0 - tracing
0.1.37 - tracing-futures
0.2.5
used by- cumulus-client-cli
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-cli
0.9.36 - polkadot-client
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-cli
0.10.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2
- async-trait
sc-state-db
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used bysc-sync-state-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-sysinfo
6.0.0-devgithub.com/paritytech/substrate↘ 12↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsc-telemetry
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - polkadot-service
0.9.36 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - unique-node
0.9.36
- cumulus-client-consensus-aura
sc-tracing
4.0.0-devgithub.com/paritytech/substrate↘ 24↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.23 - lazy_static
1.4.0 - libc
0.2.139 - log
0.4.17 - once_cell
1.16.0 - parking_lot
0.12.1 - regex
1.7.0 - rustc-hash
1.1.0 - sc-client-api
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - serde
1.0.151 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-tracing
6.0.0 - thiserror
1.0.38 - tracing
0.1.37 - tracing-log
0.1.3 - tracing-subscriber
0.2.25
- ansi_term
sc-tracing-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used bysc-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 19↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- async-trait
0.1.60 - futures
0.3.25 - futures-timer
3.0.2 - linked-hash-map
0.5.6 - log
0.4.17 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.151 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-tracing
6.0.0 - sp-transaction-pool
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-transaction-pool-api
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - polkadot-rpc
0.9.36 - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-informant
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev
- cumulus-relay-chain-minimal-node
sc-utils
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51scale-info
2.3.1crates.io↘ 6↖ 145sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608depends onused by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - ethbloom
0.12.1 - ethbloom
0.13.0 - ethereum
0.14.0 - ethereum-types
0.13.1 - ethereum-types
0.14.1 - evm
0.35.0 - evm-core
0.35.0 - finality-grandpa
0.16.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.12 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parachain-info
0.1.0 - polkadot-core-primitives
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - primitive-types
0.11.1 - primitive-types
0.12.1 - quartz-runtime
0.9.36 - rmrk-traits
0.1.0 - rococo-runtime
0.9.36 - sc-rpc-api
0.10.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-weights
4.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - unique-runtime
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - westend-runtime
0.9.36 - xcm
0.9.36 - xcm-builder
0.9.36
- cumulus-pallet-aura-ext
scale-info-derive
2.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum303959cf613a6f6efd19ed4b4ad5bf79966a13352716299ad532cfb115f4205cused byschannel
0.1.20crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscopeguard
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdscratch
1.0.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2used bysct
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4depends onused bysec1
0.3.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928used bysecp256k1
0.24.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9512ffd81e3a3503ed401f79c33168b9148c75038956039166cd750eaa037c3depends onused bysecp256k1-sys
0.6.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4bdepends onused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused bysecurity-framework
2.7.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356cdepends onused bysecurity-framework-sys
2.6.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556depends onused bysemver
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537depends onused bysemver
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403depends onused bysemver
1.0.16crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2adepends onsemver-parser
0.7.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used byserde
1.0.151crates.io↘ 1↖ 131sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0depends onused by- beef
0.5.2 - beefy-gadget-rpc
4.0.0-dev - bincode
1.3.3 - camino
1.1.1 - cargo-platform
0.1.2 - cargo_metadata
0.14.2 - cid
0.8.6 - cranelift-entity
0.88.2 - cumulus-relay-chain-rpc-interface
0.1.0 - ed25519-dalek
1.0.1 - ethereum
0.14.0 - evm
0.35.0 - evm-core
0.35.0 - fc-rpc-core
1.1.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-metadata
15.0.0 - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
4.3.6 - impl-serde
0.4.0 - indexmap
1.9.2 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - kusama-runtime
0.9.36 - libsecp256k1
0.7.1 - mmr-rpc
4.0.0-dev - multiaddr
0.14.0 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-common
0.1.12 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-inflation
0.1.1 - pallet-offences
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-xcm
0.9.36 - parity-scale-codec
2.3.1 - parity-scale-codec
3.2.1 - polkadot-node-primitives
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rmrk-traits
0.1.0 - rococo-runtime
0.9.36 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - scale-info
2.3.1 - semver
1.0.16 - serde_json
1.0.91 - serde_nanos
0.1.2 - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-beefy
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-storage
7.0.0 - sp-version
5.0.0 - sp-weights
4.0.0 - ss58-registry
1.36.0 - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - toml
0.5.10 - tracing-serde
0.1.3 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - trybuild
1.0.73 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - wasmtime
1.0.2 - wasmtime-cache
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-types
1.0.2 - westend-runtime
0.9.36
- beef
serde_derive
1.0.151crates.io↘ 3↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8depends onserde_json
1.0.91crates.io↘ 3↖ 31sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883depends onused by- cargo_metadata
0.14.2 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc-core
1.1.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-remote-externalities
0.10.0-dev - handlebars
4.3.6 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - pallet-foreign-assets
0.1.0 - polkadot-service
0.9.36 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - ss58-registry
1.36.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - tracing-subscriber
0.2.25 - trybuild
1.0.73 - unique-node
0.9.36
- cargo_metadata
serde_nanos
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume44969a61f5d316be20a42ff97816efb3b407a924d06824c3d8a49fa8450de0edepends onsha-1
0.9.8crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6used bysha1
0.10.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3depends onused bysha2
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69used bysha2
0.9.9crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800sha2
0.10.6crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0depends onsha3
0.8.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecfused bysha3
0.10.6crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9depends onsha3-const
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb04774de876479a8f712e787f8271b14712971329a4be66c6dff144db7cfc343used bysharded-slab
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31depends onused byshlex
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3used bysignal-hook
0.3.14crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29ddepends onused bysignal-hook-registry
1.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0depends onused bysignature
1.6.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7cdepends onused bysimba
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5cused bysimilar
2.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcfdepends onused bysimilar-asserts
1.4.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbbf644ad016b75129f01a34a355dcb8d66a5bc803e417c7a77cc5d5ee9fa0f18depends onused byslab
0.4.7crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcefdepends onslice-group-by
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ecused byslot-range-helper
0.9.36github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcslotmap
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342depends onused bysmallvec
1.10.0crates.io↘ 0↖ 45sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0used by- cfg-expr
0.10.3 - cranelift-codegen
0.88.2 - cranelift-frontend
0.88.2 - cranelift-wasm
0.88.2 - fc-db
2.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.36 - kusama-runtime-constants
0.9.36 - kvdb
0.13.0 - kvdb-rocksdb
0.17.0 - libp2p
0.49.0 - libp2p-core
0.37.0 - libp2p-dns
0.37.0 - libp2p-identify
0.40.0 - libp2p-kad
0.41.0 - libp2p-mdns
0.41.0 - libp2p-mplex
0.37.0 - libp2p-request-response
0.22.1 - libp2p-swarm
0.40.1 - multistream-select
0.12.1 - opal-runtime
0.9.36 - pallet-configuration
0.1.3 - parking_lot_core
0.8.6 - parking_lot_core
0.9.5 - polkadot-node-subsystem-types
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - regalloc2
0.3.2 - rococo-runtime
0.9.36 - rococo-runtime-constants
0.9.36 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-state-machine
0.13.0 - sp-weights
4.0.0 - test-runtime-constants
0.9.36 - tracing-subscriber
0.2.25 - trie-db
0.24.0 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - unique-runtime
0.9.36 - westend-runtime
0.9.36 - westend-runtime-constants
0.9.36
- cfg-expr
snap
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831used bysnow
0.9.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0ddepends onused bysocket2
0.4.7crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebddepends onsoketto
0.7.1crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2depends onsp-api
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 80sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- app-promotion-rpc
0.1.0 - beefy-gadget
4.0.0-dev - beefy-merkle-tree
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.36 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-whitelist
4.0.0-dev - polkadot-client
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-overseer
0.9.36 - polkadot-primitives
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.36
- app-promotion-rpc
sp-api-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used bysp-application-crypto
7.0.0github.com/paritytech/substrate↘ 6↖ 29sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - frame-benchmarking
4.0.0-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime-parachains
0.9.36 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-service
0.10.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
7.0.0
- beefy-gadget
sp-arithmetic
6.0.0github.com/paritytech/substrate↘ 8↖ 26sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- beefy-gadget
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-configuration
0.1.3 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - polkadot-primitives
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - sc-client-db
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-weights
4.0.0 - unique-runtime
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- beefy-gadget
sp-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-relay-chain-rpc-interface
0.1.0 - kusama-runtime
0.9.36 - pallet-authority-discovery
4.0.0-dev - polkadot-client
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - rococo-runtime
0.9.36 - sc-authority-discovery
0.10.0-dev - westend-runtime
0.9.36
- cumulus-relay-chain-rpc-interface
sp-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used bysp-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-merkle-tree
4.0.0-dev - kusama-runtime
0.9.36 - mmr-gadget
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - polkadot-client
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - rococo-runtime
0.9.36 - westend-runtime
0.9.36
- beefy-gadget
sp-block-builder
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 21sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used by- cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - fc-rpc
2.0.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - polkadot-client
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-service
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - westend-runtime
0.9.36
- cumulus-client-consensus-aura
sp-blockchain
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 54sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-client
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-rpc
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2
- beefy-gadget
sp-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 38sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-rpc
2.0.0-dev - mmr-gadget
4.0.0-dev - polkadot-client
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-rpc
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-service
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.36 - unique-rpc
0.1.2
- beefy-gadget
sp-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 18sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - kusama-runtime
0.9.36 - pallet-babe
4.0.0-dev - polkadot-client
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - rococo-runtime
0.9.36 - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - westend-runtime
0.9.36
- cumulus-relay-chain-minimal-node
sp-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-consensus-vrf
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-core
7.0.0github.com/paritytech/substrate↘ 38↖ 173sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- array-bytes
4.2.0 - base58
0.2.0 - bitflags
1.3.2 - blake2
0.10.6 - byteorder
1.4.3 - dyn-clonable
0.9.0 - ed25519-zebra
3.1.0 - futures
0.3.25 - hash-db
0.15.2 - hash256-std-hasher
0.15.2 - impl-serde
0.4.0 - lazy_static
1.4.0 - libsecp256k1
0.7.1 - log
0.4.17 - merlin
2.0.1 - num-traits
0.2.15 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - primitive-types
0.12.1 - rand
0.7.3 - regex
1.7.0 - scale-info
2.3.1 - schnorrkel
0.9.1 - secp256k1
0.24.2 - secrecy
0.8.0 - serde
1.0.151 - sp-core-hashing
5.0.0 - sp-debug-derive
5.0.0 - sp-externalities
0.13.0 - sp-runtime-interface
7.0.0 - sp-std
5.0.0 - sp-storage
7.0.0 - ss58-registry
1.36.0 - substrate-bip39
0.4.4 - thiserror
1.0.38 - tiny-bip39
0.8.2 - wasmi
0.13.2 - zeroize
1.5.7
used by- app-promotion-rpc
0.1.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.36 - kusama-runtime-constants
0.9.36 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - pallet-app-promotion
0.1.3 - pallet-bags-list
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nonfungible
0.1.12 - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-cli
0.9.36 - polkadot-client
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-core-primitives
0.9.36 - polkadot-erasure-coding
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-table
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.36 - rococo-runtime-constants
0.9.36 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-beefy
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keyring
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-weights
4.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - test-runtime-constants
0.9.36 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.36 - westend-runtime-constants
0.9.36 - xcm-executor
0.9.36
- array-bytes
sp-core-hashing
5.0.0github.com/paritytech/substrate↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sp-core-hashing-proc-macro
5.0.0github.com/paritytech/substrate↘ 4↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sp-database
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-debug-derive
5.0.0github.com/paritytech/substrate↘ 3↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-externalities
0.13.0github.com/paritytech/substrate↘ 4↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sp-finality-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-inherents
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 37sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-timestamp
4.0.0-dev - polkadot-client
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - unique-node
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36
- cumulus-client-consensus-aura
sp-io
7.0.0github.com/paritytech/substrate↘ 20↖ 87sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- bytes
1.3.0 - ed25519-dalek
1.0.1 - futures
0.3.25 - hash-db
0.15.2 - libsecp256k1
0.7.1 - log
0.4.17 - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - secp256k1
0.24.2 - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime-interface
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-tracing
6.0.0 - sp-trie
7.0.0 - sp-wasm-interface
7.0.0 - tracing
0.1.37 - tracing-core
0.1.30
used by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - fc-rpc
2.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime
0.9.36 - mmr-gadget
4.0.0-dev - opal-runtime
0.9.36 - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - polkadot-cli
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-sysinfo
6.0.0-dev - sp-application-crypto
7.0.0 - sp-beefy
4.0.0-dev - sp-runtime
7.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- bytes
sp-keyring
7.0.0github.com/paritytech/substrate↘ 4↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sp-keystore
0.13.0github.com/paritytech/substrate↘ 10↖ 35sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - frame-benchmarking-cli
4.0.0-dev - polkadot-availability-distribution
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-primitives
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-io
7.0.0 - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36
- beefy-gadget
sp-maybe-compressed-blob
4.1.0-devgithub.com/paritytech/substrate↘ 2↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-mmr-primitives
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-npos-elections
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sp-panic-handler
5.0.0github.com/paritytech/substrate↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sp-rpc
6.0.0github.com/paritytech/substrate↘ 3↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-runtime
7.0.0github.com/paritytech/substrate↘ 15↖ 219sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- app-promotion-rpc
0.1.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-merkle-tree
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fp-consensus
2.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.36 - kusama-runtime-constants
0.9.36 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.12 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - polkadot-client
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-core-primitives
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-rpc
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-constants
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.36 - rococo-runtime-constants
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - slot-range-helper
0.9.36 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-version
5.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - test-runtime-constants
0.9.36 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.36 - westend-runtime-constants
0.9.36 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- app-promotion-rpc
sp-runtime-interface
7.0.0github.com/paritytech/substrate↘ 11↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-runtime-interface-proc-macro
6.0.0github.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used bysp-session
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- kusama-runtime
0.9.36 - opal-runtime
0.9.36 - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - polkadot-client
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-service
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - westend-runtime
0.9.36
- kusama-runtime
sp-staking
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 22sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used by- frame-support
4.0.0-dev - kusama-runtime
0.9.36 - pallet-babe
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-statement-distribution
0.9.36 - polkadot-test-runtime
0.9.36 - rococo-runtime
0.9.36 - sp-session
4.0.0-dev - westend-runtime
0.9.36
- frame-support
sp-state-machine
0.13.0github.com/paritytech/substrate↘ 15↖ 25sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-io
7.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4
- cumulus-client-network
sp-std
5.0.0github.com/paritytech/substrate↘ 0↖ 163sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used by- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - evm-coder
0.1.5 - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.12 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - polkadot-core-primitives
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-metrics
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.36 - sc-sysinfo
6.0.0-dev - slot-range-helper
0.9.36 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-core-hashing
5.0.0 - sp-externalities
0.13.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
6.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-wasm-interface
7.0.0 - sp-weights
4.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- app-promotion-rpc
sp-storage
7.0.0github.com/paritytech/substrate↘ 6↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-client
0.9.36 - polkadot-service
0.9.36 - sc-client-api
4.0.0-dev - sc-service
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-runtime-interface
7.0.0 - unique-rpc
0.1.2
- cumulus-primitives-parachain-inherent
sp-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-tracing
6.0.0github.com/paritytech/substrate↘ 5↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51sp-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-transaction-storage-proof
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysp-trie
7.0.0github.com/paritytech/substrate↘ 16↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-client-consensus-common
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - frame-benchmarking-cli
4.0.0-dev - pallet-session
4.0.0-dev - polkadot-erasure-coding
0.9.36 - polkadot-service
0.9.36 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-io
7.0.0 - sp-state-machine
0.13.0 - sp-transaction-storage-proof
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36
- cumulus-client-consensus-common
sp-version
5.0.0github.com/paritytech/substrate↘ 10↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- cumulus-pallet-parachain-system
0.1.0 - frame-remote-externalities
0.10.0-dev - frame-system
4.0.0-dev - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - polkadot-runtime
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - sc-cli
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.36 - westend-runtime
0.9.36
- cumulus-pallet-parachain-system
sp-version-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used bysp-wasm-interface
7.0.0github.com/paritytech/substrate↘ 6↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsp-weights
4.0.0github.com/paritytech/substrate↘ 9↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused by- frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime-constants
0.9.36 - pallet-scheduler
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-runtime-constants
0.9.36 - rococo-runtime-constants
0.9.36 - sp-runtime
7.0.0 - test-runtime-constants
0.9.36 - try-runtime-cli
0.10.0-dev - westend-runtime-constants
0.9.36
- frame-support
spin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byspki
0.6.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212bdepends onused byss58-registry
1.36.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23d92659e7d18d82b803824a9ba5a6022cff101c3491d027c1c1d8d30e749284depends onused bystable_deref_trait
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fused by- fixed-hash
0.7.0 - fixed-hash
0.8.0 - kusama-runtime
0.9.36 - libp2p-noise
0.40.0 - multiaddr
0.14.0 - pallet-election-provider-multi-phase
4.0.0-dev - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - rococo-runtime
0.9.36 - rw-stream-sink
0.3.0 - sp-arithmetic
6.0.0 - sp-runtime-interface
7.0.0 - twox-hash
1.6.3 - uint
0.9.5 - yamux
0.10.2
- fixed-hash
static_init
0.5.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369cused bystatic_init
1.0.3crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6depends onused bystatic_init_macro
0.5.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbfused bystatic_init_macro
1.0.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acfused bystatrs
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05bdbb8e4e78216a85785a85d3ec3183144f98d0097b9281802c019bb07a6f05used bystrsim
0.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623used bystruct-versioning
0.1.0workspace↘ 2↖ 3strum
0.24.1crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63fdepends onstrum_macros
0.24.3crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59substrate-bip39
0.4.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733cused bysubstrate-build-script-utils
3.0.0github.com/paritytech/substrate↘ 1↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsubstrate-frame-rpc-system
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsubstrate-prometheus-endpoint
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 24sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51used by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - fc-rpc
2.0.0-dev - polkadot-node-metrics
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-service
0.9.36 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - unique-node
0.9.36
- beefy-gadget
substrate-rpc-client
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51substrate-state-trie-migration-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onused bysubstrate-test-client
2.0.1github.com/paritytech/substrate↘ 19↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- array-bytes
4.2.0 - async-trait
0.1.60 - futures
0.3.25 - parity-scale-codec
3.2.1 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - serde
1.0.151 - serde_json
1.0.91 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-keyring
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0
used by- array-bytes
substrate-test-utils
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51substrate-test-utils-derive
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51substrate-wasm-builder
5.0.0-devgithub.com/paritytech/substrate↘ 10↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends onsubtle
2.4.1crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601syn
1.0.107crates.io↘ 3↖ 68sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5used by- async-attributes
1.1.2 - async-trait
0.1.60 - auto_impl
0.5.0 - bondrewd-derive
0.3.18 - clap_derive
4.0.21 - ctor
0.1.26 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.85 - cxxbridge-macro
1.0.85 - data-encoding-macro-internal
0.1.10 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.4 - enumn
0.1.6 - evm-coder-procedural
0.2.2 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.25 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - libp2p-swarm-derive
0.30.1 - mockall_derive
0.11.3 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - num_enum_derive
0.5.7 - orchestra-proc-macro
0.0.2 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - pest_generator
2.5.1 - pin-project-internal
1.0.12 - precompile-utils-macro
0.1.0 - prettyplease
0.1.22 - proc-macro-error
1.0.4 - prometheus-client-derive-text-encode
0.3.0 - prost-build
0.11.5 - prost-derive
0.11.5 - ref-cast-impl
1.0.14 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - serde_derive
1.0.151 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - static_init_macro
0.5.0 - static_init_macro
1.0.2 - struct-versioning
0.1.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - synstructure
0.12.6 - thiserror-impl
1.0.38 - tokio-macros
1.8.2 - tracing-attributes
0.1.23 - tracing-gum-proc-macro
0.9.36 - wasm-bindgen-backend
0.2.83 - wasm-bindgen-macro-support
0.2.83 - xcm-procedural
0.9.36 - zeroize_derive
1.3.3
- async-attributes
synstructure
0.12.6crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210fsystem-configuration
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fdused bysystem-configuration-sys
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9depends onused bytap
1.0.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369target-lexicon
0.12.5crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9410d0f6853b1d94f0e519fb95df60f29d2c1eff2d921ffdf01a4c8a3b54f12dtempfile
3.3.0crates.io↘ 6↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4termcolor
1.1.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755depends onterminal_size
0.1.17crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506dfdepends onused bytermtree
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8used bytest-runtime-constants
0.9.36github.com/paritytech/polkadot↘ 7↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends ontests
0.1.1workspace↘ 24↖ 0depends on- evm-coder
0.1.5 - fp-evm-mapping
0.1.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.12 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-fungible
0.1.9 - pallet-nonfungible
0.1.12 - pallet-refungible
0.2.11 - pallet-structure
0.1.2 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.2.1 - parity-scale-codec
3.2.1 - scale-info
2.3.1 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2 - up-sponsorship
0.1.0
- evm-coder
thiserror
1.0.38crates.io↘ 1↖ 102sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - bounded-vec
0.6.0 - cumulus-relay-chain-interface
0.1.0 - fatality
0.0.6 - fatality-proc-macro
0.0.6 - fc-consensus
2.0.0-dev - flexi_logger
0.24.2 - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.6 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-types
0.16.2 - libp2p-core
0.37.0 - libp2p-identify
0.40.0 - libp2p-kad
0.41.0 - libp2p-swarm
0.40.1 - libp2p-yamux
0.41.1 - netlink-packet-utils
0.5.1 - netlink-proto
0.10.0 - orchestra
0.0.2 - pest
2.5.1 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-cli
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-erasure-coding
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-jaeger
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-primitives
0.9.36 - polkadot-node-subsystem-types
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-performance-test
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36 - prioritized-metered-channel
0.2.0 - proc-macro-crate
1.2.1 - prometheus
0.13.3 - prost-codec
0.2.0 - redox_users
0.4.3 - reed-solomon-novelpoly
1.0.0 - rtnetlink
0.10.1 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-mmr-primitives
4.0.0-dev - sp-state-machine
0.13.0 - sp-timestamp
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tiny-bip39
0.8.2 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - wasm-opt
0.110.2 - wasmtime-cranelift
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2 - wasmtime-types
1.0.2
- beefy-gadget
thiserror-impl
1.0.38crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36fdepends onused bythousands
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820thread_local
1.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180depends onused bythreadpool
1.8.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onthrift
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb82ca8f46f95b3ce96081fe3dd89160fdea970c254bb72925255d1b62aae692eused bytikv-jemalloc-ctl
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume37706572f4b151dff7a0146e040804e9c26fe3a3118591112f05cf12a4216c1used bytikv-jemalloc-sys
0.5.2+5.3.0-patchedcrates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec45c14da997d0925c7835883e4d5c181f196fa142f8c19d7643d1e9af2592c3depends ontime
0.1.45crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805aused bytiny-bip39
0.8.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839ddepends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinyvec
1.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50depends ontinyvec_macros
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5cused bytokio
1.23.0crates.io↘ 12↖ 28sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46depends onused by- cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-remote-externalities
0.10.0-dev - h2
0.3.15 - hyper
0.14.23 - hyper-rustls
0.23.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - libp2p-mdns
0.41.0 - libp2p-tcp
0.37.0 - netlink-proto
0.10.0 - polkadot-node-jaeger
0.9.36 - polkadot-test-service
0.9.36 - sc-cli
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-test-utils
4.0.0-dev - tokio-rustls
0.23.4 - tokio-stream
0.1.11 - tokio-util
0.7.4 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - unique-node
0.9.36 - unique-rpc
0.1.2
- cumulus-relay-chain-interface
tokio-macros
1.8.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8depends onused bytokio-rustls
0.23.4crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59depends ontokio-stream
0.1.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ceused bytokio-util
0.7.4crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740depends ontoml
0.5.10crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598fdepends ontower
0.4.13crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1ctower-http
0.3.5crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858depends onused bytower-layer
0.3.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0used bytower-service
0.3.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52tracing
0.1.37crates.io↘ 5↖ 33sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - h2
0.3.15 - hyper
0.14.23 - jsonrpsee
0.16.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - orchestra
0.0.2 - prioritized-metered-channel
0.2.0 - sc-executor
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sp-io
7.0.0 - sp-state-machine
0.13.0 - sp-tracing
6.0.0 - sp-trie
7.0.0 - tokio-util
0.7.4 - tower
0.4.13 - tracing-futures
0.2.5 - tracing-gum
0.9.36 - tracing-subscriber
0.2.25 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0
- cumulus-client-collator
tracing-attributes
0.1.23crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081adepends onused bytracing-core
0.1.30crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213adepends ontracing-futures
0.2.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2depends onused bytracing-gum
0.9.36github.com/paritytech/polkadot↘ 4↖ 29sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused by- polkadot-approval-distribution
0.9.36 - polkadot-availability-bitfield-distribution
0.9.36 - polkadot-availability-distribution
0.9.36 - polkadot-availability-recovery
0.9.36 - polkadot-collator-protocol
0.9.36 - polkadot-dispute-distribution
0.9.36 - polkadot-gossip-support
0.9.36 - polkadot-network-bridge
0.9.36 - polkadot-node-collation-generation
0.9.36 - polkadot-node-core-approval-voting
0.9.36 - polkadot-node-core-av-store
0.9.36 - polkadot-node-core-backing
0.9.36 - polkadot-node-core-bitfield-signing
0.9.36 - polkadot-node-core-candidate-validation
0.9.36 - polkadot-node-core-chain-api
0.9.36 - polkadot-node-core-chain-selection
0.9.36 - polkadot-node-core-dispute-coordinator
0.9.36 - polkadot-node-core-parachains-inherent
0.9.36 - polkadot-node-core-provisioner
0.9.36 - polkadot-node-core-pvf
0.9.36 - polkadot-node-core-pvf-checker
0.9.36 - polkadot-node-core-runtime-api
0.9.36 - polkadot-node-metrics
0.9.36 - polkadot-node-network-protocol
0.9.36 - polkadot-node-subsystem-util
0.9.36 - polkadot-overseer
0.9.36 - polkadot-service
0.9.36 - polkadot-statement-distribution
0.9.36 - polkadot-test-service
0.9.36
- polkadot-approval-distribution
tracing-gum-proc-macro
0.9.36github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcused bytracing-log
0.1.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922tracing-serde
0.1.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1depends onused bytracing-subscriber
0.2.25crates.io↘ 15↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71depends ontrie-db
0.24.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum004e1e8f92535694b4cb1444dc5a8073ecf0815e3357f729638b9f8fc4062908trie-root
0.17.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891depends ontriehash
0.8.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5cdepends onused bytrust-dns-proto
0.22.0crates.io↘ 17↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26depends onused bytrust-dns-resolver
0.22.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfedepends onused bytry-runtime-cli
0.10.0-devgithub.com/paritytech/substrate↘ 24↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51depends on- clap
4.0.32 - frame-remote-externalities
0.10.0-dev - frame-try-runtime
0.10.0-dev - hex
0.4.3 - log
0.4.17 - parity-scale-codec
3.2.1 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.151 - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-debug-derive
5.0.0 - sp-externalities
0.13.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-version
5.0.0 - sp-weights
4.0.0 - substrate-rpc-client
0.10.0-dev - zstd
0.11.2+zstd.1.5.2
- clap
trybuild
1.0.73crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed01de3de062db82c0920b5cabe804f88d599a3f217932292597c678c903754ddepends onused bytt-call
1.0.9crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881dfused bytwox-hash
1.6.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675used bytypenum
1.16.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bbauc-rpc
0.1.4workspace↘ 30↖ 2depends on- anyhow
1.0.68 - app-promotion-rpc
0.1.0 - frame-benchmarking
4.0.0-dev - jsonrpsee
0.16.2 - opal-runtime
0.9.36 - pallet-common
0.1.12 - pallet-evm
6.0.0-dev - parity-scale-codec
3.2.1 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - sc-client-api
4.0.0-dev - sc-executor
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0 - trie-db
0.24.0 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - zstd
0.11.2+zstd.1.5.2
- anyhow
uint
0.9.5crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52unicode-bidi
0.3.8crates.io↘ 0↖ 2unicode-ident
1.0.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebcused byunicode-normalization
0.1.22crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921depends onunicode-segmentation
1.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5aused byunicode-width
0.1.10crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8bunicode-xid
0.2.4crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8cunique-node
0.9.36workspace↘ 86↖ 0depends on- app-promotion-rpc
0.1.0 - clap
4.0.32 - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - flexi_logger
0.24.2 - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - futures
0.3.25 - jsonrpsee
0.16.2 - log
0.4.17 - opal-runtime
0.9.36 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-scale-codec
3.2.1 - parking_lot
0.12.1 - polkadot-cli
0.9.36 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-service
0.9.36 - polkadot-test-service
0.9.36 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.151 - serde_json
1.0.91 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
7.0.0 - substrate-build-script-utils
3.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.23.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3
- app-promotion-rpc
unique-rpc
0.1.2workspace↘ 45↖ 1depends on- app-promotion-rpc
0.1.0 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.25 - jsonrpsee
0.16.2 - pallet-common
0.1.12 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-unique
0.2.1 - rmrk-rpc
0.0.2 - sc-client-api
4.0.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.151 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-storage
7.0.0 - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - tokio
1.23.0 - uc-rpc
0.1.4 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3
used by- app-promotion-rpc
unique-runtime
0.9.36workspace↘ 96↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.1.5 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - logtest
2.0.0 - num_enum
0.5.7 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.3 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-collator-selection
4.0.0 - pallet-common
0.1.12 - pallet-configuration
0.1.3 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-nonfungible
0.1.12 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-xcm
0.9.36 - parachain-info
0.1.0 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - precompile-utils-macro
0.1.0 - rmrk-rpc
0.0.2 - scale-info
2.3.1 - serde
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
used by- app-promotion-rpc
universal-hash
0.4.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05depends onused byunsigned-varint
0.7.1crates.io↘ 4↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836untrusted
0.7.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aup-data-structs
0.2.2workspace↘ 13↖ 21depends onused by- app-promotion-rpc
0.1.0 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.3 - pallet-common
0.1.12 - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.9 - pallet-nonfungible
0.1.12 - pallet-refungible
0.2.11 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.36 - tests
0.1.1 - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-rpc
0.1.3
- app-promotion-rpc
up-pov-estimate-rpc
0.1.0workspace↘ 7↖ 7up-sponsorship
0.1.0github.com/uniquenetwork/pallet-sponsoring↘ 1↖ 7sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.36#55943b982e9b0b80465885f31f76db3dba91dac4depends onurl
2.3.1crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643valuable
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6dused byvalue-bag
1.0.0-alpha.9crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55depends onused byvcpkg
0.2.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaccd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426used byversion_check
0.9.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483fvoid
1.0.2crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887dwaker-fn
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceecawalkdir
2.3.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56want
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0depends onused bywasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.10.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasi
0.11.0+wasi-snapshot-preview1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423wasm-bindgen
0.2.83crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268depends onwasm-bindgen-backend
0.2.83crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142depends onwasm-bindgen-futures
0.4.33crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7dwasm-bindgen-macro
0.2.83crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810used bywasm-bindgen-macro-support
0.2.83crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193cused bywasm-instrument
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa1dafb3e60065305741e83db35c6c2584bb3725b692b5b66148a38d72ace6cddepends onused bywasm-opt
0.110.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb68e8037b4daf711393f4be2056246d12d975651b14d581520ad5d1f19219cecdepends onwasm-opt-cxx-sys
0.110.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91adbad477e97bba3fbd21dd7bfb594e7ad5ceb9169ab1c93ab9cb0ada636b6fused bywasm-opt-sys
0.110.2crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec4fa5a322a4e6ac22fd141f498d56afbdbf9df5debeac32380d2dcaa3e06941wasm-timer
0.2.5crates.io↘ 7↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onwasmi
0.13.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422wasmi_core
0.2.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7used bywasmi-validation
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867bdepends onused bywasmparser
0.89.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab5d3e08b13876f96dd55608d03cd4883a0545884932d5adf11925876c96daefdepends onwasmtime
1.0.2crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ad5af6ba38311282f2a21670d96e78266e8c8e2f38cbcd52c254df6ccbc7731depends onwasmtime-asm-macros
1.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45de63ddfc8b9223d1adc8f7b2ee5f35d1f6d112833934ad7ea66e4f4339e597depends onused bywasmtime-cache
1.0.2crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbcd849399d17d2270141cfe47fa0d91ee52d5f8ea9b98cf7ddde0d53e5f79882depends onused bywasmtime-cranelift
1.0.2crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4bd91339b742ff20bfed4532a27b73c86b5bcbfedd6bea2dcdf2d64471e1b5c6depends onused bywasmtime-environ
1.0.2crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebb881c61f4f627b5d45c54e629724974f8a8890d455bcbe634330cc27309644depends onwasmtime-jit
1.0.2crates.io↘ 17↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1985c628011fe26adf5e23a5301bdc79b245e0e338f14bb58b39e4e25e4d8681depends onused bywasmtime-jit-debug
1.0.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf671b588486f5ccec8c5a3dba6b4c07eac2e66ab8c60e6f4e53717c77f709731depends onwasmtime-runtime
1.0.2crates.io↘ 17↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee8f92ad4b61736339c29361da85769ebc200f184361959d1792832e592a1afddepends onwasmtime-types
1.0.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23d61cb4c46e837b431196dd06abb11731541021916d03476a178b54dc07aebweb-sys
0.3.60crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510fdepends onwebpki
0.22.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bddepends onwebpki-roots
0.22.6crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87depends onwepoll-ffi
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fbdepends onused bywestend-runtime
0.9.36github.com/paritytech/polkadot↘ 83↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - parity-scale-codec
3.2.1 - polkadot-parachain
0.9.36 - polkadot-primitives
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.151 - serde_derive
1.0.151 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - westend-runtime-constants
0.9.36 - xcm
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
used by- bitvec
westend-runtime-constants
0.9.36github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused bywhich
4.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7bdepends onused bywidestring
0.5.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983used bywinapi
0.3.9crates.io↘ 2↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.23 - console
0.15.2 - cpu-time
1.0.0 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - fs2
0.4.3 - gethostname
0.2.3 - hostname
0.3.1 - iana-time-zone
0.1.53 - if-addrs
0.7.0 - ipconfig
0.3.1 - libloading
0.7.4 - nu-ansi-term
0.46.0 - parking_lot_core
0.8.6 - remove_dir_all
0.5.3 - ring
0.16.20 - rpassword
7.2.0 - rtoolbox
0.0.1 - socket2
0.4.7 - static_init
1.0.3 - tempfile
3.3.0 - terminal_size
0.1.17 - time
0.1.45 - walkdir
2.3.2 - winapi-util
0.1.5 - winreg
0.10.1
- ansi_term
winapi-i686-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6used bywinapi-util
0.1.5crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178depends onwinapi-x86_64-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183fused bywindows
0.34.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829fdepends onused bywindows_aarch64_gnullvm
0.42.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19eused bywindows_aarch64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881dused bywindows_aarch64_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47used bywindows_aarch64_msvc
0.42.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4used bywindows_i686_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688edused bywindows_i686_gnu
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6used bywindows_i686_gnu
0.42.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7used bywindows_i686_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956used bywindows_i686_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024used bywindows_i686_msvc
0.42.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246used bywindows_x86_64_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4used bywindows_x86_64_gnu
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1used bywindows_x86_64_gnu
0.42.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0edused bywindows_x86_64_gnullvm
0.42.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028used bywindows_x86_64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9used bywindows_x86_64_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680used bywindows_x86_64_msvc
0.42.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5used bywindows-sys
0.36.1crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2depends onwindows-sys
0.42.0crates.io↘ 7↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7depends onwinreg
0.10.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869ddepends onused bywyz
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214used bywyz
0.5.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9eddepends onused byx25519-dalek
1.1.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byxcm
0.9.36github.com/paritytech/polkadot↘ 7↖ 23sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - orml-traits
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-configuration
0.1.3 - pallet-foreign-assets
0.1.0 - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-common
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36 - xcm-builder
0.9.36 - xcm-executor
0.9.36
- cumulus-pallet-dmp-queue
xcm-builder
0.9.36github.com/paritytech/polkadot↘ 13↖ 10sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onxcm-executor
0.9.36github.com/paritytech/polkadot↘ 11↖ 17sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcdepends onused by- cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.36 - opal-runtime
0.9.36 - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-foreign-assets
0.1.0 - pallet-xcm
0.9.36 - pallet-xcm-benchmarks
0.9.36 - polkadot-runtime
0.9.36 - polkadot-runtime-parachains
0.9.36 - polkadot-test-runtime
0.9.36 - quartz-runtime
0.9.36 - rococo-runtime
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.36 - xcm-builder
0.9.36
- cumulus-pallet-xcmp-queue
xcm-procedural
0.9.36github.com/paritytech/polkadot↘ 4↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bcused byyamux
0.10.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5used byzeroize
1.5.7crates.io↘ 1↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149fdepends onused by- chacha20
0.8.2 - chacha20poly1305
0.9.1 - crypto-bigint
0.4.9 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-pre.5 - der
0.6.1 - ed25519-dalek
1.0.1 - ed25519-zebra
3.1.0 - elliptic-curve
0.12.3 - libp2p-core
0.37.0 - libp2p-noise
0.40.0 - merlin
2.0.1 - rfc6979
0.3.1 - sc-network
0.10.0-dev - schnorrkel
0.9.1 - sec1
0.3.0 - secrecy
0.8.0 - sp-core
7.0.0 - substrate-bip39
0.4.4 - tiny-bip39
0.8.2 - x25519-dalek
1.1.1
- chacha20
zeroize_derive
1.3.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36cused byzstd
0.11.2+zstd.1.5.2crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4depends onzstd-safe
5.0.2+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4dbdepends onused byzstd-sys
2.0.4+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fa202f2ef00074143e219d15b62ffc317d17cc33909feac471c044087cad7b0depends onused by
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -89,6 +89,10 @@
bench-evm-migration:
make _bench PALLET=evm-migration
+.PHONY: bench-configuration
+bench-configuration:
+ make _bench PALLET=configuration
+
.PHONY: bench-common
bench-common:
make _bench PALLET=common
@@ -127,12 +131,20 @@
.PHONY: bench-foreign-assets
bench-foreign-assets:
- make _bench PALLET=foreign-assets
+ make _bench PALLET=foreign-assets
+
+.PHONY: bench-collator-selection
+bench-collator-selection:
+ make _bench PALLET=collator-selection
+
+.PHONY: bench-identity
+bench-identity:
+ make _bench PALLET=identity
.PHONY: bench-app-promotion
bench-app-promotion:
make _bench PALLET=app-promotion PALLET_DIR=app-promotion
.PHONY: bench
-# Disabled: bench-scheduler, bench-rmrk-core, bench-rmrk-equip
-bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-foreign-assets
+# Disabled: bench-scheduler, bench-collator-selection, bench-rmrk-core, bench-rmrk-equip
+bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets bench-identity
launch-config.jsondiffbeforeafterboth--- a/launch-config.json
+++ b/launch-config.json
@@ -85,7 +85,7 @@
"parachains": [
{
"bin": "../unique-chain/target/release/unique-collator",
- "id": "1000",
+ "id": 1000,
"balance": "1000000000000000000000000",
"nodes": [
{
@@ -111,6 +111,42 @@
"--unsafe-ws-external",
"-lxcm=trace"
]
+ },
+ {
+ "port": 31202,
+ "wsPort": 9946,
+ "rpcPort": 9935,
+ "name": "charlie",
+ "flags": [
+ "--rpc-cors=all",
+ "--unsafe-rpc-external",
+ "--unsafe-ws-external",
+ "-lxcm=trace"
+ ]
+ },
+ {
+ "port": 31203,
+ "wsPort": 9947,
+ "rpcPort": 9936,
+ "name": "dave",
+ "flags": [
+ "--rpc-cors=all",
+ "--unsafe-rpc-external",
+ "--unsafe-ws-external",
+ "-lxcm=trace"
+ ]
+ },
+ {
+ "port": 31204,
+ "wsPort": 9948,
+ "rpcPort": 9937,
+ "name": "eve",
+ "flags": [
+ "--rpc-cors=all",
+ "--unsafe-rpc-external",
+ "--unsafe-ws-external",
+ "-lxcm=trace"
+ ]
}
]
}
node/cli/src/chain_spec.rsdiffbeforeafterboth--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -143,11 +143,76 @@
AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()
}
+#[cfg(feature = "quartz-runtime")]
+macro_rules! testnet_genesis {
+ (
+ $runtime:path,
+ $root_key:expr,
+ $initial_invulnerables:expr,
+ $endowed_accounts:expr,
+ $id:expr
+ ) => {{
+ use $runtime::*;
+
+ GenesisConfig {
+ system: SystemConfig {
+ code: WASM_BINARY
+ .expect("WASM binary was not build, please build it!")
+ .to_vec(),
+ },
+ balances: BalancesConfig {
+ balances: $endowed_accounts
+ .iter()
+ .cloned()
+ // 1e13 UNQ
+ .map(|k| (k, 1 << 100))
+ .collect(),
+ },
+ treasury: Default::default(),
+ tokens: TokensConfig { balances: vec![] },
+ sudo: SudoConfig {
+ key: Some($root_key),
+ },
+ vesting: VestingConfig { vesting: vec![] },
+ parachain_info: ParachainInfoConfig {
+ parachain_id: $id.into(),
+ },
+ parachain_system: Default::default(),
+ collator_selection: CollatorSelectionConfig {
+ invulnerables: $initial_invulnerables
+ .iter()
+ .cloned()
+ .map(|(acc, _)| acc)
+ .collect(),
+ },
+ session: SessionConfig {
+ keys: $initial_invulnerables
+ .into_iter()
+ .map(|(acc, aura)| {
+ (
+ acc.clone(), // account id
+ acc, // validator id
+ SessionKeys { aura }, // session keys
+ )
+ })
+ .collect(),
+ },
+ aura: Default::default(),
+ aura_ext: Default::default(),
+ evm: EVMConfig {
+ accounts: BTreeMap::new(),
+ },
+ ethereum: EthereumConfig {},
+ }
+ }};
+}
+
+#[cfg(not(feature = "quartz-runtime"))]
macro_rules! testnet_genesis {
(
$runtime:path,
$root_key:expr,
- $initial_authorities:expr,
+ $initial_invulnerables:expr,
$endowed_accounts:expr,
$id:expr
) => {{
@@ -178,7 +243,10 @@
},
parachain_system: Default::default(),
aura: AuraConfig {
- authorities: $initial_authorities,
+ authorities: $initial_invulnerables
+ .into_iter()
+ .map(|(_, aura)| aura)
+ .collect(),
},
aura_ext: Default::default(),
evm: EVMConfig {
@@ -219,8 +287,14 @@
// Sudo account
get_account_id_from_seed::<sr25519::Public>("Alice"),
vec![
- get_from_seed::<AuraId>("Alice"),
- get_from_seed::<AuraId>("Bob"),
+ (
+ get_account_id_from_seed::<sr25519::Public>("Alice"),
+ get_from_seed::<AuraId>("Alice"),
+ ),
+ (
+ get_account_id_from_seed::<sr25519::Public>("Bob"),
+ get_from_seed::<AuraId>("Bob"),
+ ),
],
// Pre-funded accounts
vec![
@@ -287,8 +361,14 @@
// Sudo account
get_account_id_from_seed::<sr25519::Public>("Alice"),
vec![
- get_from_seed::<AuraId>("Alice"),
- get_from_seed::<AuraId>("Bob"),
+ (
+ get_account_id_from_seed::<sr25519::Public>("Alice"),
+ get_from_seed::<AuraId>("Alice"),
+ ),
+ (
+ get_account_id_from_seed::<sr25519::Public>("Bob"),
+ get_from_seed::<AuraId>("Bob"),
+ ),
],
// Pre-funded accounts
vec![
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -973,7 +973,7 @@
.import_notification_stream()
.map(|_| EngineCommand::SealNewBlock {
create_empty: true,
- finalize: false,
+ finalize: false, // todo:collator finalize true
parent_hash: None,
sender: None,
}),
@@ -984,7 +984,7 @@
dyn Stream<Item = EngineCommand<Hash>> + Send + Sync + Unpin,
> = Box::new(autoseal_interval.map(|_| EngineCommand::SealNewBlock {
create_empty: true,
- finalize: false,
+ finalize: false, // todo:collator finalize true
parent_hash: None,
sender: None,
}));
pallets/collator-selection/CHANGELOG.mddiffbeforeafterboth--- /dev/null
+++ b/pallets/collator-selection/CHANGELOG.md
@@ -0,0 +1,25 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+
+<!-- bureaucracy goes here -->
+
+## [4.0.0] - 2022-12-29
+
+### Added
+
+- Entire functionality moved over from cumulus/pallet-collator-selection (v3.0.0). Refactored business logic:
+ - Added an extra step for candidacy, `get_license`, at which payment happens. The number of license holders is unlimited.
+ - Only licensed accounts can apply for candidacy with `onboard`. No extra deposits are made.
+ - Active candidates may `offboard`, but they will retain their license.
+ - Deposit is returned, and candidacy possibly removed with `release_license`.
+ - License can be forcibly forfeited and candidacy removed with `force_release_license`.
+ - Failing collators' deposits will now be fully slashed, and funds will be redirected to Treasury.
+ - Unify `MaxInvulnerables` and `MaxCandidates` into `MaxCollators`.
+ - Remove `MinCandidates`.
+ - Minimal amount of invulnerables is now 1.
+ - Both invulnerables and candidates count against the limits together, however invulnerables ignore `DesiredCollators`.
+ - `KickThreshold` is made configurable.
+ - `DesiredCollators`, `LicenseBond`, and `KickThreshold` are moved to and referenced from `pallet-configuration`.
+ - Naming changes to better reflect the new functionality.
+ - More minor changes, tests, benchmarks, etc.
\ No newline at end of file
pallets/collator-selection/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/pallets/collator-selection/Cargo.toml
@@ -0,0 +1,64 @@
+[package]
+name = "pallet-collator-selection"
+version = "4.0.0"
+description = "Simple staking pallet with a fixed stake."
+authors = ["Parity Technologies <admin@parity.io>", "Unique Network <support@uniquenetwork.io>"]
+edition = "2021"
+homepage = "https://unique.network"
+repository = "https://github.com/UniqueNetwork/unique-chain"
+license = "GPLv3"
+
+[package.metadata.docs.rs]
+targets = ["x86_64-unknown-linux-gnu"]
+
+[dependencies]
+log = { version = "0.4.17", default-features = false }
+codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" }
+rand = { version = "0.8.5", features = ["std_rng"], default-features = false }
+scale-info = { version = "2.2.0", default-features = false, features = ["derive"] }
+serde = { version = "1.0.145", default-features = false }
+
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-staking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+pallet-configuration = { default-features = false, path = "../configuration" }
+
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+
+[dev-dependencies]
+sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+pallet-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+
+[features]
+default = ["std"]
+runtime-benchmarks = [
+ "frame-benchmarking/runtime-benchmarks",
+ "frame-support/runtime-benchmarks",
+ "frame-system/runtime-benchmarks",
+]
+std = [
+ "codec/std",
+ "log/std",
+ "scale-info/std",
+ "rand/std",
+ "sp-runtime/std",
+ "sp-staking/std",
+ "sp-std/std",
+ "frame-support/std",
+ "frame-system/std",
+ "frame-benchmarking/std",
+ "pallet-authorship/std",
+ "pallet-session/std",
+]
+
+try-runtime = [ "frame-support/try-runtime" ]
pallets/collator-selection/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/collator-selection/src/benchmarking.rs
@@ -0,0 +1,388 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// Copyright (C) 2021 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! Benchmarking setup for pallet-collator-selection
+
+use super::*;
+
+#[allow(unused)]
+use crate::Pallet as CollatorSelection;
+use frame_benchmarking::{account, benchmarks, impl_benchmark_test_suite, whitelisted_caller};
+use frame_support::{
+ assert_ok,
+ codec::Decode,
+ traits::{Currency, EnsureOrigin, Get},
+};
+use frame_system::{EventRecord, RawOrigin};
+use pallet_authorship::EventHandler;
+use pallet_session::{self as session, SessionManager};
+use pallet_configuration::{
+ self as configuration, BalanceOf,
+ CollatorSelectionDesiredCollatorsOverride as DesiredCollators,
+ CollatorSelectionLicenseBondOverride as LicenseBond,
+};
+use sp_std::prelude::*;
+
+const SEED: u32 = 0;
+
+// TODO: remove if this is given in substrate commit.
+macro_rules! whitelist {
+ ($acc:ident) => {
+ frame_benchmarking::benchmarking::add_to_whitelist(
+ frame_system::Account::<T>::hashed_key_for(&$acc).into(),
+ );
+ };
+}
+
+fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
+ let events = frame_system::Pallet::<T>::events();
+ let system_event: <T as frame_system::Config>::RuntimeEvent = generic_event.into();
+ // compare to the last event record
+ let EventRecord { event, .. } = &events[events.len() - 1];
+ assert_eq!(event, &system_event);
+}
+
+fn create_funded_user<T: Config>(
+ string: &'static str,
+ n: u32,
+ balance_factor: u32,
+) -> T::AccountId {
+ let user = account(string, n, SEED);
+ let balance = T::Currency::minimum_balance() * balance_factor.into();
+ let _ = T::Currency::make_free_balance_be(&user, balance);
+ user
+}
+
+fn keys<T: Config + session::Config>(c: u32) -> <T as session::Config>::Keys {
+ use rand::{RngCore, SeedableRng};
+
+ let keys = {
+ let mut keys = [0u8; 128];
+
+ if c > 0 {
+ let mut rng = rand::rngs::StdRng::seed_from_u64(c as u64);
+ rng.fill_bytes(&mut keys);
+ }
+
+ keys
+ };
+
+ Decode::decode(&mut &keys[..]).unwrap()
+}
+
+fn validator<T: Config + session::Config>(c: u32) -> (T::AccountId, <T as session::Config>::Keys) {
+ (create_funded_user::<T>("candidate", c, 1000), keys::<T>(c))
+}
+
+fn register_validators<T: Config + session::Config>(count: u32) -> Vec<T::AccountId> {
+ let validators = (0..count).map(|c| validator::<T>(c)).collect::<Vec<_>>();
+
+ for (who, keys) in validators.clone() {
+ <session::Pallet<T>>::set_keys(RawOrigin::Signed(who).into(), keys, Vec::new()).unwrap();
+ }
+
+ validators.into_iter().map(|(who, _)| who).collect()
+}
+
+fn register_invulnerables<T: Config + configuration::Config>(count: u32) {
+ let candidates = (0..count)
+ .map(|c| account("candidate", c, SEED))
+ .collect::<Vec<_>>();
+
+ for who in candidates {
+ <CollatorSelection<T>>::add_invulnerable(T::UpdateOrigin::successful_origin(), who)
+ .unwrap();
+ }
+}
+
+fn register_candidates<T: Config + configuration::Config>(count: u32) {
+ let candidates = (0..count)
+ .map(|c| account("candidate", c, SEED))
+ .collect::<Vec<_>>();
+ assert!(
+ <LicenseBond<T>>::get() > 0u32.into(),
+ "Bond cannot be zero!"
+ );
+
+ for who in candidates {
+ T::Currency::make_free_balance_be(&who, <LicenseBond<T>>::get() * 2u32.into());
+ <CollatorSelection<T>>::get_license(RawOrigin::Signed(who.clone()).into()).unwrap();
+ <CollatorSelection<T>>::onboard(RawOrigin::Signed(who).into()).unwrap();
+ }
+}
+
+fn get_licenses<T: Config + configuration::Config>(count: u32) {
+ let candidates = (0..count)
+ .map(|c| account("candidate", c, SEED))
+ .collect::<Vec<_>>();
+ assert!(
+ <LicenseBond<T>>::get() > 0u32.into(),
+ "Bond cannot be zero!"
+ );
+
+ for who in candidates {
+ T::Currency::make_free_balance_be(&who, <LicenseBond<T>>::get() * 2u32.into());
+ <CollatorSelection<T>>::get_license(RawOrigin::Signed(who.clone()).into()).unwrap();
+ }
+}
+
+benchmarks! {
+ where_clause { where T: pallet_authorship::Config + session::Config + configuration::Config }
+
+ // todo:collator this and all the following do not work for some reason, going all the way up to 10 in length
+ // Both invulnerables and candidates count together against MaxCollators.
+ // Maybe try putting it in braces? 1 .. (T::MaxCollators::get() - 2)
+ add_invulnerable {
+ let b in 1 .. T::MaxCollators::get() - 3;
+ register_validators::<T>(b);
+ register_invulnerables::<T>(b);
+
+ // log::info!("{} {}", <Invulnerables<T>>::get().len(), b);
+
+ let new_invulnerable: T::AccountId = whitelisted_caller();
+ let bond: BalanceOf<T> = T::Currency::minimum_balance() * 2u32.into();
+ T::Currency::make_free_balance_be(&new_invulnerable, bond.clone());
+
+ <session::Pallet<T>>::set_keys(
+ RawOrigin::Signed(new_invulnerable.clone()).into(),
+ keys::<T>(b + 1),
+ Vec::new()
+ ).unwrap();
+
+ let root_origin = T::UpdateOrigin::successful_origin();
+ }: {
+ assert_ok!(
+ <CollatorSelection<T>>::add_invulnerable(root_origin, new_invulnerable.clone())
+ );
+ }
+ verify {
+ assert_last_event::<T>(Event::InvulnerableAdded{invulnerable: new_invulnerable}.into());
+ }
+
+ remove_invulnerable {
+ let b in 1 .. T::MaxCollators::get();
+ register_validators::<T>(b);
+ register_invulnerables::<T>(b);
+
+ let root_origin = T::UpdateOrigin::successful_origin();
+ let leaving = <Invulnerables<T>>::get().last().unwrap().clone();
+ whitelist!(leaving);
+ }: {
+ assert_ok!(
+ <CollatorSelection<T>>::remove_invulnerable(root_origin, leaving.clone())
+ );
+ }
+ verify {
+ assert_last_event::<T>(Event::InvulnerableRemoved{invulnerable: leaving}.into());
+ }
+
+ get_license {
+ let c in 1 .. T::MaxCollators::get();
+
+ <LicenseBond<T>>::put(T::Currency::minimum_balance());
+
+ register_validators::<T>(c);
+ get_licenses::<T>(c);
+
+ let caller: T::AccountId = whitelisted_caller();
+ let bond: BalanceOf<T> = T::Currency::minimum_balance() * 2u32.into();
+ T::Currency::make_free_balance_be(&caller, bond.clone());
+
+ <session::Pallet<T>>::set_keys(
+ RawOrigin::Signed(caller.clone()).into(),
+ keys::<T>(c + 1),
+ Vec::new()
+ ).unwrap();
+
+ }: _(RawOrigin::Signed(caller.clone()))
+ verify {
+ assert_last_event::<T>(Event::LicenseObtained{account_id: caller, deposit: bond / 2u32.into()}.into());
+ }
+
+ // worst case is when we have all the max-candidate slots filled except one, and we fill that
+ // one.
+ onboard {
+ let c in 1 .. 5;
+
+ <LicenseBond<T>>::put(T::Currency::minimum_balance());
+ <DesiredCollators<T>>::put(c + 2);
+
+ register_validators::<T>(c);
+ register_candidates::<T>(c);
+
+ let caller: T::AccountId = whitelisted_caller();
+ let bond: BalanceOf<T> = T::Currency::minimum_balance() * 2u32.into();
+ T::Currency::make_free_balance_be(&caller, bond.clone());
+
+ let origin = RawOrigin::Signed(caller.clone());
+
+ <session::Pallet<T>>::set_keys(
+ origin.clone().into(),
+ keys::<T>(c + 1),
+ Vec::new()
+ ).unwrap();
+
+ assert_ok!(
+ <CollatorSelection<T>>::get_license(origin.clone().into())
+ );
+ }: _(origin)
+ verify {
+ assert_last_event::<T>(Event::CandidateAdded{account_id: caller}.into());
+ }
+
+ // worst case is the last candidate leaving.
+ offboard {
+ let c in 1 .. T::MaxCollators::get();
+ <LicenseBond<T>>::put(T::Currency::minimum_balance());
+ <DesiredCollators<T>>::put(c + 2);
+
+ register_validators::<T>(c);
+ register_candidates::<T>(c);
+
+ let leaving = <Candidates<T>>::get().last().unwrap().clone();
+ whitelist!(leaving);
+ }: _(RawOrigin::Signed(leaving.clone()))
+ verify {
+ assert_last_event::<T>(Event::CandidateRemoved{account_id: leaving}.into());
+ }
+
+ // worst case is the last candidate leaving.
+ release_license {
+ let c in 1 .. T::MaxCollators::get();
+ let bond = T::Currency::minimum_balance();
+ <LicenseBond<T>>::put(bond);
+ <DesiredCollators<T>>::put(c);
+
+ register_validators::<T>(c);
+ register_candidates::<T>(c);
+
+ let leaving = <Candidates<T>>::get().last().unwrap().clone();
+ whitelist!(leaving);
+ }: _(RawOrigin::Signed(leaving.clone()))
+ verify {
+ assert_last_event::<T>(Event::LicenseReleased{account_id: leaving, deposit_returned: bond}.into());
+ }
+
+ // worst case is the last candidate leaving.
+ force_release_license {
+ let c in 1 .. T::MaxCollators::get();
+ let bond = T::Currency::minimum_balance();
+ <LicenseBond<T>>::put(bond);
+ <DesiredCollators<T>>::put(c);
+
+ register_validators::<T>(c);
+ register_candidates::<T>(c);
+
+ let leaving = <Candidates<T>>::get().last().unwrap().clone();
+ whitelist!(leaving);
+ let origin = T::UpdateOrigin::successful_origin();
+ }: {
+ assert_ok!(
+ <CollatorSelection<T>>::force_release_license(origin, leaving.clone())
+ );
+ }
+ verify {
+ assert_last_event::<T>(Event::LicenseReleased{account_id: leaving, deposit_returned: bond}.into());
+ }
+
+ // worst case is paying a non-existing candidate account.
+ note_author {
+ <LicenseBond<T>>::put(T::Currency::minimum_balance());
+ T::Currency::make_free_balance_be(
+ &<CollatorSelection<T>>::account_id(),
+ T::Currency::minimum_balance() * 4u32.into(),
+ );
+ let author = account("author", 0, SEED);
+ let new_block: T::BlockNumber = 10u32.into();
+
+ frame_system::Pallet::<T>::set_block_number(new_block);
+ assert!(T::Currency::free_balance(&author) == 0u32.into());
+ }: {
+ <CollatorSelection<T> as EventHandler<_, _>>::note_author(author.clone())
+ } verify {
+ assert!(T::Currency::free_balance(&author) > 0u32.into());
+ assert_eq!(frame_system::Pallet::<T>::block_number(), new_block);
+ }
+
+ // worst case for new session.
+ new_session {
+ let r in 1 .. T::MaxCollators::get();
+ let c in 1 .. T::MaxCollators::get();
+
+ <LicenseBond<T>>::put(T::Currency::minimum_balance());
+ <DesiredCollators<T>>::put(c);
+ frame_system::Pallet::<T>::set_block_number(0u32.into());
+
+ register_validators::<T>(c);
+ register_candidates::<T>(c);
+
+ let new_block: T::BlockNumber = 1800u32.into();
+ let zero_block: T::BlockNumber = 0u32.into();
+ let candidates = <Candidates<T>>::get();
+
+ let non_removals = c.saturating_sub(r);
+
+ for i in 0..c {
+ <LastAuthoredBlock<T>>::insert(candidates[i as usize].clone(), zero_block);
+ }
+
+ if non_removals > 0 {
+ for i in 0..non_removals {
+ <LastAuthoredBlock<T>>::insert(candidates[i as usize].clone(), new_block);
+ }
+ } else {
+ for i in 0..c {
+ <LastAuthoredBlock<T>>::insert(candidates[i as usize].clone(), new_block);
+ }
+ }
+
+ let pre_length = <Candidates<T>>::get().len();
+
+ frame_system::Pallet::<T>::set_block_number(new_block);
+
+ assert!(<Candidates<T>>::get().len() == c as usize);
+ }: {
+ <CollatorSelection<T> as SessionManager<_>>::new_session(0)
+ } verify {
+ if c > r {
+ assert!(<Candidates<T>>::get().len() < pre_length);
+ } else {
+ assert!(<Candidates<T>>::get().len() == pre_length);
+ }
+ }
+}
+
+impl_benchmark_test_suite!(
+ CollatorSelection,
+ crate::mock::new_test_ext(),
+ crate::mock::Test,
+);
pallets/collator-selection/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/collator-selection/src/lib.rs
@@ -0,0 +1,649 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// Copyright (C) 2021 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// todo:collator documentation
+//! Collator Selection pallet.
+//!
+//! A pallet to manage collators in a parachain.
+//!
+//! ## Overview
+//!
+//! The Collator Selection pallet manages the collators of a parachain. **Collation is _not_ a
+//! secure activity** and this pallet does not implement any game-theoretic mechanisms to meet BFT
+//! safety assumptions of the chosen set.
+//!
+//! ## Terminology
+//!
+//! - Collator: A parachain block producer.
+//! - Bond: An amount of `Balance` _reserved_ for candidate registration.
+//! - Invulnerable: An account guaranteed to be in the collator set.
+//!
+//! ## Implementation
+//!
+//! The final `Collators` are aggregated from two individual lists:
+//!
+//! 1. [`Invulnerables`]: a set of collators appointed by governance. These accounts will always be
+//! collators.
+//! 2. [`Candidates`]: these are *candidates to the collation task* and may or may not be elected as
+//! a final collator.
+//!
+//! The current implementation resolves congestion of [`Candidates`] in a first-come-first-serve
+//! manner.
+//!
+//! Candidates will not be allowed to get kicked or leave_intent if the total number of candidates
+//! fall below MinCandidates. This is for potential disaster recovery scenarios.
+//!
+//! ### Rewards
+//!
+//! The Collator Selection pallet maintains an on-chain account (the "Pot"). In each block, the
+//! collator who authored it receives:
+//!
+//! - Half the value of the Pot.
+//! - Half the value of the transaction fees within the block. The other half of the transaction
+//! fees are deposited into the Pot.
+//!
+//! To initiate rewards an ED needs to be transferred to the pot address.
+//!
+//! Note: Eventually the Pot distribution may be modified as discussed in
+//! [this issue](https://github.com/paritytech/statemint/issues/21#issuecomment-810481073).
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+pub use pallet::*;
+
+#[cfg(test)]
+mod mock;
+
+#[cfg(test)]
+mod tests;
+
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
+pub mod weights;
+
+#[frame_support::pallet]
+pub mod pallet {
+ pub use crate::weights::WeightInfo;
+ use core::ops::Div;
+ use frame_support::{
+ dispatch::{DispatchClass, DispatchResultWithPostInfo},
+ inherent::Vec,
+ pallet_prelude::*,
+ sp_runtime::traits::{AccountIdConversion, CheckedSub, Saturating, Zero},
+ traits::{
+ Currency, EnsureOrigin, ExistenceRequirement::KeepAlive, ReservableCurrency,
+ ValidatorRegistration,
+ },
+ BoundedVec, PalletId,
+ };
+ use frame_system::pallet_prelude::*;
+ use pallet_session::SessionManager;
+ use sp_runtime::{Perbill, traits::Convert};
+ use pallet_configuration::{
+ CollatorSelectionDesiredCollatorsOverride as DesiredCollators,
+ CollatorSelectionLicenseBondOverride as LicenseBond,
+ CollatorSelectionKickThresholdOverride as KickThreshold, BalanceOf,
+ };
+ use sp_staking::SessionIndex;
+
+ /// A convertor from collators id. Since this pallet does not have stash/controller, this is
+ /// just identity.
+ pub struct IdentityCollator;
+ impl<T> sp_runtime::traits::Convert<T, Option<T>> for IdentityCollator {
+ fn convert(t: T) -> Option<T> {
+ Some(t)
+ }
+ }
+
+ /// Configure the pallet by specifying the parameters and types on which it depends.
+ #[pallet::config]
+ pub trait Config: frame_system::Config + pallet_configuration::Config {
+ /// Overarching event type.
+ type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
+
+ /// Origin that can dictate updating parameters of this pallet.
+ type UpdateOrigin: EnsureOrigin<Self::RuntimeOrigin>;
+
+ /// Account Identifier that holds the chain's treasury.
+ type TreasuryAccountId: Get<Self::AccountId>;
+
+ /// Account Identifier from which the internal Pot is generated.
+ type PotId: Get<PalletId>;
+
+ /// Maximum number of candidates and invulnerables that we should have. This is enforced in code.
+ type MaxCollators: Get<u32>;
+
+ /// If kicked, how much of the collator's deposit will be slashed and sent to the slash destination.
+ type SlashRatio: Get<Perbill>;
+
+ /// A stable ID for a validator.
+ type ValidatorId: Member + Parameter;
+
+ /// A conversion from account ID to validator ID.
+ ///
+ /// Its cost must be at most one storage read.
+ type ValidatorIdOf: Convert<Self::AccountId, Option<Self::ValidatorId>>;
+
+ /// Validate a user is registered
+ type ValidatorRegistration: ValidatorRegistration<Self::ValidatorId>;
+
+ /// The weight information of this pallet.
+ type WeightInfo: WeightInfo;
+ }
+
+ #[pallet::pallet]
+ #[pallet::generate_store(pub(super) trait Store)]
+ pub struct Pallet<T>(_);
+
+ /// The invulnerable, fixed collators.
+ #[pallet::storage]
+ #[pallet::getter(fn invulnerables)]
+ pub type Invulnerables<T: Config> =
+ StorageValue<_, BoundedVec<T::AccountId, T::MaxCollators>, ValueQuery>;
+
+ /// The (community) collation license holders.
+ #[pallet::storage]
+ #[pallet::getter(fn license_deposit_of)]
+ pub type LicenseDepositOf<T: Config> =
+ StorageMap<_, Blake2_128Concat, T::AccountId, BalanceOf<T>, ValueQuery>;
+
+ /// The (community, limited) collation candidates.
+ #[pallet::storage]
+ #[pallet::getter(fn candidates)]
+ pub type Candidates<T: Config> =
+ StorageValue<_, BoundedVec<T::AccountId, T::MaxCollators>, ValueQuery>;
+
+ /// Last block authored by collator.
+ #[pallet::storage]
+ #[pallet::getter(fn last_authored_block)]
+ pub type LastAuthoredBlock<T: Config> =
+ StorageMap<_, Twox64Concat, T::AccountId, T::BlockNumber, ValueQuery>;
+
+ #[pallet::genesis_config]
+ pub struct GenesisConfig<T: Config> {
+ pub invulnerables: Vec<T::AccountId>,
+ }
+
+ #[cfg(feature = "std")]
+ impl<T: Config> Default for GenesisConfig<T> {
+ fn default() -> Self {
+ Self {
+ invulnerables: Default::default(),
+ }
+ }
+ }
+
+ #[pallet::genesis_build]
+ impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
+ fn build(&self) {
+ let duplicate_invulnerables = self
+ .invulnerables
+ .iter()
+ .collect::<std::collections::BTreeSet<_>>();
+ assert!(
+ duplicate_invulnerables.len() == self.invulnerables.len(),
+ "duplicate invulnerables in genesis."
+ );
+
+ let bounded_invulnerables =
+ BoundedVec::<_, T::MaxCollators>::try_from(self.invulnerables.clone())
+ .expect("genesis invulnerables are more than T::MaxCollators");
+
+ <Invulnerables<T>>::put(bounded_invulnerables);
+ }
+ }
+
+ #[pallet::event]
+ #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ pub enum Event<T: Config> {
+ InvulnerableAdded {
+ invulnerable: T::AccountId,
+ },
+ InvulnerableRemoved {
+ invulnerable: T::AccountId,
+ },
+ LicenseObtained {
+ account_id: T::AccountId,
+ deposit: BalanceOf<T>,
+ },
+ LicenseReleased {
+ account_id: T::AccountId,
+ deposit_returned: BalanceOf<T>,
+ },
+ CandidateAdded {
+ account_id: T::AccountId,
+ },
+ CandidateRemoved {
+ account_id: T::AccountId,
+ },
+ }
+
+ // Errors inform users that something went wrong.
+ #[pallet::error]
+ pub enum Error<T> {
+ /// Too many candidates
+ TooManyCandidates,
+ /// Unknown error
+ Unknown,
+ /// Permission issue
+ Permission,
+ /// User already holds license to collate
+ AlreadyHoldingLicense,
+ /// User does not hold a license to collate
+ NoLicense,
+ /// User is already a candidate
+ AlreadyCandidate,
+ /// User is not a candidate
+ NotCandidate,
+ /// Too many invulnerables
+ TooManyInvulnerables,
+ /// Too few invulnerables
+ TooFewInvulnerables,
+ /// User is already an Invulnerable
+ AlreadyInvulnerable,
+ /// User is not an Invulnerable
+ NotInvulnerable,
+ /// Account has no associated validator ID
+ NoAssociatedValidatorId,
+ /// Validator ID is not yet registered
+ ValidatorNotRegistered,
+ }
+
+ #[pallet::hooks]
+ impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {}
+
+ #[pallet::call]
+ impl<T: Config> Pallet<T> {
+ /// Add a collator to the list of invulnerable (fixed) collators.
+ #[pallet::call_index(0)]
+ #[pallet::weight(<T as Config>::WeightInfo::add_invulnerable(T::MaxCollators::get()))]
+ pub fn add_invulnerable(
+ origin: OriginFor<T>,
+ new: T::AccountId,
+ ) -> DispatchResultWithPostInfo {
+ T::UpdateOrigin::ensure_origin(origin)?;
+
+ // check if the new invulnerable has associated validator keys before it is added
+ let validator_key = T::ValidatorIdOf::convert(new.clone())
+ .ok_or(Error::<T>::NoAssociatedValidatorId)?;
+ ensure!(
+ T::ValidatorRegistration::is_registered(&validator_key),
+ Error::<T>::ValidatorNotRegistered
+ );
+ if Self::invulnerables().contains(&new) {
+ return Ok(().into());
+ }
+
+ <Invulnerables<T>>::try_append(new.clone())
+ .map_err(|_| Error::<T>::TooManyInvulnerables)?;
+
+ // try to offboard the new invulnerable if it was a collator candidate before
+ let _ = Self::try_remove_candidate(&new);
+
+ Self::deposit_event(Event::InvulnerableAdded { invulnerable: new });
+ Ok(().into())
+ }
+
+ /// Remove a collator from the list of invulnerable (fixed) collators.
+ #[pallet::call_index(1)]
+ #[pallet::weight(<T as Config>::WeightInfo::remove_invulnerable(T::MaxCollators::get()))]
+ pub fn remove_invulnerable(
+ origin: OriginFor<T>,
+ who: T::AccountId,
+ ) -> DispatchResultWithPostInfo {
+ T::UpdateOrigin::ensure_origin(origin)?;
+
+ <Invulnerables<T>>::try_mutate(|invulnerables| -> DispatchResult {
+ if invulnerables.len() <= 1 {
+ return Err(Error::<T>::TooFewInvulnerables.into());
+ }
+
+ let index = invulnerables
+ .into_iter()
+ .position(|r| *r == who)
+ .ok_or(Error::<T>::NotInvulnerable)?;
+ invulnerables.remove(index);
+ Ok(())
+ })?;
+ Self::deposit_event(Event::InvulnerableRemoved { invulnerable: who });
+ Ok(().into())
+ }
+
+ /// Purchase a license on block collation for this account.
+ /// It does not make it a collator candidate, use `onboard` afterward. The account must
+ /// (a) already have registered session keys and (b) be able to reserve the `LicenseBond`.
+ ///
+ /// This call is not available to `Invulnerable` collators.
+ #[pallet::call_index(2)]
+ #[pallet::weight(<T as Config>::WeightInfo::get_license(T::MaxCollators::get()))]
+ pub fn get_license(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
+ // register_as_candidate
+ let who = ensure_signed(origin)?;
+
+ if LicenseDepositOf::<T>::contains_key(&who) {
+ return Err(Error::<T>::AlreadyHoldingLicense.into());
+ }
+
+ let validator_key = T::ValidatorIdOf::convert(who.clone())
+ .ok_or(Error::<T>::NoAssociatedValidatorId)?;
+ ensure!(
+ T::ValidatorRegistration::is_registered(&validator_key),
+ Error::<T>::ValidatorNotRegistered
+ );
+
+ let deposit = <LicenseBond<T>>::get();
+
+ T::Currency::reserve(&who, deposit)?;
+ LicenseDepositOf::<T>::insert(who.clone(), deposit);
+
+ Self::deposit_event(Event::LicenseObtained {
+ account_id: who,
+ deposit,
+ });
+ Ok(().into()) // Some(T::WeightInfo::register_as_candidate(current_count as u32)).into())
+ }
+
+ /// Register this account as a candidate for collators for next sessions.
+ /// The account must already hold a license, and cannot offboard immediately during a session.
+ ///
+ /// This call is not available to `Invulnerable` collators.
+ #[pallet::call_index(3)]
+ #[pallet::weight(<T as Config>::WeightInfo::onboard(T::MaxCollators::get()))]
+ pub fn onboard(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
+ // register_as_candidate
+ let who = ensure_signed(origin)?;
+
+ // ensure the user obtained the license.
+ ensure!(
+ LicenseDepositOf::<T>::contains_key(&who),
+ Error::<T>::NoLicense
+ );
+ // ensure we are below limit.
+ let length = <Candidates<T>>::decode_len().unwrap_or_default()
+ + <Invulnerables<T>>::decode_len().unwrap_or_default();
+ ensure!(
+ (length as u32) < <DesiredCollators<T>>::get(),
+ Error::<T>::TooManyCandidates
+ );
+ ensure!(
+ !Self::invulnerables().contains(&who),
+ Error::<T>::AlreadyInvulnerable
+ );
+
+ let current_count =
+ <Candidates<T>>::try_mutate(|candidates| -> Result<usize, DispatchError> {
+ if candidates.iter().any(|candidate| *candidate == who) {
+ Err(Error::<T>::AlreadyCandidate)?
+ } else {
+ candidates
+ .try_push(who.clone())
+ .map_err(|_| Error::<T>::TooManyCandidates)?;
+ // First authored block is current block plus kick threshold to handle session delay
+ <LastAuthoredBlock<T>>::insert(
+ who.clone(),
+ frame_system::Pallet::<T>::block_number() + <KickThreshold<T>>::get(),
+ );
+ Ok(candidates.len())
+ }
+ })?;
+
+ Self::deposit_event(Event::CandidateAdded { account_id: who });
+ Ok(Some(<T as Config>::WeightInfo::onboard(current_count as u32)).into())
+ }
+
+ /// Deregister `origin` as a collator candidate. Note that the collator can only leave on
+ /// session change. The license to `onboard` later at any other time will remain.
+ #[pallet::call_index(4)]
+ #[pallet::weight(<T as Config>::WeightInfo::offboard(T::MaxCollators::get()))]
+ pub fn offboard(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
+ // leave_intent
+ let who = ensure_signed(origin)?;
+ let current_count = Self::try_remove_candidate(&who)?;
+
+ Ok(Some(<T as Config>::WeightInfo::offboard(current_count as u32)).into())
+ }
+
+ /// Forfeit `origin`'s own license. The `LicenseBond` will be unreserved immediately.
+ ///
+ /// This call is not available to `Invulnerable` collators.
+ #[pallet::call_index(5)]
+ #[pallet::weight(<T as Config>::WeightInfo::release_license(T::MaxCollators::get()))]
+ pub fn release_license(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
+ // leave_intent
+ let who = ensure_signed(origin)?;
+
+ let current_count = Self::try_remove_candidate_and_release_license(&who, false, true)?;
+
+ Ok(Some(<T as Config>::WeightInfo::release_license(
+ current_count as u32,
+ ))
+ .into())
+ }
+
+ /// Force deregister `origin` as a collator candidate as a governing authority, and revoke its license.
+ /// Note that the collator can only leave on session change.
+ /// The `LicenseBond` will be unreserved and returned immediately.
+ ///
+ /// This call is, of course, not applicable to `Invulnerable` collators.
+ #[pallet::call_index(6)]
+ #[pallet::weight(<T as Config>::WeightInfo::force_release_license(T::MaxCollators::get()))]
+ pub fn force_release_license(
+ origin: OriginFor<T>,
+ who: T::AccountId,
+ ) -> DispatchResultWithPostInfo {
+ // leave_intent
+ T::UpdateOrigin::ensure_origin(origin)?;
+
+ let current_count = Self::try_remove_candidate_and_release_license(&who, false, true)?;
+
+ Ok(Some(<T as Config>::WeightInfo::force_release_license(
+ current_count as u32,
+ ))
+ .into())
+ }
+ }
+
+ impl<T: Config> Pallet<T> {
+ /// Get a unique, inaccessible account id from the `PotId`.
+ pub fn account_id() -> T::AccountId {
+ T::PotId::get().into_account_truncating()
+ }
+
+ /// Removes a candidate and their license, optionally slashed and optionally ignoring,
+ /// whether or not they actually are a candidate.
+ fn try_remove_candidate_and_release_license(
+ who: &T::AccountId,
+ should_slash: bool,
+ ignore_if_not_candidate: bool,
+ ) -> Result<usize, DispatchError> {
+ let current_count = Self::try_remove_candidate(who);
+ let current_count = if ignore_if_not_candidate
+ && current_count == Err(Error::<T>::NotCandidate.into())
+ {
+ <Candidates<T>>::decode_len().unwrap_or_default()
+ } else {
+ current_count?
+ };
+ Self::try_release_license(who, should_slash)?;
+ Ok(current_count)
+ }
+
+ /// Removes a candidate from the collator pool for the next session if they exist.
+ fn try_remove_candidate(who: &T::AccountId) -> Result<usize, DispatchError> {
+ let current_count =
+ <Candidates<T>>::try_mutate(|candidates| -> Result<usize, DispatchError> {
+ let index = candidates
+ .iter()
+ .position(|candidate| *candidate == *who)
+ .ok_or(Error::<T>::NotCandidate)?;
+ candidates.remove(index);
+ <LastAuthoredBlock<T>>::remove(who.clone());
+ Ok(candidates.len())
+ })?;
+ Self::deposit_event(Event::CandidateRemoved {
+ account_id: who.clone(),
+ });
+ Ok(current_count)
+ }
+
+ /// Removes a candidate if they exist and sends them back their deposit, optionally slashed.
+ fn try_release_license(who: &T::AccountId, should_slash: bool) -> DispatchResult {
+ let mut deposit_returned = BalanceOf::<T>::default();
+ LicenseDepositOf::<T>::try_mutate_exists(who, |deposit| -> DispatchResult {
+ if let Some(deposit) = deposit.take() {
+ if should_slash {
+ let slashed = T::SlashRatio::get() * deposit;
+ let remaining = deposit - slashed;
+
+ let (imbalance, _) = T::Currency::slash_reserved(who, slashed);
+ //T::Currency::unreserve(who, remaining);
+ deposit_returned = remaining;
+
+ T::Currency::resolve_creating(&T::TreasuryAccountId::get(), imbalance);
+ } else {
+ //T::Currency::unreserve(who, deposit);
+ deposit_returned = deposit;
+ }
+
+ T::Currency::unreserve(who, deposit_returned);
+ Ok(())
+ } else {
+ Err(Error::<T>::NoLicense.into())
+ }
+ })?;
+ Self::deposit_event(Event::LicenseReleased {
+ account_id: who.clone(),
+ deposit_returned,
+ });
+ Ok(())
+ }
+
+ /// Assemble the current set of candidates and invulnerables into the next collator set.
+ ///
+ /// This is done on the fly, as frequent as we are told to do so, as the session manager.
+ pub fn assemble_collators(
+ candidates: BoundedVec<T::AccountId, T::MaxCollators>,
+ ) -> Vec<T::AccountId> {
+ let mut collators = Self::invulnerables().to_vec();
+ collators.extend(candidates);
+ collators
+ }
+
+ /// Kicks out candidates that did not produce a block in the kick threshold
+ /// and **confiscates** their deposits to the treasury.
+ pub fn kick_stale_candidates(
+ candidates: BoundedVec<T::AccountId, T::MaxCollators>,
+ ) -> BoundedVec<T::AccountId, T::MaxCollators> {
+ let now = frame_system::Pallet::<T>::block_number();
+ let kick_threshold = <KickThreshold<T>>::get();
+ candidates
+ .into_iter()
+ .filter_map(|c| {
+ let last_block = <LastAuthoredBlock<T>>::get(c.clone());
+ let since_last = now.saturating_sub(last_block);
+ if since_last < kick_threshold {
+ Some(c)
+ } else {
+ let outcome = Self::try_remove_candidate_and_release_license(&c, true, false);
+ if let Err(why) = outcome {
+ log::warn!("Failed to kick collator and release license {:?}", why);
+ debug_assert!(false, "failed to kick collator and release license {why:?}");
+ }
+ None
+ }
+ })
+ .collect::<Vec<_>>()
+ .try_into()
+ .expect("filter_map operation can't result in a bounded vec larger than its original; qed")
+ }
+ }
+
+ /// Keep track of number of authored blocks per authority, uncles are counted as well since
+ /// they're a valid proof of being online.
+ impl<T: Config + pallet_authorship::Config>
+ pallet_authorship::EventHandler<T::AccountId, T::BlockNumber> for Pallet<T>
+ {
+ fn note_author(author: T::AccountId) {
+ let pot = Self::account_id();
+ // assumes an ED will be sent to pot.
+ let reward = T::Currency::free_balance(&pot)
+ .checked_sub(&T::Currency::minimum_balance())
+ .unwrap_or_else(Zero::zero)
+ .div(2u32.into());
+ // `reward` is half of pot account minus ED, this should never fail.
+ let _success = T::Currency::transfer(&pot, &author, reward, KeepAlive);
+ debug_assert!(_success.is_ok());
+ <LastAuthoredBlock<T>>::insert(author, frame_system::Pallet::<T>::block_number());
+
+ frame_system::Pallet::<T>::register_extra_weight_unchecked(
+ <T as Config>::WeightInfo::note_author(),
+ DispatchClass::Mandatory,
+ );
+ }
+
+ fn note_uncle(_author: T::AccountId, _age: T::BlockNumber) {
+ //TODO can we ignore this?
+ }
+ }
+
+ /// Play the role of the session manager.
+ impl<T: Config> SessionManager<T::AccountId> for Pallet<T> {
+ fn new_session(index: SessionIndex) -> Option<Vec<T::AccountId>> {
+ log::info!(
+ "assembling new collators for new session {} at #{:?}",
+ index,
+ <frame_system::Pallet<T>>::block_number(),
+ );
+
+ let candidates = Self::candidates();
+ let candidates_len_before = candidates.len();
+ let active_candidates = Self::kick_stale_candidates(candidates);
+ let removed = candidates_len_before - active_candidates.len();
+ let result = Self::assemble_collators(active_candidates);
+
+ frame_system::Pallet::<T>::register_extra_weight_unchecked(
+ <T as Config>::WeightInfo::new_session(
+ candidates_len_before as u32,
+ removed as u32,
+ ),
+ DispatchClass::Mandatory,
+ );
+ Some(result)
+ }
+ fn start_session(_: SessionIndex) {
+ // we don't care.
+ }
+ fn end_session(_: SessionIndex) {
+ // we don't care.
+ }
+ }
+}
pallets/collator-selection/src/mock.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/collator-selection/src/mock.rs
@@ -0,0 +1,302 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// Copyright (C) 2021 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+use super::*;
+use crate as collator_selection;
+use frame_support::{
+ ord_parameter_types, parameter_types,
+ traits::{FindAuthor, GenesisBuild, ValidatorRegistration},
+ PalletId,
+};
+use frame_system as system;
+use frame_system::EnsureSignedBy;
+use sp_core::H256;
+use sp_runtime::{
+ testing::{Header, UintAuthorityId},
+ traits::{BlakeTwo256, IdentityLookup, OpaqueKeys},
+ Perbill, RuntimeAppPublic,
+};
+
+type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
+type Block = frame_system::mocking::MockBlock<Test>;
+
+// Configure a mock runtime to test the pallet.
+frame_support::construct_runtime!(
+ pub enum Test where
+ Block = Block,
+ NodeBlock = Block,
+ UncheckedExtrinsic = UncheckedExtrinsic,
+ {
+ System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
+ Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent},
+ Session: pallet_session::{Pallet, Call, Storage, Event, Config<T>},
+ Aura: pallet_aura::{Pallet, Storage, Config<T>},
+ Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>},
+ CollatorSelection: collator_selection::{Pallet, Call, Storage, Event<T>},
+ Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent},
+ Configuration: pallet_configuration::{Pallet, Call, Storage, Event<T>},
+ }
+);
+
+parameter_types! {
+ pub const BlockHashCount: u64 = 250;
+ pub const SS58Prefix: u8 = 42;
+}
+
+impl system::Config for Test {
+ type BaseCallFilter = frame_support::traits::Everything;
+ type BlockWeights = ();
+ type BlockLength = ();
+ type DbWeight = ();
+ type RuntimeOrigin = RuntimeOrigin;
+ type RuntimeCall = RuntimeCall;
+ type Index = u64;
+ type BlockNumber = u64;
+ type Hash = H256;
+ type Hashing = BlakeTwo256;
+ type AccountId = u64;
+ type Lookup = IdentityLookup<Self::AccountId>;
+ type Header = Header;
+ type RuntimeEvent = RuntimeEvent;
+ type BlockHashCount = BlockHashCount;
+ type Version = ();
+ type PalletInfo = PalletInfo;
+ type AccountData = pallet_balances::AccountData<u64>;
+ type OnNewAccount = ();
+ type OnKilledAccount = ();
+ type SystemWeightInfo = ();
+ type SS58Prefix = SS58Prefix;
+ type OnSetCode = ();
+ type MaxConsumers = frame_support::traits::ConstU32<16>;
+}
+
+parameter_types! {
+ pub const ExistentialDeposit: u64 = 5;
+ pub const MaxReserves: u32 = 50;
+}
+
+impl pallet_balances::Config for Test {
+ type Balance = u64;
+ type RuntimeEvent = RuntimeEvent;
+ type DustRemoval = ();
+ type ExistentialDeposit = ExistentialDeposit;
+ type AccountStore = System;
+ type WeightInfo = ();
+ type MaxLocks = ();
+ type MaxReserves = MaxReserves;
+ type ReserveIdentifier = [u8; 8];
+}
+
+pub struct Author4;
+impl FindAuthor<u64> for Author4 {
+ fn find_author<'a, I>(_digests: I) -> Option<u64>
+ where
+ I: 'a + IntoIterator<Item = (frame_support::ConsensusEngineId, &'a [u8])>,
+ {
+ Some(4)
+ }
+}
+
+impl pallet_authorship::Config for Test {
+ type FindAuthor = Author4;
+ type UncleGenerations = ();
+ type FilterUncle = ();
+ type EventHandler = CollatorSelection;
+}
+
+parameter_types! {
+ pub const MinimumPeriod: u64 = 1;
+}
+
+impl pallet_timestamp::Config for Test {
+ type Moment = u64;
+ type OnTimestampSet = Aura;
+ type MinimumPeriod = MinimumPeriod;
+ type WeightInfo = ();
+}
+
+impl pallet_aura::Config for Test {
+ type AuthorityId = sp_consensus_aura::sr25519::AuthorityId;
+ type MaxAuthorities = MaxAuthorities;
+ type DisabledValidators = ();
+}
+
+sp_runtime::impl_opaque_keys! {
+ pub struct MockSessionKeys {
+ // a key for aura authoring
+ pub aura: UintAuthorityId,
+ }
+}
+
+impl From<UintAuthorityId> for MockSessionKeys {
+ fn from(aura: sp_runtime::testing::UintAuthorityId) -> Self {
+ Self { aura }
+ }
+}
+
+parameter_types! {
+ pub static SessionHandlerCollators: Vec<u64> = Vec::new();
+ pub static SessionChangeBlock: u64 = 0;
+}
+
+pub struct TestSessionHandler;
+impl pallet_session::SessionHandler<u64> for TestSessionHandler {
+ const KEY_TYPE_IDS: &'static [sp_runtime::KeyTypeId] = &[UintAuthorityId::ID];
+ fn on_genesis_session<Ks: OpaqueKeys>(keys: &[(u64, Ks)]) {
+ SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::<Vec<_>>())
+ }
+ fn on_new_session<Ks: OpaqueKeys>(_: bool, keys: &[(u64, Ks)], _: &[(u64, Ks)]) {
+ SessionChangeBlock::set(System::block_number());
+ dbg!(keys.len());
+ SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::<Vec<_>>())
+ }
+ fn on_before_session_ending() {}
+ fn on_disabled(_: u32) {}
+}
+
+parameter_types! {
+ pub const Offset: u64 = 0;
+ pub const Period: u64 = 10;
+}
+
+impl pallet_session::Config for Test {
+ type RuntimeEvent = RuntimeEvent;
+ type ValidatorId = <Self as frame_system::Config>::AccountId;
+ // we don't have stash and controller, thus we don't need the convert as well.
+ type ValidatorIdOf = IdentityCollator;
+ type ShouldEndSession = pallet_session::PeriodicSessions<Period, Offset>;
+ type NextSessionRotation = pallet_session::PeriodicSessions<Period, Offset>;
+ type SessionManager = CollatorSelection;
+ type SessionHandler = TestSessionHandler;
+ type Keys = MockSessionKeys;
+ type WeightInfo = ();
+}
+
+parameter_types! {
+ pub const MaxCollators: u32 = 5;
+ pub const LicenseBond: u64 = 10;
+ pub const KickThreshold: u64 = 10;
+ // the following values do not matter and are meaningless, etc.
+ pub const DefaultWeightToFeeCoefficient: u64 = 100_000;
+ pub const DefaultMinGasPrice: u64 = 100_000;
+ pub const MaxXcmAllowedLocations: u32 = 16;
+ pub AppPromotionDailyRate: Perbill = Perbill::from_rational(5u32, 10_000);
+ pub const DayRelayBlocks: u32 = 1;
+}
+
+impl pallet_configuration::Config for Test {
+ type RuntimeEvent = RuntimeEvent;
+ type Currency = Balances;
+ type DefaultCollatorSelectionMaxCollators = MaxCollators;
+ type DefaultCollatorSelectionKickThreshold = KickThreshold;
+ type DefaultCollatorSelectionLicenseBond = LicenseBond;
+ // the following constants we don't care about
+ type DefaultWeightToFeeCoefficient = DefaultWeightToFeeCoefficient;
+ type DefaultMinGasPrice = DefaultMinGasPrice;
+ type MaxXcmAllowedLocations = MaxXcmAllowedLocations;
+ type AppPromotionDailyRate = AppPromotionDailyRate;
+ type DayRelayBlocks = DayRelayBlocks;
+ type WeightInfo = pallet_configuration::weights::SubstrateWeight<Self>;
+}
+
+ord_parameter_types! {
+ pub const RootAccount: u64 = 777;
+}
+
+parameter_types! {
+ pub const PotId: PalletId = PalletId(*b"PotStake");
+ pub const MaxAuthorities: u32 = 100_000;
+ pub const SlashRatio: Perbill = Perbill::one();
+}
+
+pub struct IsRegistered;
+impl ValidatorRegistration<u64> for IsRegistered {
+ fn is_registered(id: &u64) -> bool {
+ if *id == 7u64 {
+ false
+ } else {
+ true
+ }
+ }
+}
+
+impl Config for Test {
+ type RuntimeEvent = RuntimeEvent;
+ type UpdateOrigin = EnsureSignedBy<RootAccount, u64>;
+ type PotId = PotId;
+ type MaxCollators = MaxCollators;
+ type SlashRatio = SlashRatio;
+ type TreasuryAccountId = ();
+ type ValidatorId = <Self as frame_system::Config>::AccountId;
+ type ValidatorIdOf = IdentityCollator;
+ type ValidatorRegistration = IsRegistered;
+ type WeightInfo = ();
+}
+
+pub fn new_test_ext() -> sp_io::TestExternalities {
+ sp_tracing::try_init_simple();
+ let mut t = frame_system::GenesisConfig::default()
+ .build_storage::<Test>()
+ .unwrap();
+ let invulnerables = vec![1, 2];
+
+ let balances = vec![(1, 100), (2, 100), (3, 100), (4, 100), (5, 100)];
+ let keys = balances
+ .iter()
+ .map(|&(i, _)| {
+ (
+ i,
+ i,
+ MockSessionKeys {
+ aura: UintAuthorityId(i),
+ },
+ )
+ })
+ .collect::<Vec<_>>();
+ let collator_selection = collator_selection::GenesisConfig::<Test> { invulnerables };
+ let session = pallet_session::GenesisConfig::<Test> { keys };
+ pallet_balances::GenesisConfig::<Test> { balances }
+ .assimilate_storage(&mut t)
+ .unwrap();
+ // collator selection must be initialized before session.
+ collator_selection.assimilate_storage(&mut t).unwrap();
+ session.assimilate_storage(&mut t).unwrap();
+
+ t.into()
+}
+
+pub fn initialize_to_block(n: u64) {
+ for i in System::block_number() + 1..=n {
+ System::set_block_number(i);
+ <AllPalletsWithSystem as frame_support::traits::OnInitialize<u64>>::on_initialize(i);
+ }
+}
pallets/collator-selection/src/tests.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/collator-selection/src/tests.rs
@@ -0,0 +1,538 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// Copyright (C) 2021 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+use crate as collator_selection;
+use crate::{mock::*, Error};
+use frame_support::{
+ assert_noop, assert_ok,
+ traits::{Currency, GenesisBuild, OnInitialize},
+};
+use frame_system::RawOrigin;
+use pallet_balances::Error as BalancesError;
+use sp_runtime::traits::BadOrigin;
+use pallet_configuration::{
+ CollatorSelectionDesiredCollatorsOverride as DesiredCollators,
+ CollatorSelectionKickThresholdOverride as KickThreshold,
+ CollatorSelectionLicenseBondOverride as LicenseBond,
+};
+
+fn get_license_and_onboard(account_id: <Test as frame_system::Config>::AccountId) {
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(
+ account_id
+ )));
+ assert_ok!(CollatorSelection::onboard(RuntimeOrigin::signed(
+ account_id
+ )));
+}
+
+#[test]
+fn basic_setup_works() {
+ new_test_ext().execute_with(|| {
+ assert_eq!(<DesiredCollators<Test>>::get(), 5);
+ assert_eq!(<LicenseBond<Test>>::get(), 10);
+
+ assert!(CollatorSelection::candidates().is_empty());
+ assert_eq!(CollatorSelection::invulnerables(), vec![1, 2]);
+ });
+}
+
+#[test]
+fn it_should_add_invulnerables() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(CollatorSelection::add_invulnerable(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 1
+ ));
+ assert_ok!(CollatorSelection::add_invulnerable(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 2
+ ));
+ assert_eq!(CollatorSelection::invulnerables(), vec![1, 2]);
+
+ // cannot set with non-root.
+ assert_noop!(
+ CollatorSelection::add_invulnerable(RuntimeOrigin::signed(1), 3),
+ BadOrigin
+ );
+
+ // cannot set invulnerables without associated validator keys
+ assert_noop!(
+ CollatorSelection::add_invulnerable(RuntimeOrigin::signed(RootAccount::get()), 7),
+ Error::<Test>::ValidatorNotRegistered
+ );
+ });
+}
+
+#[test]
+fn it_should_remove_invulnerables() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(CollatorSelection::add_invulnerable(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 1
+ ));
+ assert_ok!(CollatorSelection::add_invulnerable(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 2
+ ));
+
+ // cannot remove with non-root.
+ assert_noop!(
+ CollatorSelection::remove_invulnerable(RuntimeOrigin::signed(1), 3),
+ BadOrigin
+ );
+
+ assert_ok!(CollatorSelection::remove_invulnerable(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 2
+ ));
+ assert_eq!(CollatorSelection::invulnerables(), vec![1]);
+
+ // cannot remove an invulnerable if there would be 0 invulnerables.
+ assert_noop!(
+ CollatorSelection::remove_invulnerable(RuntimeOrigin::signed(RootAccount::get()), 1),
+ Error::<Test>::TooFewInvulnerables
+ );
+ });
+}
+
+#[test]
+fn set_desired_collators_works() {
+ new_test_ext().execute_with(|| {
+ // given
+ assert_eq!(<DesiredCollators<Test>>::get(), 5);
+
+ // can set
+ assert_ok!(Configuration::set_collator_selection_desired_collators(
+ RawOrigin::Root.into(),
+ Some(7)
+ ));
+ assert_eq!(<DesiredCollators<Test>>::get(), 7);
+
+ // rejects bad origin
+ assert_noop!(
+ Configuration::set_collator_selection_desired_collators(
+ RuntimeOrigin::signed(1),
+ Some(8)
+ ),
+ BadOrigin
+ );
+ });
+}
+
+#[test]
+fn set_license_bond() {
+ new_test_ext().execute_with(|| {
+ // given
+ assert_eq!(<LicenseBond<Test>>::get(), 10);
+
+ // can set
+ assert_ok!(Configuration::set_collator_selection_license_bond(
+ RawOrigin::Root.into(),
+ Some(7)
+ ));
+ assert_eq!(<LicenseBond<Test>>::get(), 7);
+
+ // rejects bad origin.
+ assert_noop!(
+ Configuration::set_collator_selection_license_bond(RuntimeOrigin::signed(1), Some(8)),
+ BadOrigin
+ );
+ });
+}
+
+#[test]
+fn cannot_onboard_candidate_with_no_license() {
+ new_test_ext().execute_with(|| {
+ // can't onboard a candidate who did not get a license.
+ assert_noop!(
+ CollatorSelection::onboard(RuntimeOrigin::signed(3)),
+ Error::<Test>::NoLicense,
+ );
+
+ // but give it a license and welcome aboard.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(3)));
+ assert_ok!(CollatorSelection::onboard(RuntimeOrigin::signed(3)));
+ })
+}
+
+#[test]
+fn cannot_onboard_candidate_if_too_many() {
+ new_test_ext().execute_with(|| {
+ // reset desired candidates
+ <pallet_configuration::CollatorSelectionDesiredCollatorsOverride<Test>>::put(0);
+
+ // can still get a license.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(4)));
+
+ // can't accept anyone anymore.
+ assert_noop!(
+ CollatorSelection::onboard(RuntimeOrigin::signed(4)),
+ Error::<Test>::TooManyCandidates,
+ );
+
+ // reset desired candidates to invulnerables + 1
+ <pallet_configuration::CollatorSelectionDesiredCollatorsOverride<Test>>::put(3);
+ assert_ok!(CollatorSelection::onboard(RuntimeOrigin::signed(4)));
+
+ // but no more.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(5)));
+ assert_noop!(
+ CollatorSelection::onboard(RuntimeOrigin::signed(5)),
+ Error::<Test>::TooManyCandidates,
+ );
+ })
+}
+
+#[test]
+fn cannot_obtain_license_if_keys_not_registered() {
+ new_test_ext().execute_with(|| {
+ // can't 7 because keys not registered.
+ assert_noop!(
+ CollatorSelection::get_license(RuntimeOrigin::signed(7)),
+ Error::<Test>::ValidatorNotRegistered
+ );
+ })
+}
+
+#[test]
+fn cannot_obtain_license_if_poor() {
+ new_test_ext().execute_with(|| {
+ assert_eq!(Balances::free_balance(&3), 100);
+ assert_eq!(Balances::free_balance(&33), 0);
+
+ // works
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(3)));
+
+ // poor
+ assert_noop!(
+ CollatorSelection::get_license(RuntimeOrigin::signed(33)),
+ BalancesError::<Test>::InsufficientBalance,
+ );
+ });
+}
+
+#[test]
+fn cannot_onboard_dupe_candidate() {
+ new_test_ext().execute_with(|| {
+ // can add 3 as candidate
+ get_license_and_onboard(3);
+ assert_eq!(CollatorSelection::license_deposit_of(3), 10);
+ assert_eq!(CollatorSelection::candidates(), vec![3]);
+ assert_eq!(CollatorSelection::last_authored_block(3), 10);
+ assert_eq!(Balances::free_balance(3), 90);
+
+ // but no more
+ assert_noop!(
+ CollatorSelection::get_license(RuntimeOrigin::signed(3)),
+ Error::<Test>::AlreadyHoldingLicense,
+ );
+ assert_noop!(
+ CollatorSelection::onboard(RuntimeOrigin::signed(3)),
+ Error::<Test>::AlreadyCandidate,
+ );
+ })
+}
+
+#[test]
+fn becoming_candidate_works() {
+ new_test_ext().execute_with(|| {
+ // given
+ assert_eq!(<DesiredCollators<Test>>::get(), 5);
+ assert_eq!(<LicenseBond<Test>>::get(), 10);
+ assert_eq!(CollatorSelection::candidates(), Vec::new());
+ assert_eq!(CollatorSelection::invulnerables(), vec![1, 2]);
+
+ // take two endowed, non-invulnerables accounts.
+ assert_eq!(Balances::free_balance(&3), 100);
+ assert_eq!(Balances::free_balance(&4), 100);
+
+ get_license_and_onboard(3);
+ get_license_and_onboard(4);
+
+ assert_eq!(Balances::free_balance(&3), 90);
+ assert_eq!(Balances::free_balance(&4), 90);
+
+ assert_eq!(CollatorSelection::candidates().len(), 2);
+ });
+}
+
+#[test]
+fn cannot_become_candidate_if_invulnerable() {
+ new_test_ext().execute_with(|| {
+ assert_eq!(CollatorSelection::invulnerables(), vec![1, 2]);
+
+ // can obtain a license even if is invulnerable.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(1)));
+ // but cannot onboard
+ assert_noop!(
+ CollatorSelection::onboard(RuntimeOrigin::signed(1)),
+ Error::<Test>::AlreadyInvulnerable,
+ );
+
+ // get a license and then become invulnerable.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(3)));
+ assert_ok!(CollatorSelection::add_invulnerable(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 3
+ ));
+ assert_noop!(
+ CollatorSelection::onboard(RuntimeOrigin::signed(3)),
+ Error::<Test>::AlreadyInvulnerable,
+ );
+ })
+}
+
+#[test]
+fn can_become_invulnerable_if_candidate() {
+ new_test_ext().execute_with(|| {
+ // become a candidate and then become invulnerable.
+ get_license_and_onboard(3);
+ assert_eq!(CollatorSelection::candidates(), vec![3]);
+
+ assert_ok!(CollatorSelection::add_invulnerable(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 3
+ ));
+ // should exclude from candidates, but not revoke the license
+ assert_eq!(CollatorSelection::candidates(), vec![]);
+ assert_eq!(CollatorSelection::license_deposit_of(3), 10);
+ assert_eq!(Balances::free_balance(3), 90);
+ });
+}
+
+#[test]
+fn offboard() {
+ new_test_ext().execute_with(|| {
+ // register a candidate.
+ get_license_and_onboard(3);
+ assert_eq!(Balances::free_balance(3), 90);
+
+ // cannot leave if holds license but not yet candidate.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(4)));
+ assert_noop!(
+ CollatorSelection::offboard(RuntimeOrigin::signed(4)),
+ Error::<Test>::NotCandidate
+ );
+ // cannot leave if does not hold license.
+ assert_noop!(
+ CollatorSelection::offboard(RuntimeOrigin::signed(5)),
+ Error::<Test>::NotCandidate
+ );
+
+ // bond is returned - only after releasing the license
+ assert_ok!(CollatorSelection::offboard(RuntimeOrigin::signed(3)));
+ assert_eq!(Balances::free_balance(3), 90);
+ assert_eq!(CollatorSelection::last_authored_block(3), 0);
+ assert_ok!(CollatorSelection::release_license(RuntimeOrigin::signed(3)));
+ assert_eq!(Balances::free_balance(3), 100);
+ });
+}
+
+#[test]
+fn release_license() {
+ new_test_ext().execute_with(|| {
+ // obtain a license to collate and reserve the bond.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(3)));
+ assert_eq!(Balances::free_balance(3), 90);
+
+ // release the license and get the bond back.
+ assert_ok!(CollatorSelection::release_license(RuntimeOrigin::signed(3)));
+ assert_eq!(Balances::free_balance(3), 100);
+
+ // register a candidate.
+ get_license_and_onboard(3);
+ assert_eq!(Balances::free_balance(3), 90);
+
+ // can release license even if onboarded.
+ assert_ok!(CollatorSelection::release_license(RuntimeOrigin::signed(3)));
+ assert_eq!(Balances::free_balance(3), 100);
+ assert_eq!(CollatorSelection::candidates(), vec![]);
+ });
+}
+
+#[test]
+fn force_release_license() {
+ new_test_ext().execute_with(|| {
+ // obtain a license to collate and reserve the bond.
+ assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(3)));
+ assert_eq!(Balances::free_balance(3), 90);
+
+ // cannot execute the operation as non-root
+ assert_noop!(
+ CollatorSelection::force_release_license(RuntimeOrigin::signed(3), 3),
+ BadOrigin
+ );
+
+ // release the license and get the bond back.
+ assert_ok!(CollatorSelection::force_release_license(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 3
+ ));
+ assert_eq!(Balances::free_balance(3), 100);
+
+ // register a candidate.
+ get_license_and_onboard(3);
+ assert_eq!(Balances::free_balance(3), 90);
+
+ // can release license even if onboarded.
+ assert_ok!(CollatorSelection::force_release_license(
+ RuntimeOrigin::signed(RootAccount::get()),
+ 3
+ ));
+ assert_eq!(Balances::free_balance(3), 100);
+ assert_eq!(CollatorSelection::candidates(), vec![]);
+ });
+}
+
+#[test]
+fn authorship_event_handler() {
+ new_test_ext().execute_with(|| {
+ // put 100 in the pot + 5 for ED
+ Balances::make_free_balance_be(&CollatorSelection::account_id(), 105);
+
+ // 4 is the default author.
+ assert_eq!(Balances::free_balance(4), 100);
+ get_license_and_onboard(4);
+ // triggers `note_author`
+ Authorship::on_initialize(1);
+
+ assert_eq!(CollatorSelection::candidates(), vec![4]);
+ assert_eq!(CollatorSelection::last_authored_block(4), 0);
+
+ // half of the pot goes to the collator who's the author (4 in tests).
+ assert_eq!(Balances::free_balance(4), 140);
+ // half + ED stays.
+ assert_eq!(Balances::free_balance(CollatorSelection::account_id()), 55);
+ });
+}
+
+#[test]
+fn fees_edgecases() {
+ new_test_ext().execute_with(|| {
+ // Nothing panics, no reward when no ED in balance
+ Authorship::on_initialize(1);
+ // put some money into the pot at ED
+ Balances::make_free_balance_be(&CollatorSelection::account_id(), 5);
+ // 4 is the default author.
+ assert_eq!(Balances::free_balance(4), 100);
+ get_license_and_onboard(4);
+ // triggers `note_author`
+ Authorship::on_initialize(1);
+
+ assert_eq!(CollatorSelection::candidates(), vec![4]);
+ assert_eq!(CollatorSelection::last_authored_block(4), 0);
+ // Nothing received
+ assert_eq!(Balances::free_balance(4), 90);
+ // all fee stays
+ assert_eq!(Balances::free_balance(CollatorSelection::account_id()), 5);
+ });
+}
+
+#[test]
+fn session_management_works() {
+ new_test_ext().execute_with(|| {
+ initialize_to_block(1);
+
+ assert_eq!(SessionChangeBlock::get(), 0);
+ assert_eq!(SessionHandlerCollators::get(), vec![1, 2]);
+
+ initialize_to_block(4);
+
+ assert_eq!(SessionChangeBlock::get(), 0);
+ assert_eq!(SessionHandlerCollators::get(), vec![1, 2]);
+
+ // add a new collator
+ get_license_and_onboard(5);
+
+ // session won't see this.
+ assert_eq!(SessionHandlerCollators::get(), vec![1, 2]);
+ // but we have a new candidate.
+ assert_eq!(CollatorSelection::candidates().len(), 1);
+
+ initialize_to_block(10);
+ assert_eq!(SessionChangeBlock::get(), 10);
+ // pallet-session has 1 session delay; current validators are the same.
+ assert_eq!(Session::validators(), vec![1, 2]);
+ // queued ones are changed, and now we have 3.
+ assert_eq!(Session::queued_keys().len(), 3);
+ // session handlers (aura, et. al.) cannot see this yet.
+ assert_eq!(SessionHandlerCollators::get(), vec![1, 2]);
+
+ initialize_to_block(20);
+ assert_eq!(SessionChangeBlock::get(), 20);
+ // changed are now reflected to session handlers.
+ assert_eq!(SessionHandlerCollators::get(), vec![1, 2, 5]);
+ });
+}
+
+#[test]
+fn kick_mechanism() {
+ new_test_ext().execute_with(|| {
+ // add a new collator
+ get_license_and_onboard(3);
+ get_license_and_onboard(4);
+
+ initialize_to_block(10);
+ assert_eq!(CollatorSelection::candidates().len(), 2);
+
+ initialize_to_block(20);
+ assert_eq!(SessionChangeBlock::get(), 20);
+ // 4 authored this block, gets to stay 3 was kicked
+ assert_eq!(CollatorSelection::candidates().len(), 1);
+ // 3 will be kicked after 1 session delay
+ assert_eq!(SessionHandlerCollators::get(), vec![1, 2, 3, 4]);
+
+ assert_eq!(CollatorSelection::candidates(), vec![4]);
+ assert_eq!(<KickThreshold<Test>>::get(), 10);
+ assert_eq!(CollatorSelection::last_authored_block(4), 20);
+
+ initialize_to_block(30);
+ // 3 gets kicked after 1 session delay
+ assert_eq!(SessionHandlerCollators::get(), vec![1, 2, 4]);
+ // kicked collator gets their funds slashed, the deposit going to treasury
+ assert_eq!(Balances::free_balance(3), 90);
+ });
+}
+
+#[test]
+#[should_panic = "duplicate invulnerables in genesis."]
+fn cannot_set_genesis_value_twice() {
+ sp_tracing::try_init_simple();
+ let mut t = frame_system::GenesisConfig::default()
+ .build_storage::<Test>()
+ .unwrap();
+ let invulnerables = vec![1, 1];
+
+ let collator_selection = collator_selection::GenesisConfig::<Test> { invulnerables };
+ // collator selection must be initialized before session.
+ collator_selection.assimilate_storage(&mut t).unwrap();
+}
pallets/collator-selection/src/weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/collator-selection/src/weights.rs
@@ -0,0 +1,190 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// This file is part of Substrate.
+
+// Copyright (C) 2021 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+
+use frame_support::{
+ traits::Get,
+ weights::{constants::RocksDbWeight, Weight},
+};
+use sp_std::marker::PhantomData;
+
+// The weight info trait for `pallet_collator_selection`.
+pub trait WeightInfo {
+ fn add_invulnerable(_b: u32) -> Weight;
+ fn remove_invulnerable(_b: u32) -> Weight;
+ fn get_license(_c: u32) -> Weight;
+ fn onboard(_c: u32) -> Weight;
+ fn offboard(_c: u32) -> Weight;
+ fn release_license(_c: u32) -> Weight;
+ fn force_release_license(_c: u32) -> Weight;
+ fn note_author() -> Weight;
+ fn new_session(_c: u32, _r: u32) -> Weight;
+}
+
+/// Weights for pallet_collator_selection using the Substrate node and recommended hardware.
+pub struct SubstrateWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
+ fn add_invulnerable(b: u32) -> Weight {
+ Weight::from_ref_time(18_563_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(68_000 as u64).saturating_mul(b as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ fn remove_invulnerable(b: u32) -> Weight {
+ Weight::from_ref_time(18_563_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(68_000 as u64).saturating_mul(b as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ fn get_license(c: u32) -> Weight {
+ Weight::from_ref_time(71_196_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(198_000 as u64).saturating_mul(c as u64))
+ .saturating_add(T::DbWeight::get().reads(4 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+ fn onboard(c: u32) -> Weight {
+ Weight::from_ref_time(71_196_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(198_000 as u64).saturating_mul(c as u64))
+ .saturating_add(T::DbWeight::get().reads(4 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+ fn offboard(c: u32) -> Weight {
+ Weight::from_ref_time(55_336_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(151_000 as u64).saturating_mul(c as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+ fn release_license(c: u32) -> Weight {
+ Weight::from_ref_time(55_336_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(151_000 as u64).saturating_mul(c as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+ fn force_release_license(c: u32) -> Weight {
+ Weight::from_ref_time(55_336_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(151_000 as u64).saturating_mul(c as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+ fn note_author() -> Weight {
+ Weight::from_ref_time(71_461_000 as u64)
+ .saturating_add(T::DbWeight::get().reads(3 as u64))
+ .saturating_add(T::DbWeight::get().writes(4 as u64))
+ }
+ fn new_session(r: u32, c: u32) -> Weight {
+ Weight::from_ref_time(0 as u64)
+ // Standard Error: 1_010_000
+ .saturating_add(Weight::from_ref_time(109_961_000 as u64).saturating_mul(r as u64))
+ // Standard Error: 1_010_000
+ .saturating_add(Weight::from_ref_time(151_952_000 as u64).saturating_mul(c as u64))
+ .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(r as u64)))
+ .saturating_add(T::DbWeight::get().reads((2 as u64).saturating_mul(c as u64)))
+ .saturating_add(T::DbWeight::get().writes((2 as u64).saturating_mul(r as u64)))
+ .saturating_add(T::DbWeight::get().writes((2 as u64).saturating_mul(c as u64)))
+ }
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+ fn add_invulnerable(b: u32) -> Weight {
+ Weight::from_ref_time(18_563_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(68_000 as u64).saturating_mul(b as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ fn remove_invulnerable(b: u32) -> Weight {
+ Weight::from_ref_time(18_563_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(68_000 as u64).saturating_mul(b as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ fn get_license(c: u32) -> Weight {
+ Weight::from_ref_time(71_196_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(198_000 as u64).saturating_mul(c as u64))
+ .saturating_add(RocksDbWeight::get().reads(4 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+ fn onboard(c: u32) -> Weight {
+ Weight::from_ref_time(71_196_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(198_000 as u64).saturating_mul(c as u64))
+ .saturating_add(RocksDbWeight::get().reads(4 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+ fn offboard(c: u32) -> Weight {
+ Weight::from_ref_time(55_336_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(151_000 as u64).saturating_mul(c as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+ fn release_license(c: u32) -> Weight {
+ Weight::from_ref_time(55_336_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(151_000 as u64).saturating_mul(c as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+ fn force_release_license(c: u32) -> Weight {
+ Weight::from_ref_time(55_336_000 as u64)
+ // Standard Error: 0
+ .saturating_add(Weight::from_ref_time(151_000 as u64).saturating_mul(c as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+ fn note_author() -> Weight {
+ Weight::from_ref_time(71_461_000 as u64)
+ .saturating_add(RocksDbWeight::get().reads(3 as u64))
+ .saturating_add(RocksDbWeight::get().writes(4 as u64))
+ }
+ fn new_session(r: u32, c: u32) -> Weight {
+ Weight::from_ref_time(0 as u64)
+ // Standard Error: 1_010_000
+ .saturating_add(Weight::from_ref_time(109_961_000 as u64).saturating_mul(r as u64))
+ // Standard Error: 1_010_000
+ .saturating_add(Weight::from_ref_time(151_952_000 as u64).saturating_mul(c as u64))
+ .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(r as u64)))
+ .saturating_add(RocksDbWeight::get().reads((2 as u64).saturating_mul(c as u64)))
+ .saturating_add(RocksDbWeight::get().writes((2 as u64).saturating_mul(r as u64)))
+ .saturating_add(RocksDbWeight::get().writes((2 as u64).saturating_mul(c as u64)))
+ }
+}
pallets/configuration/CHANGELOG.mddiffbeforeafterboth--- a/pallets/configuration/CHANGELOG.md
+++ b/pallets/configuration/CHANGELOG.md
@@ -1,4 +1,15 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+
<!-- bureaucrate goes here -->
+
+## [0.1.3] - 2022-12-29
+
+### Added
+
+- The ability to configure pallet `collator-selection` via the `configuration` pallet.
+
## [0.1.2] - 2022-12-13
### Added
pallets/configuration/Cargo.tomldiffbeforeafterboth--- a/pallets/configuration/Cargo.toml
+++ b/pallets/configuration/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "pallet-configuration"
-version = "0.1.2"
+version = "0.1.3"
edition = "2021"
[dependencies]
@@ -12,6 +12,7 @@
] }
frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
@@ -22,10 +23,12 @@
[features]
default = ["std"]
+runtime-benchmarks = ["frame-benchmarking"]
std = [
"parity-scale-codec/std",
"frame-support/std",
"frame-system/std",
+ "frame-benchmarking/std",
"sp-runtime/std",
"sp-std/std",
"sp-core/std",
pallets/configuration/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/configuration/src/benchmarking.rs
@@ -0,0 +1,100 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+//! Benchmarking setup for pallet-configuration
+
+use super::*;
+use frame_benchmarking::benchmarks;
+use frame_system::{EventRecord, RawOrigin};
+use frame_support::{assert_ok, BoundedVec, traits::Currency};
+use xcm::v1::MultiLocation;
+
+fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
+ let events = frame_system::Pallet::<T>::events();
+ let system_event: <T as frame_system::Config>::RuntimeEvent = generic_event.into();
+ // compare to the last event record
+ let EventRecord { event, .. } = &events[events.len() - 1];
+ assert_eq!(event, &system_event);
+}
+
+benchmarks! {
+ where_clause { where T: Config }
+
+ set_weight_to_fee_coefficient_override {
+ let coeff: u64 = 999;
+ }: {
+ assert_ok!(
+ <Pallet<T>>::set_weight_to_fee_coefficient_override(RawOrigin::Root.into(), Some(coeff))
+ );
+ }
+
+ set_min_gas_price_override {
+ let coeff: u64 = 999;
+ }: {
+ assert_ok!(
+ <Pallet<T>>::set_min_gas_price_override(RawOrigin::Root.into(), Some(coeff))
+ );
+ }
+
+ set_xcm_allowed_locations {
+ let locations: BoundedVec<MultiLocation, T::MaxXcmAllowedLocations> = Default::default();
+ }: {
+ assert_ok!(
+ <Pallet<T>>::set_xcm_allowed_locations(RawOrigin::Root.into(), Some(locations))
+ );
+ }
+
+ set_app_promotion_configuration_override {
+ let configuration: AppPromotionConfiguration<T::BlockNumber> = Default::default();
+ }: {
+ assert_ok!(
+ <Pallet<T>>::set_app_promotion_configuration_override(RawOrigin::Root.into(), configuration)
+ );
+ }
+
+ set_collator_selection_desired_collators {
+ let max: u32 = 999;
+ }: {
+ assert_ok!(
+ <Pallet<T>>::set_collator_selection_desired_collators(RawOrigin::Root.into(), Some(max.clone()))
+ );
+ }
+ verify {
+ assert_last_event::<T>(Event::NewDesiredCollators{desired_collators: Some(max)}.into());
+ }
+
+ set_collator_selection_license_bond {
+ let bond_cost: Option<BalanceOf<T>> = Some(T::Currency::minimum_balance() * 10u32.into());
+ }: {
+ assert_ok!(
+ <Pallet<T>>::set_collator_selection_license_bond(RawOrigin::Root.into(), bond_cost.clone())
+ );
+ }
+ verify {
+ assert_last_event::<T>(Event::NewCollatorLicenseBond{bond_cost}.into());
+ }
+
+ set_collator_selection_kick_threshold {
+ let threshold: Option<T::BlockNumber> = Some(900u32.into());
+ }: {
+ assert_ok!(
+ <Pallet<T>>::set_collator_selection_kick_threshold(RawOrigin::Root.into(), threshold.clone())
+ );
+ }
+ verify {
+ assert_last_event::<T>(Event::NewCollatorKickThreshold{length_in_blocks: threshold}.into());
+ }
+}
pallets/configuration/src/lib.rsdiffbeforeafterboth--- a/pallets/configuration/src/lib.rs
+++ b/pallets/configuration/src/lib.rs
@@ -34,19 +34,33 @@
pub use pallet::*;
use sp_core::U256;
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
+pub mod weights;
+
#[pallet]
mod pallet {
use super::*;
use frame_support::{
- traits::Get,
- pallet_prelude::{StorageValue, ValueQuery, DispatchResult, OptionQuery},
- BoundedVec,
+ traits::{Get, ReservableCurrency, Currency},
+ pallet_prelude::{StorageValue, ValueQuery, DispatchResult, IsType, OptionQuery},
+ BoundedVec, log,
};
- use frame_system::{pallet_prelude::OriginFor, ensure_root};
+ use frame_system::{pallet_prelude::OriginFor, ensure_root, Config as SystemConfig};
use xcm::v1::MultiLocation;
+ pub use crate::weights::WeightInfo;
+ pub type BalanceOf<T> =
+ <<T as Config>::Currency as Currency<<T as SystemConfig>::AccountId>>::Balance;
+
#[pallet::config]
pub trait Config: frame_system::Config {
+ /// Overarching event type.
+ type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
+
+ /// The currency mechanism.
+ type Currency: ReservableCurrency<Self::AccountId>;
+
#[pallet::constant]
type DefaultWeightToFeeCoefficient: Get<u64>;
#[pallet::constant]
@@ -58,6 +72,30 @@
type AppPromotionDailyRate: Get<Perbill>;
#[pallet::constant]
type DayRelayBlocks: Get<Self::BlockNumber>;
+
+ #[pallet::constant]
+ type DefaultCollatorSelectionMaxCollators: Get<u32>;
+ #[pallet::constant]
+ type DefaultCollatorSelectionLicenseBond: Get<BalanceOf<Self>>;
+ #[pallet::constant]
+ type DefaultCollatorSelectionKickThreshold: Get<Self::BlockNumber>;
+
+ /// The weight information of this pallet.
+ type WeightInfo: WeightInfo;
+ }
+
+ #[pallet::event]
+ #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ pub enum Event<T: Config> {
+ NewDesiredCollators {
+ desired_collators: Option<u32>,
+ },
+ NewCollatorLicenseBond {
+ bond_cost: Option<BalanceOf<T>>,
+ },
+ NewCollatorKickThreshold {
+ length_in_blocks: Option<T::BlockNumber>,
+ },
}
#[pallet::error]
@@ -86,10 +124,31 @@
pub type AppPromomotionConfigurationOverride<T: Config> =
StorageValue<Value = AppPromotionConfiguration<T::BlockNumber>, QueryKind = ValueQuery>;
+ #[pallet::storage]
+ pub type CollatorSelectionDesiredCollatorsOverride<T: Config> = StorageValue<
+ Value = u32,
+ QueryKind = ValueQuery,
+ OnEmpty = T::DefaultCollatorSelectionMaxCollators,
+ >;
+
+ #[pallet::storage]
+ pub type CollatorSelectionLicenseBondOverride<T: Config> = StorageValue<
+ Value = BalanceOf<T>,
+ QueryKind = ValueQuery,
+ OnEmpty = T::DefaultCollatorSelectionLicenseBond,
+ >;
+
+ #[pallet::storage]
+ pub type CollatorSelectionKickThresholdOverride<T: Config> = StorageValue<
+ Value = T::BlockNumber,
+ QueryKind = ValueQuery,
+ OnEmpty = T::DefaultCollatorSelectionKickThreshold,
+ >;
+
#[pallet::call]
impl<T: Config> Pallet<T> {
#[pallet::call_index(0)]
- #[pallet::weight(T::DbWeight::get().writes(1))]
+ #[pallet::weight(T::WeightInfo::set_weight_to_fee_coefficient_override())]
pub fn set_weight_to_fee_coefficient_override(
origin: OriginFor<T>,
coeff: Option<u64>,
@@ -104,7 +163,7 @@
}
#[pallet::call_index(1)]
- #[pallet::weight(T::DbWeight::get().writes(1))]
+ #[pallet::weight(T::WeightInfo::set_min_gas_price_override())]
pub fn set_min_gas_price_override(
origin: OriginFor<T>,
coeff: Option<u64>,
@@ -119,7 +178,7 @@
}
#[pallet::call_index(2)]
- #[pallet::weight(T::DbWeight::get().writes(1))]
+ #[pallet::weight(T::WeightInfo::set_xcm_allowed_locations())]
pub fn set_xcm_allowed_locations(
origin: OriginFor<T>,
locations: Option<BoundedVec<MultiLocation, T::MaxXcmAllowedLocations>>,
@@ -130,7 +189,7 @@
}
#[pallet::call_index(3)]
- #[pallet::weight(T::DbWeight::get().writes(1))]
+ #[pallet::weight(T::WeightInfo::set_app_promotion_configuration_override())]
pub fn set_app_promotion_configuration_override(
origin: OriginFor<T>,
mut configuration: AppPromotionConfiguration<T::BlockNumber>,
@@ -149,6 +208,62 @@
Ok(())
}
+
+ #[pallet::call_index(4)]
+ #[pallet::weight(T::WeightInfo::set_collator_selection_desired_collators())]
+ pub fn set_collator_selection_desired_collators(
+ origin: OriginFor<T>,
+ max: Option<u32>,
+ ) -> DispatchResult {
+ ensure_root(origin)?;
+ if let Some(max) = max {
+ // we trust origin calls, this is just a for more accurate benchmarking
+ if max > T::DefaultCollatorSelectionMaxCollators::get() {
+ log::warn!("max > T::DefaultCollatorSelectionMaxCollators; you might need to run benchmarks again");
+ }
+ <CollatorSelectionDesiredCollatorsOverride<T>>::set(max);
+ } else {
+ <CollatorSelectionDesiredCollatorsOverride<T>>::kill();
+ }
+ Self::deposit_event(Event::NewDesiredCollators {
+ desired_collators: max,
+ });
+ Ok(())
+ }
+
+ #[pallet::call_index(5)]
+ #[pallet::weight(T::WeightInfo::set_collator_selection_license_bond())]
+ pub fn set_collator_selection_license_bond(
+ origin: OriginFor<T>,
+ amount: Option<BalanceOf<T>>,
+ ) -> DispatchResult {
+ ensure_root(origin)?;
+ if let Some(amount) = amount {
+ <CollatorSelectionLicenseBondOverride<T>>::set(amount);
+ } else {
+ <CollatorSelectionLicenseBondOverride<T>>::kill();
+ }
+ Self::deposit_event(Event::NewCollatorLicenseBond { bond_cost: amount });
+ Ok(())
+ }
+
+ #[pallet::call_index(6)]
+ #[pallet::weight(T::WeightInfo::set_collator_selection_kick_threshold())]
+ pub fn set_collator_selection_kick_threshold(
+ origin: OriginFor<T>,
+ threshold: Option<T::BlockNumber>,
+ ) -> DispatchResult {
+ ensure_root(origin)?;
+ if let Some(threshold) = threshold {
+ <CollatorSelectionKickThresholdOverride<T>>::set(threshold);
+ } else {
+ <CollatorSelectionKickThresholdOverride<T>>::kill();
+ }
+ Self::deposit_event(Event::NewCollatorKickThreshold {
+ length_in_blocks: threshold,
+ });
+ Ok(())
+ }
}
#[pallet::pallet]
pallets/configuration/src/weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/configuration/src/weights.rs
@@ -0,0 +1,123 @@
+// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
+
+//! Autogenerated weights for pallet_configuration
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
+//! DATE: 2022-12-28, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
+
+// Executed Command:
+// target/release/unique-collator
+// benchmark
+// pallet
+// --pallet
+// pallet-configuration
+// --wasm-execution
+// compiled
+// --extrinsic
+// *
+// --template
+// .maintain/frame-weight-template.hbs
+// --steps=50
+// --repeat=80
+// --heap-pages=4096
+// --output=./pallets/configuration/src/weights.rs
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+#![allow(clippy::unnecessary_cast)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weight functions needed for pallet_configuration.
+pub trait WeightInfo {
+ fn set_weight_to_fee_coefficient_override() -> Weight;
+ fn set_min_gas_price_override() -> Weight;
+ fn set_xcm_allowed_locations() -> Weight;
+ fn set_app_promotion_configuration_override() -> Weight;
+ fn set_collator_selection_desired_collators() -> Weight;
+ fn set_collator_selection_license_bond() -> Weight;
+ fn set_collator_selection_kick_threshold() -> Weight;
+}
+
+/// Weights for pallet_configuration using the Substrate node and recommended hardware.
+pub struct SubstrateWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
+ // Storage: Configuration WeightToFeeCoefficientOverride (r:0 w:1)
+ fn set_weight_to_fee_coefficient_override() -> Weight {
+ Weight::from_ref_time(5_691_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration MinGasPriceOverride (r:0 w:1)
+ fn set_min_gas_price_override() -> Weight {
+ Weight::from_ref_time(5_521_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration XcmAllowedLocationsOverride (r:0 w:1)
+ fn set_xcm_allowed_locations() -> Weight {
+ Weight::from_ref_time(6_091_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration AppPromomotionConfigurationOverride (r:0 w:1)
+ fn set_app_promotion_configuration_override() -> Weight {
+ Weight::from_ref_time(6_241_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration CollatorSelectionDesiredCollatorsOverride (r:0 w:1)
+ fn set_collator_selection_desired_collators() -> Weight {
+ Weight::from_ref_time(25_298_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration CollatorSelectionLicenseBondOverride (r:0 w:1)
+ fn set_collator_selection_license_bond() -> Weight {
+ Weight::from_ref_time(18_675_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration CollatorSelectionKickThresholdOverride (r:0 w:1)
+ fn set_collator_selection_kick_threshold() -> Weight {
+ Weight::from_ref_time(18_044_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+ // Storage: Configuration WeightToFeeCoefficientOverride (r:0 w:1)
+ fn set_weight_to_fee_coefficient_override() -> Weight {
+ Weight::from_ref_time(5_691_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration MinGasPriceOverride (r:0 w:1)
+ fn set_min_gas_price_override() -> Weight {
+ Weight::from_ref_time(5_521_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration XcmAllowedLocationsOverride (r:0 w:1)
+ fn set_xcm_allowed_locations() -> Weight {
+ Weight::from_ref_time(6_091_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration AppPromomotionConfigurationOverride (r:0 w:1)
+ fn set_app_promotion_configuration_override() -> Weight {
+ Weight::from_ref_time(6_241_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration CollatorSelectionDesiredCollatorsOverride (r:0 w:1)
+ fn set_collator_selection_desired_collators() -> Weight {
+ Weight::from_ref_time(25_298_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration CollatorSelectionLicenseBondOverride (r:0 w:1)
+ fn set_collator_selection_license_bond() -> Weight {
+ Weight::from_ref_time(18_675_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Configuration CollatorSelectionKickThresholdOverride (r:0 w:1)
+ fn set_collator_selection_kick_threshold() -> Weight {
+ Weight::from_ref_time(18_044_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+}
pallets/identity/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/pallets/identity/Cargo.toml
@@ -0,0 +1,47 @@
+[package]
+name = "pallet-identity"
+version = "4.0.0-dev"
+authors = ["Parity Technologies <admin@parity.io>", "Unique Network <support@uniquenetwork.io>"]
+edition = "2021"
+license = "Apache-2.0"
+homepage = "https://substrate.io"
+repository = "https://github.com/paritytech/substrate/"
+description = "FRAME identity management pallet"
+readme = "README.md"
+
+[package.metadata.docs.rs]
+targets = ["x86_64-unknown-linux-gnu"]
+
+[dependencies]
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
+enumflags2 = { version = "0.7.4" }
+scale-info = { version = "2.1.1", default-features = false, features = ["derive"] }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-io = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-runtime = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-std = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+
+[dev-dependencies]
+pallet-balances = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+sp-core = { version = "7.0.0", git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" }
+
+[features]
+default = ["std"]
+std = [
+ "codec/std",
+ "frame-benchmarking?/std",
+ "frame-support/std",
+ "frame-system/std",
+ "scale-info/std",
+ "sp-io/std",
+ "sp-runtime/std",
+ "sp-std/std",
+]
+runtime-benchmarks = [
+ "frame-benchmarking/runtime-benchmarks",
+ "frame-support/runtime-benchmarks",
+ "frame-system/runtime-benchmarks",
+]
+try-runtime = ["frame-support/try-runtime"]
pallets/identity/README.mddiffbeforeafterboth--- /dev/null
+++ b/pallets/identity/README.md
@@ -0,0 +1,56 @@
+# Identity Module
+
+- [`identity::Config`](https://docs.rs/pallet-identity/latest/pallet_identity/trait.Config.html)
+- [`Call`](https://docs.rs/pallet-identity/latest/pallet_identity/enum.Call.html)
+
+## Overview
+
+A federated naming system, allowing for multiple registrars to be added from a specified origin.
+Registrars can set a fee to provide identity-verification service. Anyone can put forth a
+proposed identity for a fixed deposit and ask for review by any number of registrars (paying
+each of their fees). Registrar judgements are given as an `enum`, allowing for sophisticated,
+multi-tier opinions.
+
+Some judgements are identified as *sticky*, which means they cannot be removed except by
+complete removal of the identity, or by the registrar. Judgements are allowed to represent a
+portion of funds that have been reserved for the registrar.
+
+A super-user can remove accounts and in doing so, slash the deposit.
+
+All accounts may also have a limited number of sub-accounts which may be specified by the owner;
+by definition, these have equivalent ownership and each has an individual name.
+
+The number of registrars should be limited, and the deposit made sufficiently large, to ensure
+no state-bloat attack is viable.
+
+## Interface
+
+### Dispatchable Functions
+
+#### For general users
+* `set_identity` - Set the associated identity of an account; a small deposit is reserved if not
+ already taken.
+* `clear_identity` - Remove an account's associated identity; the deposit is returned.
+* `request_judgement` - Request a judgement from a registrar, paying a fee.
+* `cancel_request` - Cancel the previous request for a judgement.
+
+#### For general users with sub-identities
+* `set_subs` - Set the sub-accounts of an identity.
+* `add_sub` - Add a sub-identity to an identity.
+* `remove_sub` - Remove a sub-identity of an identity.
+* `rename_sub` - Rename a sub-identity of an identity.
+* `quit_sub` - Remove a sub-identity of an identity (called by the sub-identity).
+
+#### For registrars
+* `set_fee` - Set the fee required to be paid for a judgement to be given by the registrar.
+* `set_fields` - Set the fields that a registrar cares about in their judgements.
+* `provide_judgement` - Provide a judgement to an identity.
+
+#### For super-users
+* `add_registrar` - Add a new registrar to the system.
+* `kill_identity` - Forcibly remove the associated identity; the deposit is lost.
+
+[`Call`]: ./enum.Call.html
+[`Config`]: ./trait.Config.html
+
+License: Apache-2.0
pallets/identity/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/identity/src/benchmarking.rs
@@ -0,0 +1,500 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// This file is part of Substrate.
+
+// Copyright (C) 2020-2022 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! Identity pallet benchmarking.
+
+#![cfg(feature = "runtime-benchmarks")]
+
+use super::*;
+
+use crate::Pallet as Identity;
+use frame_benchmarking::{account, benchmarks, whitelisted_caller};
+use frame_support::{
+ ensure, assert_ok,
+ traits::{EnsureOrigin, Get},
+};
+use frame_system::RawOrigin;
+use sp_runtime::traits::Bounded;
+
+const SEED: u32 = 0;
+
+fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
+ frame_system::Pallet::<T>::assert_last_event(generic_event.into());
+}
+
+// Adds `r` registrars to the Identity Pallet. These registrars will have set fees and fields.
+fn add_registrars<T: Config>(r: u32) -> Result<(), &'static str> {
+ for i in 0..r {
+ let registrar: T::AccountId = account("registrar", i, SEED);
+ let registrar_lookup = T::Lookup::unlookup(registrar.clone());
+ let _ = T::Currency::make_free_balance_be(®istrar, BalanceOf::<T>::max_value());
+ let registrar_origin = T::RegistrarOrigin::successful_origin();
+ Identity::<T>::add_registrar(registrar_origin, registrar_lookup)?;
+ Identity::<T>::set_fee(RawOrigin::Signed(registrar.clone()).into(), i, 10u32.into())?;
+ let fields = IdentityFields(
+ IdentityField::Display
+ | IdentityField::Legal
+ | IdentityField::Web
+ | IdentityField::Riot
+ | IdentityField::Email
+ | IdentityField::PgpFingerprint
+ | IdentityField::Image
+ | IdentityField::Twitter,
+ );
+ Identity::<T>::set_fields(RawOrigin::Signed(registrar.clone()).into(), i, fields)?;
+ }
+
+ assert_eq!(Registrars::<T>::get().len(), r as usize);
+ Ok(())
+}
+
+// Create `s` sub-accounts for the identity of `who` and return them.
+// Each will have 32 bytes of raw data added to it.
+fn create_sub_accounts<T: Config>(
+ who: &T::AccountId,
+ s: u32,
+) -> Result<Vec<(T::AccountId, Data)>, &'static str> {
+ let mut subs = Vec::new();
+ let who_origin = RawOrigin::Signed(who.clone());
+ let data = Data::Raw(vec![0; 32].try_into().unwrap());
+
+ for i in 0..s {
+ let sub_account = account("sub", i, SEED);
+ subs.push((sub_account, data.clone()));
+ }
+
+ // Set identity so `set_subs` does not fail.
+ if IdentityOf::<T>::get(who).is_none() {
+ let _ = T::Currency::make_free_balance_be(who, BalanceOf::<T>::max_value() / 2u32.into());
+ let info = create_identity_info::<T>(1);
+ Identity::<T>::set_identity(who_origin.into(), Box::new(info))?;
+ }
+
+ Ok(subs)
+}
+
+// Adds `s` sub-accounts to the identity of `who`. Each will have 32 bytes of raw data added to it.
+// This additionally returns the vector of sub-accounts so it can be modified if needed.
+fn add_sub_accounts<T: Config>(
+ who: &T::AccountId,
+ s: u32,
+) -> Result<Vec<(T::AccountId, Data)>, &'static str> {
+ let who_origin = RawOrigin::Signed(who.clone());
+ let subs = create_sub_accounts::<T>(who, s)?;
+
+ Identity::<T>::set_subs(who_origin.into(), subs.clone())?;
+
+ Ok(subs)
+}
+
+// This creates an `IdentityInfo` object with `num_fields` extra fields.
+// All data is pre-populated with some arbitrary bytes.
+fn create_identity_info<T: Config>(num_fields: u32) -> IdentityInfo<T::MaxAdditionalFields> {
+ let data = Data::Raw(vec![0; 32].try_into().unwrap());
+
+ IdentityInfo {
+ additional: vec![(data.clone(), data.clone()); num_fields as usize]
+ .try_into()
+ .unwrap(),
+ display: data.clone(),
+ legal: data.clone(),
+ web: data.clone(),
+ riot: data.clone(),
+ email: data.clone(),
+ pgp_fingerprint: Some([0; 20]),
+ image: data.clone(),
+ twitter: data,
+ }
+}
+
+benchmarks! {
+ add_registrar {
+ let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
+ ensure!(Registrars::<T>::get().len() as u32 == r, "Registrars not set up correctly.");
+ let origin = T::RegistrarOrigin::successful_origin();
+ let account = T::Lookup::unlookup(account("registrar", r + 1, SEED));
+ }: _<T::RuntimeOrigin>(origin, account)
+ verify {
+ ensure!(Registrars::<T>::get().len() as u32 == r + 1, "Registrars not added.");
+ }
+
+ set_identity {
+ let r in 1 .. T::MaxRegistrars::get() => add_registrars::<T>(r)?;
+ let x in 0 .. T::MaxAdditionalFields::get();
+ let caller = {
+ // The target user
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_lookup = T::Lookup::unlookup(caller.clone());
+ let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
+ let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
+
+ // Add an initial identity
+ let initial_info = create_identity_info::<T>(1);
+ Identity::<T>::set_identity(caller_origin.clone(), Box::new(initial_info.clone()))?;
+
+ // User requests judgement from all the registrars, and they approve
+ for i in 0..r {
+ let registrar: T::AccountId = account("registrar", i, SEED);
+ let registrar_lookup = T::Lookup::unlookup(registrar.clone());
+ let balance_to_use = T::Currency::minimum_balance() * 10u32.into();
+ let _ = T::Currency::make_free_balance_be(®istrar, balance_to_use);
+
+ Identity::<T>::request_judgement(caller_origin.clone(), i, 10u32.into())?;
+ Identity::<T>::provide_judgement(
+ RawOrigin::Signed(registrar).into(),
+ i,
+ caller_lookup.clone(),
+ Judgement::Reasonable,
+ T::Hashing::hash_of(&initial_info),
+ )?;
+ }
+ caller
+ };
+ }: _(RawOrigin::Signed(caller.clone()), Box::new(create_identity_info::<T>(x)))
+ verify {
+ assert_last_event::<T>(Event::<T>::IdentitySet { who: caller }.into());
+ }
+
+ // We need to split `set_subs` into two benchmarks to accurately isolate the potential
+ // writes caused by new or old sub accounts. The actual weight should simply be
+ // the sum of these two weights.
+ set_subs_new {
+ let caller: T::AccountId = whitelisted_caller();
+ // Create a new subs vec with s sub accounts
+ let s in 0 .. T::MaxSubAccounts::get() => ();
+ let subs = create_sub_accounts::<T>(&caller, s)?;
+ ensure!(SubsOf::<T>::get(&caller).1.len() == 0, "Caller already has subs");
+ }: set_subs(RawOrigin::Signed(caller.clone()), subs)
+ verify {
+ ensure!(SubsOf::<T>::get(&caller).1.len() as u32 == s, "Subs not added");
+ }
+
+ set_subs_old {
+ let caller: T::AccountId = whitelisted_caller();
+ // Give them p many previous sub accounts.
+ let p in 0 .. T::MaxSubAccounts::get() => {
+ let _ = add_sub_accounts::<T>(&caller, p)?;
+ };
+ // Remove all subs.
+ let subs = create_sub_accounts::<T>(&caller, 0)?;
+ ensure!(
+ SubsOf::<T>::get(&caller).1.len() as u32 == p,
+ "Caller does have subs",
+ );
+ }: set_subs(RawOrigin::Signed(caller.clone()), subs)
+ verify {
+ ensure!(SubsOf::<T>::get(&caller).1.len() == 0, "Subs not removed");
+ }
+
+ clear_identity {
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_origin = <T as frame_system::Config>::RuntimeOrigin::from(RawOrigin::Signed(caller.clone()));
+ let caller_lookup = <T::Lookup as StaticLookup>::unlookup(caller.clone());
+ let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
+
+ let r in 1 .. T::MaxRegistrars::get() => add_registrars::<T>(r)?;
+ let s in 0 .. T::MaxSubAccounts::get() => {
+ // Give them s many sub accounts
+ let caller: T::AccountId = whitelisted_caller();
+ let _ = add_sub_accounts::<T>(&caller, s)?;
+ };
+ let x in 0 .. T::MaxAdditionalFields::get();
+
+ // Create their main identity with x additional fields
+ let info = create_identity_info::<T>(x);
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_origin = <T as frame_system::Config>::RuntimeOrigin::from(RawOrigin::Signed(caller.clone()));
+ Identity::<T>::set_identity(caller_origin.clone(), Box::new(info.clone()))?;
+
+ // User requests judgement from all the registrars, and they approve
+ for i in 0..r {
+ let registrar: T::AccountId = account("registrar", i, SEED);
+ let balance_to_use = T::Currency::minimum_balance() * 10u32.into();
+ let _ = T::Currency::make_free_balance_be(®istrar, balance_to_use);
+
+ Identity::<T>::request_judgement(caller_origin.clone(), i, 10u32.into())?;
+ Identity::<T>::provide_judgement(
+ RawOrigin::Signed(registrar).into(),
+ i,
+ caller_lookup.clone(),
+ Judgement::Reasonable,
+ T::Hashing::hash_of(&info),
+ )?;
+ }
+ ensure!(IdentityOf::<T>::contains_key(&caller), "Identity does not exist.");
+ }: _(RawOrigin::Signed(caller.clone()))
+ verify {
+ ensure!(!IdentityOf::<T>::contains_key(&caller), "Identity not cleared.");
+ }
+
+ request_judgement {
+ let caller: T::AccountId = whitelisted_caller();
+ let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
+
+ let r in 1 .. T::MaxRegistrars::get() => add_registrars::<T>(r)?;
+ let x in 0 .. T::MaxAdditionalFields::get() => {
+ // Create their main identity with x additional fields
+ let info = create_identity_info::<T>(x);
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_origin = <T as frame_system::Config>::RuntimeOrigin::from(RawOrigin::Signed(caller));
+ Identity::<T>::set_identity(caller_origin, Box::new(info))?;
+ };
+ }: _(RawOrigin::Signed(caller.clone()), r - 1, 10u32.into())
+ verify {
+ assert_last_event::<T>(Event::<T>::JudgementRequested { who: caller, registrar_index: r-1 }.into());
+ }
+
+ cancel_request {
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_origin = <T as frame_system::Config>::RuntimeOrigin::from(RawOrigin::Signed(caller.clone()));
+ let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
+
+ let r in 1 .. T::MaxRegistrars::get() => add_registrars::<T>(r)?;
+ let x in 0 .. T::MaxAdditionalFields::get() => {
+ // Create their main identity with x additional fields
+ let info = create_identity_info::<T>(x);
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_origin = <T as frame_system::Config>::RuntimeOrigin::from(RawOrigin::Signed(caller));
+ Identity::<T>::set_identity(caller_origin, Box::new(info))?;
+ };
+
+ Identity::<T>::request_judgement(caller_origin, r - 1, 10u32.into())?;
+ }: _(RawOrigin::Signed(caller.clone()), r - 1)
+ verify {
+ assert_last_event::<T>(Event::<T>::JudgementUnrequested { who: caller, registrar_index: r-1 }.into());
+ }
+
+ set_fee {
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_lookup = T::Lookup::unlookup(caller.clone());
+
+ let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
+
+ let registrar_origin = T::RegistrarOrigin::successful_origin();
+ Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
+ let registrars = Registrars::<T>::get();
+ ensure!(registrars[r as usize].as_ref().unwrap().fee == 0u32.into(), "Fee already set.");
+ }: _(RawOrigin::Signed(caller), r, 100u32.into())
+ verify {
+ let registrars = Registrars::<T>::get();
+ ensure!(registrars[r as usize].as_ref().unwrap().fee == 100u32.into(), "Fee not changed.");
+ }
+
+ set_account_id {
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_lookup = T::Lookup::unlookup(caller.clone());
+ let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
+
+ let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
+
+ let registrar_origin = T::RegistrarOrigin::successful_origin();
+ Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
+ let registrars = Registrars::<T>::get();
+ ensure!(registrars[r as usize].as_ref().unwrap().account == caller, "id not set.");
+ let new_account = T::Lookup::unlookup(account("new", 0, SEED));
+ }: _(RawOrigin::Signed(caller), r, new_account)
+ verify {
+ let registrars = Registrars::<T>::get();
+ ensure!(registrars[r as usize].as_ref().unwrap().account == account("new", 0, SEED), "id not changed.");
+ }
+
+ set_fields {
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_lookup = T::Lookup::unlookup(caller.clone());
+ let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
+
+ let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
+
+ let registrar_origin = T::RegistrarOrigin::successful_origin();
+ Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
+ let fields = IdentityFields(
+ IdentityField::Display | IdentityField::Legal | IdentityField::Web | IdentityField::Riot
+ | IdentityField::Email | IdentityField::PgpFingerprint | IdentityField::Image | IdentityField::Twitter
+ );
+ let registrars = Registrars::<T>::get();
+ ensure!(registrars[r as usize].as_ref().unwrap().fields == Default::default(), "fields already set.");
+ }: _(RawOrigin::Signed(caller), r, fields)
+ verify {
+ let registrars = Registrars::<T>::get();
+ ensure!(registrars[r as usize].as_ref().unwrap().fields != Default::default(), "fields not set.");
+ }
+
+ provide_judgement {
+ // The user
+ let user: T::AccountId = account("user", r, SEED);
+ let user_origin = <T as frame_system::Config>::RuntimeOrigin::from(RawOrigin::Signed(user.clone()));
+ let user_lookup = <T::Lookup as StaticLookup>::unlookup(user.clone());
+ let _ = T::Currency::make_free_balance_be(&user, BalanceOf::<T>::max_value());
+
+ let caller: T::AccountId = whitelisted_caller();
+ let caller_lookup = T::Lookup::unlookup(caller.clone());
+ let _ = T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
+
+ let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
+ let x in 0 .. T::MaxAdditionalFields::get();
+
+ let info = create_identity_info::<T>(x);
+ let info_hash = T::Hashing::hash_of(&info);
+ Identity::<T>::set_identity(user_origin.clone(), Box::new(info))?;
+
+ let registrar_origin = T::RegistrarOrigin::successful_origin();
+ Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
+ Identity::<T>::request_judgement(user_origin, r, 10u32.into())?;
+ }: _(RawOrigin::Signed(caller), r, user_lookup, Judgement::Reasonable, info_hash)
+ verify {
+ assert_last_event::<T>(Event::<T>::JudgementGiven { target: user, registrar_index: r }.into())
+ }
+
+ kill_identity {
+ let r in 1 .. T::MaxRegistrars::get() => add_registrars::<T>(r)?;
+ let s in 0 .. T::MaxSubAccounts::get();
+ let x in 0 .. T::MaxAdditionalFields::get();
+
+ let target: T::AccountId = account("target", 0, SEED);
+ let target_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(target.clone()).into();
+ let target_lookup = T::Lookup::unlookup(target.clone());
+ let _ = T::Currency::make_free_balance_be(&target, BalanceOf::<T>::max_value());
+
+ let info = create_identity_info::<T>(x);
+ Identity::<T>::set_identity(target_origin.clone(), Box::new(info.clone()))?;
+ let _ = add_sub_accounts::<T>(&target, s)?;
+
+ // User requests judgement from all the registrars, and they approve
+ for i in 0..r {
+ let registrar: T::AccountId = account("registrar", i, SEED);
+ let balance_to_use = T::Currency::minimum_balance() * 10u32.into();
+ let _ = T::Currency::make_free_balance_be(®istrar, balance_to_use);
+
+ Identity::<T>::request_judgement(target_origin.clone(), i, 10u32.into())?;
+ Identity::<T>::provide_judgement(
+ RawOrigin::Signed(registrar).into(),
+ i,
+ target_lookup.clone(),
+ Judgement::Reasonable,
+ T::Hashing::hash_of(&info),
+ )?;
+ }
+ ensure!(IdentityOf::<T>::contains_key(&target), "Identity not set");
+ let origin = T::ForceOrigin::successful_origin();
+ }: _<T::RuntimeOrigin>(origin, target_lookup)
+ verify {
+ ensure!(!IdentityOf::<T>::contains_key(&target), "Identity not removed");
+ }
+
+ force_insert_identities {
+ let x in 0 .. T::MaxAdditionalFields::get();
+ let n in 0..600;
+ use frame_benchmarking::account;
+ let identities = (0..n).map(|i| (
+ account("caller", i, 0),
+ Registration::<BalanceOf<T>, T::MaxRegistrars, T::MaxAdditionalFields> {
+ judgements: Default::default(),
+ deposit: Default::default(),
+ info: create_identity_info::<T>(x),
+ },
+ )).collect::<Vec<_>>();
+ let origin = T::ForceOrigin::successful_origin();
+ }: _<T::RuntimeOrigin>(origin, identities)
+
+ force_remove_identities {
+ let x in 0 .. T::MaxAdditionalFields::get();
+ let n in 0..600;
+ use frame_benchmarking::account;
+ let origin = T::ForceOrigin::successful_origin();
+ let identities = (0..n).map(|i| (
+ account("caller", i, 0),
+ Registration::<BalanceOf<T>, T::MaxRegistrars, T::MaxAdditionalFields> {
+ judgements: Default::default(),
+ deposit: Default::default(),
+ info: create_identity_info::<T>(x),
+ },
+ )).collect::<Vec<_>>();
+ assert_ok!(
+ Identity::<T>::force_insert_identities(origin.clone(), identities.clone()),
+ );
+ let identities = identities.into_iter().map(|(acc, _)| acc).collect::<Vec<_>>();
+ }: _<T::RuntimeOrigin>(origin, identities)
+
+ add_sub {
+ let s in 0 .. T::MaxSubAccounts::get() - 1;
+
+ let caller: T::AccountId = whitelisted_caller();
+ let _ = add_sub_accounts::<T>(&caller, s)?;
+ let sub = account("new_sub", 0, SEED);
+ let data = Data::Raw(vec![0; 32].try_into().unwrap());
+ ensure!(SubsOf::<T>::get(&caller).1.len() as u32 == s, "Subs not set.");
+ }: _(RawOrigin::Signed(caller.clone()), T::Lookup::unlookup(sub), data)
+ verify {
+ ensure!(SubsOf::<T>::get(&caller).1.len() as u32 == s + 1, "Subs not added.");
+ }
+
+ rename_sub {
+ let s in 1 .. T::MaxSubAccounts::get();
+
+ let caller: T::AccountId = whitelisted_caller();
+ let (sub, _) = add_sub_accounts::<T>(&caller, s)?.remove(0);
+ let data = Data::Raw(vec![1; 32].try_into().unwrap());
+ ensure!(SuperOf::<T>::get(&sub).unwrap().1 != data, "data already set");
+ }: _(RawOrigin::Signed(caller), T::Lookup::unlookup(sub.clone()), data.clone())
+ verify {
+ ensure!(SuperOf::<T>::get(&sub).unwrap().1 == data, "data not set");
+ }
+
+ remove_sub {
+ let s in 1 .. T::MaxSubAccounts::get();
+
+ let caller: T::AccountId = whitelisted_caller();
+ let (sub, _) = add_sub_accounts::<T>(&caller, s)?.remove(0);
+ ensure!(SuperOf::<T>::contains_key(&sub), "Sub doesn't exists");
+ }: _(RawOrigin::Signed(caller), T::Lookup::unlookup(sub.clone()))
+ verify {
+ ensure!(!SuperOf::<T>::contains_key(&sub), "Sub not removed");
+ }
+
+ quit_sub {
+ let s in 0 .. T::MaxSubAccounts::get() - 1;
+
+ let caller: T::AccountId = whitelisted_caller();
+ let sup = account("super", 0, SEED);
+ let _ = add_sub_accounts::<T>(&sup, s)?;
+ let sup_origin = RawOrigin::Signed(sup).into();
+ Identity::<T>::add_sub(sup_origin, T::Lookup::unlookup(caller.clone()), Data::Raw(vec![0; 32].try_into().unwrap()))?;
+ ensure!(SuperOf::<T>::contains_key(&caller), "Sub doesn't exists");
+ }: _(RawOrigin::Signed(caller.clone()))
+ verify {
+ ensure!(!SuperOf::<T>::contains_key(&caller), "Sub not removed");
+ }
+
+ impl_benchmark_test_suite!(Identity, crate::tests::new_test_ext(), crate::tests::Test);
+}
pallets/identity/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/identity/src/lib.rs
@@ -0,0 +1,1166 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// This file is part of Substrate.
+
+// Copyright (C) 2019-2022 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! # Identity Pallet
+//!
+//! - [`Config`]
+//! - [`Call`]
+//!
+//! ## Overview
+//!
+//! A federated naming system, allowing for multiple registrars to be added from a specified origin.
+//! Registrars can set a fee to provide identity-verification service. Anyone can put forth a
+//! proposed identity for a fixed deposit and ask for review by any number of registrars (paying
+//! each of their fees). Registrar judgements are given as an `enum`, allowing for sophisticated,
+//! multi-tier opinions.
+//!
+//! Some judgements are identified as *sticky*, which means they cannot be removed except by
+//! complete removal of the identity, or by the registrar. Judgements are allowed to represent a
+//! portion of funds that have been reserved for the registrar.
+//!
+//! A super-user can remove accounts and in doing so, slash the deposit.
+//!
+//! All accounts may also have a limited number of sub-accounts which may be specified by the owner;
+//! by definition, these have equivalent ownership and each has an individual name.
+//!
+//! The number of registrars should be limited, and the deposit made sufficiently large, to ensure
+//! no state-bloat attack is viable.
+//!
+//! ## Interface
+//!
+//! ### Dispatchable Functions
+//!
+//! #### For general users
+//! * `set_identity` - Set the associated identity of an account; a small deposit is reserved if not
+//! already taken.
+//! * `clear_identity` - Remove an account's associated identity; the deposit is returned.
+//! * `request_judgement` - Request a judgement from a registrar, paying a fee.
+//! * `cancel_request` - Cancel the previous request for a judgement.
+//!
+//! #### For general users with sub-identities
+//! * `set_subs` - Set the sub-accounts of an identity.
+//! * `add_sub` - Add a sub-identity to an identity.
+//! * `remove_sub` - Remove a sub-identity of an identity.
+//! * `rename_sub` - Rename a sub-identity of an identity.
+//! * `quit_sub` - Remove a sub-identity of an identity (called by the sub-identity).
+//!
+//! #### For registrars
+//! * `set_fee` - Set the fee required to be paid for a judgement to be given by the registrar.
+//! * `set_fields` - Set the fields that a registrar cares about in their judgements.
+//! * `provide_judgement` - Provide a judgement to an identity.
+//!
+//! #### For super-users
+//! * `add_registrar` - Add a new registrar to the system.
+//! * `kill_identity` - Forcibly remove the associated identity; the deposit is lost.
+//!
+//! [`Call`]: ./enum.Call.html
+//! [`Config`]: ./trait.Config.html
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+mod benchmarking;
+#[cfg(test)]
+mod tests;
+mod types;
+pub mod weights;
+
+use frame_support::traits::{BalanceStatus, Currency, OnUnbalanced, ReservableCurrency};
+use sp_runtime::traits::{AppendZerosInput, Hash, Saturating, StaticLookup, Zero};
+use sp_std::prelude::*;
+pub use weights::WeightInfo;
+
+pub use pallet::*;
+pub use types::{
+ Data, IdentityField, IdentityFields, IdentityInfo, Judgement, RegistrarIndex, RegistrarInfo,
+ Registration,
+};
+
+pub type BalanceOf<T> =
+ <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;
+type NegativeImbalanceOf<T> = <<T as Config>::Currency as Currency<
+ <T as frame_system::Config>::AccountId,
+>>::NegativeImbalance;
+type AccountIdLookupOf<T> = <<T as frame_system::Config>::Lookup as StaticLookup>::Source;
+
+#[frame_support::pallet]
+pub mod pallet {
+ use super::*;
+ use frame_support::pallet_prelude::*;
+ use frame_system::pallet_prelude::*;
+
+ #[pallet::config]
+ pub trait Config: frame_system::Config {
+ /// The overarching event type.
+ type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
+
+ /// The currency trait.
+ type Currency: ReservableCurrency<Self::AccountId>;
+
+ /// The amount held on deposit for a registered identity
+ #[pallet::constant]
+ type BasicDeposit: Get<BalanceOf<Self>>;
+
+ /// The amount held on deposit per additional field for a registered identity.
+ #[pallet::constant]
+ type FieldDeposit: Get<BalanceOf<Self>>;
+
+ /// The amount held on deposit for a registered subaccount. This should account for the fact
+ /// that one storage item's value will increase by the size of an account ID, and there will
+ /// be another trie item whose value is the size of an account ID plus 32 bytes.
+ #[pallet::constant]
+ type SubAccountDeposit: Get<BalanceOf<Self>>;
+
+ /// The maximum number of sub-accounts allowed per identified account.
+ #[pallet::constant]
+ type MaxSubAccounts: Get<u32>;
+
+ /// Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O
+ /// required to access an identity, but can be pretty high.
+ #[pallet::constant]
+ type MaxAdditionalFields: Get<u32>;
+
+ /// Maxmimum number of registrars allowed in the system. Needed to bound the complexity
+ /// of, e.g., updating judgements.
+ #[pallet::constant]
+ type MaxRegistrars: Get<u32>;
+
+ /// What to do with slashed funds.
+ type Slashed: OnUnbalanced<NegativeImbalanceOf<Self>>;
+
+ /// The origin which may forcibly set or remove a name. Root can always do this.
+ type ForceOrigin: EnsureOrigin<Self::RuntimeOrigin>;
+
+ /// The origin which may add or remove registrars. Root can always do this.
+ type RegistrarOrigin: EnsureOrigin<Self::RuntimeOrigin>;
+
+ /// Weight information for extrinsics in this pallet.
+ type WeightInfo: WeightInfo;
+ }
+
+ #[pallet::pallet]
+ #[pallet::generate_store(pub(super) trait Store)]
+ pub struct Pallet<T>(_);
+
+ /// Information that is pertinent to identify the entity behind an account.
+ ///
+ /// TWOX-NOTE: OK ― `AccountId` is a secure hash.
+ #[pallet::storage]
+ #[pallet::getter(fn identity)]
+ pub(super) type IdentityOf<T: Config> = StorageMap<
+ _,
+ Twox64Concat,
+ T::AccountId,
+ Registration<BalanceOf<T>, T::MaxRegistrars, T::MaxAdditionalFields>,
+ OptionQuery,
+ >;
+
+ /// The super-identity of an alternative "sub" identity together with its name, within that
+ /// context. If the account is not some other account's sub-identity, then just `None`.
+ #[pallet::storage]
+ #[pallet::getter(fn super_of)]
+ pub(super) type SuperOf<T: Config> =
+ StorageMap<_, Blake2_128Concat, T::AccountId, (T::AccountId, Data), OptionQuery>;
+
+ /// Alternative "sub" identities of this account.
+ ///
+ /// The first item is the deposit, the second is a vector of the accounts.
+ ///
+ /// TWOX-NOTE: OK ― `AccountId` is a secure hash.
+ #[pallet::storage]
+ #[pallet::getter(fn subs_of)]
+ pub(super) type SubsOf<T: Config> = StorageMap<
+ _,
+ Twox64Concat,
+ T::AccountId,
+ (BalanceOf<T>, BoundedVec<T::AccountId, T::MaxSubAccounts>),
+ ValueQuery,
+ >;
+
+ /// The set of registrars. Not expected to get very big as can only be added through a
+ /// special origin (likely a council motion).
+ ///
+ /// The index into this can be cast to `RegistrarIndex` to get a valid value.
+ #[pallet::storage]
+ #[pallet::getter(fn registrars)]
+ pub(super) type Registrars<T: Config> = StorageValue<
+ _,
+ BoundedVec<Option<RegistrarInfo<BalanceOf<T>, T::AccountId>>, T::MaxRegistrars>,
+ ValueQuery,
+ >;
+
+ #[pallet::error]
+ pub enum Error<T> {
+ /// Too many subs-accounts.
+ TooManySubAccounts,
+ /// Account isn't found.
+ NotFound,
+ /// Account isn't named.
+ NotNamed,
+ /// Empty index.
+ EmptyIndex,
+ /// Fee is changed.
+ FeeChanged,
+ /// No identity found.
+ NoIdentity,
+ /// Sticky judgement.
+ StickyJudgement,
+ /// Judgement given.
+ JudgementGiven,
+ /// Invalid judgement.
+ InvalidJudgement,
+ /// The index is invalid.
+ InvalidIndex,
+ /// The target is invalid.
+ InvalidTarget,
+ /// Too many additional fields.
+ TooManyFields,
+ /// Maximum amount of registrars reached. Cannot add any more.
+ TooManyRegistrars,
+ /// Account ID is already named.
+ AlreadyClaimed,
+ /// Sender is not a sub-account.
+ NotSub,
+ /// Sub-account isn't owned by sender.
+ NotOwned,
+ /// The provided judgement was for a different identity.
+ JudgementForDifferentIdentity,
+ /// Error that occurs when there is an issue paying for judgement.
+ JudgementPaymentFailed,
+ }
+
+ #[pallet::event]
+ #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ pub enum Event<T: Config> {
+ /// A name was set or reset (which will remove all judgements).
+ IdentitySet { who: T::AccountId },
+ /// A name was cleared, and the given balance returned.
+ IdentityCleared {
+ who: T::AccountId,
+ deposit: BalanceOf<T>,
+ },
+ /// A name was removed and the given balance slashed.
+ IdentityKilled {
+ who: T::AccountId,
+ deposit: BalanceOf<T>,
+ },
+ /// A number of identities and associated info were forcibly inserted.
+ IdentitiesInserted { amount: u32 },
+ /// A number of identities and all associated info were forcibly removed.
+ IdentitiesRemoved { amount: u32 },
+ /// A judgement was asked from a registrar.
+ JudgementRequested {
+ who: T::AccountId,
+ registrar_index: RegistrarIndex,
+ },
+ /// A judgement request was retracted.
+ JudgementUnrequested {
+ who: T::AccountId,
+ registrar_index: RegistrarIndex,
+ },
+ /// A judgement was given by a registrar.
+ JudgementGiven {
+ target: T::AccountId,
+ registrar_index: RegistrarIndex,
+ },
+ /// A registrar was added.
+ RegistrarAdded { registrar_index: RegistrarIndex },
+ /// A sub-identity was added to an identity and the deposit paid.
+ SubIdentityAdded {
+ sub: T::AccountId,
+ main: T::AccountId,
+ deposit: BalanceOf<T>,
+ },
+ /// A sub-identity was removed from an identity and the deposit freed.
+ SubIdentityRemoved {
+ sub: T::AccountId,
+ main: T::AccountId,
+ deposit: BalanceOf<T>,
+ },
+ /// A sub-identity was cleared, and the given deposit repatriated from the
+ /// main identity account to the sub-identity account.
+ SubIdentityRevoked {
+ sub: T::AccountId,
+ main: T::AccountId,
+ deposit: BalanceOf<T>,
+ },
+ }
+
+ #[pallet::call]
+ /// Identity pallet declaration.
+ impl<T: Config> Pallet<T> {
+ /// Add a registrar to the system.
+ ///
+ /// The dispatch origin for this call must be `T::RegistrarOrigin`.
+ ///
+ /// - `account`: the account of the registrar.
+ ///
+ /// Emits `RegistrarAdded` if successful.
+ ///
+ /// # <weight>
+ /// - `O(R)` where `R` registrar-count (governance-bounded and code-bounded).
+ /// - One storage mutation (codec `O(R)`).
+ /// - One event.
+ /// # </weight>
+ #[pallet::call_index(0)]
+ #[pallet::weight(T::WeightInfo::add_registrar(T::MaxRegistrars::get()))]
+ pub fn add_registrar(
+ origin: OriginFor<T>,
+ account: AccountIdLookupOf<T>,
+ ) -> DispatchResultWithPostInfo {
+ T::RegistrarOrigin::ensure_origin(origin)?;
+ let account = T::Lookup::lookup(account)?;
+
+ let (i, registrar_count) = <Registrars<T>>::try_mutate(
+ |registrars| -> Result<(RegistrarIndex, usize), DispatchError> {
+ registrars
+ .try_push(Some(RegistrarInfo {
+ account,
+ fee: Zero::zero(),
+ fields: Default::default(),
+ }))
+ .map_err(|_| Error::<T>::TooManyRegistrars)?;
+ Ok(((registrars.len() - 1) as RegistrarIndex, registrars.len()))
+ },
+ )?;
+
+ Self::deposit_event(Event::RegistrarAdded { registrar_index: i });
+
+ Ok(Some(T::WeightInfo::add_registrar(registrar_count as u32)).into())
+ }
+
+ /// Set an account's identity information and reserve the appropriate deposit.
+ ///
+ /// If the account already has identity information, the deposit is taken as part payment
+ /// for the new deposit.
+ ///
+ /// The dispatch origin for this call must be _Signed_.
+ ///
+ /// - `info`: The identity information.
+ ///
+ /// Emits `IdentitySet` if successful.
+ ///
+ /// # <weight>
+ /// - `O(X + X' + R)`
+ /// - where `X` additional-field-count (deposit-bounded and code-bounded)
+ /// - where `R` judgements-count (registrar-count-bounded)
+ /// - One balance reserve operation.
+ /// - One storage mutation (codec-read `O(X' + R)`, codec-write `O(X + R)`).
+ /// - One event.
+ /// # </weight>
+ #[pallet::call_index(1)]
+ #[pallet::weight( T::WeightInfo::set_identity(
+ T::MaxRegistrars::get(), // R
+ T::MaxAdditionalFields::get(), // X
+ ))]
+ pub fn set_identity(
+ origin: OriginFor<T>,
+ info: Box<IdentityInfo<T::MaxAdditionalFields>>,
+ ) -> DispatchResultWithPostInfo {
+ let sender = ensure_signed(origin)?;
+ let extra_fields = info.additional.len() as u32;
+ ensure!(
+ extra_fields <= T::MaxAdditionalFields::get(),
+ Error::<T>::TooManyFields
+ );
+ let fd = <BalanceOf<T>>::from(extra_fields) * T::FieldDeposit::get();
+
+ let mut id = match <IdentityOf<T>>::get(&sender) {
+ Some(mut id) => {
+ // Only keep non-positive judgements.
+ id.judgements.retain(|j| j.1.is_sticky());
+ id.info = *info;
+ id
+ }
+ None => Registration {
+ info: *info,
+ judgements: BoundedVec::default(),
+ deposit: Zero::zero(),
+ },
+ };
+
+ let old_deposit = id.deposit;
+ id.deposit = T::BasicDeposit::get() + fd;
+ if id.deposit > old_deposit {
+ T::Currency::reserve(&sender, id.deposit - old_deposit)?;
+ }
+ if old_deposit > id.deposit {
+ let err_amount = T::Currency::unreserve(&sender, old_deposit - id.deposit);
+ debug_assert!(err_amount.is_zero());
+ }
+
+ let judgements = id.judgements.len();
+ <IdentityOf<T>>::insert(&sender, id);
+ Self::deposit_event(Event::IdentitySet { who: sender });
+
+ Ok(Some(T::WeightInfo::set_identity(
+ judgements as u32, // R
+ extra_fields, // X
+ ))
+ .into())
+ }
+
+ /// Set the sub-accounts of the sender.
+ ///
+ /// Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned
+ /// and an amount `SubAccountDeposit` will be reserved for each item in `subs`.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a registered
+ /// identity.
+ ///
+ /// - `subs`: The identity's (new) sub-accounts.
+ ///
+ /// # <weight>
+ /// - `O(P + S)`
+ /// - where `P` old-subs-count (hard- and deposit-bounded).
+ /// - where `S` subs-count (hard- and deposit-bounded).
+ /// - At most one balance operations.
+ /// - DB:
+ /// - `P + S` storage mutations (codec complexity `O(1)`)
+ /// - One storage read (codec complexity `O(P)`).
+ /// - One storage write (codec complexity `O(S)`).
+ /// - One storage-exists (`IdentityOf::contains_key`).
+ /// # </weight>
+ // TODO: This whole extrinsic screams "not optimized". For example we could
+ // filter any overlap between new and old subs, and avoid reading/writing
+ // to those values... We could also ideally avoid needing to write to
+ // N storage items for N sub accounts. Right now the weight on this function
+ // is a large overestimate due to the fact that it could potentially write
+ // to 2 x T::MaxSubAccounts::get().
+ #[pallet::call_index(2)]
+ #[pallet::weight(T::WeightInfo::set_subs_old(T::MaxSubAccounts::get()) // P: Assume max sub accounts removed.
+ .saturating_add(T::WeightInfo::set_subs_new(subs.len() as u32)) // S: Assume all subs are new.
+ )]
+ pub fn set_subs(
+ origin: OriginFor<T>,
+ subs: Vec<(T::AccountId, Data)>,
+ ) -> DispatchResultWithPostInfo {
+ let sender = ensure_signed(origin)?;
+ ensure!(<IdentityOf<T>>::contains_key(&sender), Error::<T>::NotFound);
+ ensure!(
+ subs.len() <= T::MaxSubAccounts::get() as usize,
+ Error::<T>::TooManySubAccounts
+ );
+
+ let (old_deposit, old_ids) = <SubsOf<T>>::get(&sender);
+ let new_deposit = T::SubAccountDeposit::get() * <BalanceOf<T>>::from(subs.len() as u32);
+
+ let not_other_sub = subs
+ .iter()
+ .filter_map(|i| SuperOf::<T>::get(&i.0))
+ .all(|i| i.0 == sender);
+ ensure!(not_other_sub, Error::<T>::AlreadyClaimed);
+
+ if old_deposit < new_deposit {
+ T::Currency::reserve(&sender, new_deposit - old_deposit)?;
+ } else if old_deposit > new_deposit {
+ let err_amount = T::Currency::unreserve(&sender, old_deposit - new_deposit);
+ debug_assert!(err_amount.is_zero());
+ }
+ // do nothing if they're equal.
+
+ for s in old_ids.iter() {
+ <SuperOf<T>>::remove(s);
+ }
+ let mut ids = BoundedVec::<T::AccountId, T::MaxSubAccounts>::default();
+ for (id, name) in subs {
+ <SuperOf<T>>::insert(&id, (sender.clone(), name));
+ ids.try_push(id)
+ .expect("subs length is less than T::MaxSubAccounts; qed");
+ }
+ let new_subs = ids.len();
+
+ if ids.is_empty() {
+ <SubsOf<T>>::remove(&sender);
+ } else {
+ <SubsOf<T>>::insert(&sender, (new_deposit, ids));
+ }
+
+ Ok(Some(
+ T::WeightInfo::set_subs_old(old_ids.len() as u32) // P: Real number of old accounts removed.
+ // S: New subs added
+ .saturating_add(T::WeightInfo::set_subs_new(new_subs as u32)),
+ )
+ .into())
+ }
+
+ /// Clear an account's identity info and all sub-accounts and return all deposits.
+ ///
+ /// Payment: All reserved balances on the account are returned.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a registered
+ /// identity.
+ ///
+ /// Emits `IdentityCleared` if successful.
+ ///
+ /// # <weight>
+ /// - `O(R + S + X)`
+ /// - where `R` registrar-count (governance-bounded).
+ /// - where `S` subs-count (hard- and deposit-bounded).
+ /// - where `X` additional-field-count (deposit-bounded and code-bounded).
+ /// - One balance-unreserve operation.
+ /// - `2` storage reads and `S + 2` storage deletions.
+ /// - One event.
+ /// # </weight>
+ #[pallet::call_index(3)]
+ #[pallet::weight(T::WeightInfo::clear_identity(
+ T::MaxRegistrars::get(), // R
+ T::MaxSubAccounts::get(), // S
+ T::MaxAdditionalFields::get(), // X
+ ))]
+ pub fn clear_identity(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
+ let sender = ensure_signed(origin)?;
+
+ let (subs_deposit, sub_ids) = <SubsOf<T>>::take(&sender);
+ let id = <IdentityOf<T>>::take(&sender).ok_or(Error::<T>::NotNamed)?;
+ let deposit = id.total_deposit() + subs_deposit;
+ for sub in sub_ids.iter() {
+ <SuperOf<T>>::remove(sub);
+ }
+
+ let err_amount = T::Currency::unreserve(&sender, deposit);
+ debug_assert!(err_amount.is_zero());
+
+ Self::deposit_event(Event::IdentityCleared {
+ who: sender,
+ deposit,
+ });
+
+ Ok(Some(T::WeightInfo::clear_identity(
+ id.judgements.len() as u32, // R
+ sub_ids.len() as u32, // S
+ id.info.additional.len() as u32, // X
+ ))
+ .into())
+ }
+
+ /// Request a judgement from a registrar.
+ ///
+ /// Payment: At most `max_fee` will be reserved for payment to the registrar if judgement
+ /// given.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a
+ /// registered identity.
+ ///
+ /// - `reg_index`: The index of the registrar whose judgement is requested.
+ /// - `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:
+ ///
+ /// ```nocompile
+ /// Self::registrars().get(reg_index).unwrap().fee
+ /// ```
+ ///
+ /// Emits `JudgementRequested` if successful.
+ ///
+ /// # <weight>
+ /// - `O(R + X)`.
+ /// - One balance-reserve operation.
+ /// - Storage: 1 read `O(R)`, 1 mutate `O(X + R)`.
+ /// - One event.
+ /// # </weight>
+ #[pallet::call_index(4)]
+ #[pallet::weight(T::WeightInfo::request_judgement(
+ T::MaxRegistrars::get(), // R
+ T::MaxAdditionalFields::get(), // X
+ ))]
+ pub fn request_judgement(
+ origin: OriginFor<T>,
+ #[pallet::compact] reg_index: RegistrarIndex,
+ #[pallet::compact] max_fee: BalanceOf<T>,
+ ) -> DispatchResultWithPostInfo {
+ let sender = ensure_signed(origin)?;
+ let registrars = <Registrars<T>>::get();
+ let registrar = registrars
+ .get(reg_index as usize)
+ .and_then(Option::as_ref)
+ .ok_or(Error::<T>::EmptyIndex)?;
+ ensure!(max_fee >= registrar.fee, Error::<T>::FeeChanged);
+ let mut id = <IdentityOf<T>>::get(&sender).ok_or(Error::<T>::NoIdentity)?;
+
+ let item = (reg_index, Judgement::FeePaid(registrar.fee));
+ match id.judgements.binary_search_by_key(®_index, |x| x.0) {
+ Ok(i) => {
+ if id.judgements[i].1.is_sticky() {
+ return Err(Error::<T>::StickyJudgement.into());
+ } else {
+ id.judgements[i] = item
+ }
+ }
+ Err(i) => id
+ .judgements
+ .try_insert(i, item)
+ .map_err(|_| Error::<T>::TooManyRegistrars)?,
+ }
+
+ T::Currency::reserve(&sender, registrar.fee)?;
+
+ let judgements = id.judgements.len();
+ let extra_fields = id.info.additional.len();
+ <IdentityOf<T>>::insert(&sender, id);
+
+ Self::deposit_event(Event::JudgementRequested {
+ who: sender,
+ registrar_index: reg_index,
+ });
+
+ Ok(Some(T::WeightInfo::request_judgement(
+ judgements as u32,
+ extra_fields as u32,
+ ))
+ .into())
+ }
+
+ /// Cancel a previous request.
+ ///
+ /// Payment: A previously reserved deposit is returned on success.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a
+ /// registered identity.
+ ///
+ /// - `reg_index`: The index of the registrar whose judgement is no longer requested.
+ ///
+ /// Emits `JudgementUnrequested` if successful.
+ ///
+ /// # <weight>
+ /// - `O(R + X)`.
+ /// - One balance-reserve operation.
+ /// - One storage mutation `O(R + X)`.
+ /// - One event
+ /// # </weight>
+ #[pallet::call_index(5)]
+ #[pallet::weight(T::WeightInfo::cancel_request(
+ T::MaxRegistrars::get(), // R
+ T::MaxAdditionalFields::get(), // X
+ ))]
+ pub fn cancel_request(
+ origin: OriginFor<T>,
+ reg_index: RegistrarIndex,
+ ) -> DispatchResultWithPostInfo {
+ let sender = ensure_signed(origin)?;
+ let mut id = <IdentityOf<T>>::get(&sender).ok_or(Error::<T>::NoIdentity)?;
+
+ let pos = id
+ .judgements
+ .binary_search_by_key(®_index, |x| x.0)
+ .map_err(|_| Error::<T>::NotFound)?;
+ let fee = if let Judgement::FeePaid(fee) = id.judgements.remove(pos).1 {
+ fee
+ } else {
+ return Err(Error::<T>::JudgementGiven.into());
+ };
+
+ let err_amount = T::Currency::unreserve(&sender, fee);
+ debug_assert!(err_amount.is_zero());
+ let judgements = id.judgements.len();
+ let extra_fields = id.info.additional.len();
+ <IdentityOf<T>>::insert(&sender, id);
+
+ Self::deposit_event(Event::JudgementUnrequested {
+ who: sender,
+ registrar_index: reg_index,
+ });
+
+ Ok(Some(T::WeightInfo::cancel_request(
+ judgements as u32,
+ extra_fields as u32,
+ ))
+ .into())
+ }
+
+ /// Set the fee required for a judgement to be requested from a registrar.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must be the account
+ /// of the registrar whose index is `index`.
+ ///
+ /// - `index`: the index of the registrar whose fee is to be set.
+ /// - `fee`: the new fee.
+ ///
+ /// # <weight>
+ /// - `O(R)`.
+ /// - One storage mutation `O(R)`.
+ /// - Benchmark: 7.315 + R * 0.329 µs (min squares analysis)
+ /// # </weight>
+ #[pallet::call_index(6)]
+ #[pallet::weight(T::WeightInfo::set_fee(T::MaxRegistrars::get()))] // R
+ pub fn set_fee(
+ origin: OriginFor<T>,
+ #[pallet::compact] index: RegistrarIndex,
+ #[pallet::compact] fee: BalanceOf<T>,
+ ) -> DispatchResultWithPostInfo {
+ let who = ensure_signed(origin)?;
+
+ let registrars = <Registrars<T>>::mutate(|rs| -> Result<usize, DispatchError> {
+ rs.get_mut(index as usize)
+ .and_then(|x| x.as_mut())
+ .and_then(|r| {
+ if r.account == who {
+ r.fee = fee;
+ Some(())
+ } else {
+ None
+ }
+ })
+ .ok_or_else(|| DispatchError::from(Error::<T>::InvalidIndex))?;
+ Ok(rs.len())
+ })?;
+ Ok(Some(T::WeightInfo::set_fee(registrars as u32)).into()) // R
+ }
+
+ /// Change the account associated with a registrar.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must be the account
+ /// of the registrar whose index is `index`.
+ ///
+ /// - `index`: the index of the registrar whose fee is to be set.
+ /// - `new`: the new account ID.
+ ///
+ /// # <weight>
+ /// - `O(R)`.
+ /// - One storage mutation `O(R)`.
+ /// - Benchmark: 8.823 + R * 0.32 µs (min squares analysis)
+ /// # </weight>
+ #[pallet::call_index(7)]
+ #[pallet::weight(T::WeightInfo::set_account_id(T::MaxRegistrars::get()))] // R
+ pub fn set_account_id(
+ origin: OriginFor<T>,
+ #[pallet::compact] index: RegistrarIndex,
+ new: AccountIdLookupOf<T>,
+ ) -> DispatchResultWithPostInfo {
+ let who = ensure_signed(origin)?;
+ let new = T::Lookup::lookup(new)?;
+
+ let registrars = <Registrars<T>>::mutate(|rs| -> Result<usize, DispatchError> {
+ rs.get_mut(index as usize)
+ .and_then(|x| x.as_mut())
+ .and_then(|r| {
+ if r.account == who {
+ r.account = new;
+ Some(())
+ } else {
+ None
+ }
+ })
+ .ok_or_else(|| DispatchError::from(Error::<T>::InvalidIndex))?;
+ Ok(rs.len())
+ })?;
+ Ok(Some(T::WeightInfo::set_account_id(registrars as u32)).into()) // R
+ }
+
+ /// Set the field information for a registrar.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must be the account
+ /// of the registrar whose index is `index`.
+ ///
+ /// - `index`: the index of the registrar whose fee is to be set.
+ /// - `fields`: the fields that the registrar concerns themselves with.
+ ///
+ /// # <weight>
+ /// - `O(R)`.
+ /// - One storage mutation `O(R)`.
+ /// - Benchmark: 7.464 + R * 0.325 µs (min squares analysis)
+ /// # </weight>
+ #[pallet::call_index(8)]
+ #[pallet::weight(T::WeightInfo::set_fields(T::MaxRegistrars::get()))] // R
+ pub fn set_fields(
+ origin: OriginFor<T>,
+ #[pallet::compact] index: RegistrarIndex,
+ fields: IdentityFields,
+ ) -> DispatchResultWithPostInfo {
+ let who = ensure_signed(origin)?;
+
+ let registrars = <Registrars<T>>::mutate(|rs| -> Result<usize, DispatchError> {
+ rs.get_mut(index as usize)
+ .and_then(|x| x.as_mut())
+ .and_then(|r| {
+ if r.account == who {
+ r.fields = fields;
+ Some(())
+ } else {
+ None
+ }
+ })
+ .ok_or_else(|| DispatchError::from(Error::<T>::InvalidIndex))?;
+ Ok(rs.len())
+ })?;
+ Ok(Some(T::WeightInfo::set_fields(
+ registrars as u32, // R
+ ))
+ .into())
+ }
+
+ /// Provide a judgement for an account's identity.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must be the account
+ /// of the registrar whose index is `reg_index`.
+ ///
+ /// - `reg_index`: the index of the registrar whose judgement is being made.
+ /// - `target`: the account whose identity the judgement is upon. This must be an account
+ /// with a registered identity.
+ /// - `judgement`: the judgement of the registrar of index `reg_index` about `target`.
+ /// - `identity`: The hash of the [`IdentityInfo`] for that the judgement is provided.
+ ///
+ /// Emits `JudgementGiven` if successful.
+ ///
+ /// # <weight>
+ /// - `O(R + X)`.
+ /// - One balance-transfer operation.
+ /// - Up to one account-lookup operation.
+ /// - Storage: 1 read `O(R)`, 1 mutate `O(R + X)`.
+ /// - One event.
+ /// # </weight>
+ #[pallet::call_index(9)]
+ #[pallet::weight(T::WeightInfo::provide_judgement(
+ T::MaxRegistrars::get(), // R
+ T::MaxAdditionalFields::get(), // X
+ ))]
+ pub fn provide_judgement(
+ origin: OriginFor<T>,
+ #[pallet::compact] reg_index: RegistrarIndex,
+ target: AccountIdLookupOf<T>,
+ judgement: Judgement<BalanceOf<T>>,
+ identity: T::Hash,
+ ) -> DispatchResultWithPostInfo {
+ let sender = ensure_signed(origin)?;
+ let target = T::Lookup::lookup(target)?;
+ ensure!(!judgement.has_deposit(), Error::<T>::InvalidJudgement);
+ <Registrars<T>>::get()
+ .get(reg_index as usize)
+ .and_then(Option::as_ref)
+ .filter(|r| r.account == sender)
+ .ok_or(Error::<T>::InvalidIndex)?;
+ let mut id = <IdentityOf<T>>::get(&target).ok_or(Error::<T>::InvalidTarget)?;
+
+ if T::Hashing::hash_of(&id.info) != identity {
+ return Err(Error::<T>::JudgementForDifferentIdentity.into());
+ }
+
+ let item = (reg_index, judgement);
+ match id.judgements.binary_search_by_key(®_index, |x| x.0) {
+ Ok(position) => {
+ if let Judgement::FeePaid(fee) = id.judgements[position].1 {
+ T::Currency::repatriate_reserved(
+ &target,
+ &sender,
+ fee,
+ BalanceStatus::Free,
+ )
+ .map_err(|_| Error::<T>::JudgementPaymentFailed)?;
+ }
+ id.judgements[position] = item
+ }
+ Err(position) => id
+ .judgements
+ .try_insert(position, item)
+ .map_err(|_| Error::<T>::TooManyRegistrars)?,
+ }
+
+ let judgements = id.judgements.len();
+ let extra_fields = id.info.additional.len();
+ <IdentityOf<T>>::insert(&target, id);
+ Self::deposit_event(Event::JudgementGiven {
+ target,
+ registrar_index: reg_index,
+ });
+
+ Ok(Some(T::WeightInfo::provide_judgement(
+ judgements as u32,
+ extra_fields as u32,
+ ))
+ .into())
+ }
+
+ /// Remove an account's identity and sub-account information and slash the deposits.
+ ///
+ /// Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by
+ /// `Slash`. Verification request deposits are not returned; they should be cancelled
+ /// manually using `cancel_request`.
+ ///
+ /// The dispatch origin for this call must match `T::ForceOrigin`.
+ ///
+ /// - `target`: the account whose identity the judgement is upon. This must be an account
+ /// with a registered identity.
+ ///
+ /// Emits `IdentityKilled` if successful.
+ ///
+ /// # <weight>
+ /// - `O(R + S + X)`.
+ /// - One balance-reserve operation.
+ /// - `S + 2` storage mutations.
+ /// - One event.
+ /// # </weight>
+ #[pallet::call_index(10)]
+ #[pallet::weight(T::WeightInfo::kill_identity(
+ T::MaxRegistrars::get(), // R
+ T::MaxSubAccounts::get(), // S
+ T::MaxAdditionalFields::get(), // X
+ ))]
+ pub fn kill_identity(
+ origin: OriginFor<T>,
+ target: AccountIdLookupOf<T>,
+ ) -> DispatchResultWithPostInfo {
+ T::ForceOrigin::ensure_origin(origin)?;
+
+ // Figure out who we're meant to be clearing.
+ let target = T::Lookup::lookup(target)?;
+ // Grab their deposit (and check that they have one).
+ let (subs_deposit, sub_ids) = <SubsOf<T>>::take(&target);
+ let id = <IdentityOf<T>>::take(&target).ok_or(Error::<T>::NotNamed)?;
+ let deposit = id.total_deposit() + subs_deposit;
+ for sub in sub_ids.iter() {
+ <SuperOf<T>>::remove(sub);
+ }
+ // Slash their deposit from them.
+ T::Slashed::on_unbalanced(T::Currency::slash_reserved(&target, deposit).0);
+
+ Self::deposit_event(Event::IdentityKilled {
+ who: target,
+ deposit,
+ });
+
+ Ok(Some(T::WeightInfo::kill_identity(
+ id.judgements.len() as u32, // R
+ sub_ids.len() as u32, // S
+ id.info.additional.len() as u32, // X
+ ))
+ .into())
+ }
+
+ /// Add the given account to the sender's subs.
+ ///
+ /// Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated
+ /// to the sender.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a registered
+ /// sub identity of `sub`.
+ #[pallet::call_index(11)]
+ #[pallet::weight(T::WeightInfo::add_sub(T::MaxSubAccounts::get()))]
+ pub fn add_sub(
+ origin: OriginFor<T>,
+ sub: AccountIdLookupOf<T>,
+ data: Data,
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ let sub = T::Lookup::lookup(sub)?;
+ ensure!(
+ IdentityOf::<T>::contains_key(&sender),
+ Error::<T>::NoIdentity
+ );
+
+ // Check if it's already claimed as sub-identity.
+ ensure!(
+ !SuperOf::<T>::contains_key(&sub),
+ Error::<T>::AlreadyClaimed
+ );
+
+ SubsOf::<T>::try_mutate(&sender, |(ref mut subs_deposit, ref mut sub_ids)| {
+ // Ensure there is space and that the deposit is paid.
+ ensure!(
+ sub_ids.len() < T::MaxSubAccounts::get() as usize,
+ Error::<T>::TooManySubAccounts
+ );
+ let deposit = T::SubAccountDeposit::get();
+ T::Currency::reserve(&sender, deposit)?;
+
+ SuperOf::<T>::insert(&sub, (sender.clone(), data));
+ sub_ids
+ .try_push(sub.clone())
+ .expect("sub ids length checked above; qed");
+ *subs_deposit = subs_deposit.saturating_add(deposit);
+
+ Self::deposit_event(Event::SubIdentityAdded {
+ sub,
+ main: sender.clone(),
+ deposit,
+ });
+ Ok(())
+ })
+ }
+
+ /// Alter the associated name of the given sub-account.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a registered
+ /// sub identity of `sub`.
+ #[pallet::call_index(12)]
+ #[pallet::weight(T::WeightInfo::rename_sub(T::MaxSubAccounts::get()))]
+ pub fn rename_sub(
+ origin: OriginFor<T>,
+ sub: AccountIdLookupOf<T>,
+ data: Data,
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ let sub = T::Lookup::lookup(sub)?;
+ ensure!(
+ IdentityOf::<T>::contains_key(&sender),
+ Error::<T>::NoIdentity
+ );
+ ensure!(
+ SuperOf::<T>::get(&sub).map_or(false, |x| x.0 == sender),
+ Error::<T>::NotOwned
+ );
+ SuperOf::<T>::insert(&sub, (sender, data));
+ Ok(())
+ }
+
+ /// Remove the given account from the sender's subs.
+ ///
+ /// Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated
+ /// to the sender.
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a registered
+ /// sub identity of `sub`.
+ #[pallet::call_index(13)]
+ #[pallet::weight(T::WeightInfo::remove_sub(T::MaxSubAccounts::get()))]
+ pub fn remove_sub(origin: OriginFor<T>, sub: AccountIdLookupOf<T>) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ ensure!(
+ IdentityOf::<T>::contains_key(&sender),
+ Error::<T>::NoIdentity
+ );
+ let sub = T::Lookup::lookup(sub)?;
+ let (sup, _) = SuperOf::<T>::get(&sub).ok_or(Error::<T>::NotSub)?;
+ ensure!(sup == sender, Error::<T>::NotOwned);
+ SuperOf::<T>::remove(&sub);
+ SubsOf::<T>::mutate(&sup, |(ref mut subs_deposit, ref mut sub_ids)| {
+ sub_ids.retain(|x| x != &sub);
+ let deposit = T::SubAccountDeposit::get().min(*subs_deposit);
+ *subs_deposit -= deposit;
+ let err_amount = T::Currency::unreserve(&sender, deposit);
+ debug_assert!(err_amount.is_zero());
+ Self::deposit_event(Event::SubIdentityRemoved {
+ sub,
+ main: sender,
+ deposit,
+ });
+ });
+ Ok(())
+ }
+
+ /// Remove the sender as a sub-account.
+ ///
+ /// Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated
+ /// to the sender (*not* the original depositor).
+ ///
+ /// The dispatch origin for this call must be _Signed_ and the sender must have a registered
+ /// super-identity.
+ ///
+ /// NOTE: This should not normally be used, but is provided in the case that the non-
+ /// controller of an account is maliciously registered as a sub-account.
+ #[pallet::call_index(14)]
+ #[pallet::weight(T::WeightInfo::quit_sub(T::MaxSubAccounts::get()))]
+ pub fn quit_sub(origin: OriginFor<T>) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ let (sup, _) = SuperOf::<T>::take(&sender).ok_or(Error::<T>::NotSub)?;
+ SubsOf::<T>::mutate(&sup, |(ref mut subs_deposit, ref mut sub_ids)| {
+ sub_ids.retain(|x| x != &sender);
+ let deposit = T::SubAccountDeposit::get().min(*subs_deposit);
+ *subs_deposit -= deposit;
+ let _ =
+ T::Currency::repatriate_reserved(&sup, &sender, deposit, BalanceStatus::Free);
+ Self::deposit_event(Event::SubIdentityRevoked {
+ sub: sender,
+ main: sup.clone(),
+ deposit,
+ });
+ });
+ Ok(())
+ }
+
+ /// Set identities to be associated with the provided accounts as force origin.
+ ///
+ /// This is not meant to operate in tandem with the identity pallet as is,
+ /// and be instead used to keep identities made and verified externally,
+ /// forbidden from interacting with an ordinary user, since it ignores any safety mechanism.
+ #[pallet::call_index(15)]
+ #[pallet::weight(T::WeightInfo::force_insert_identities(
+ T::MaxAdditionalFields::get(), // X
+ identities.len() as u32, // N
+ ))]
+ pub fn force_insert_identities(
+ origin: OriginFor<T>,
+ identities: Vec<(
+ T::AccountId,
+ Registration<BalanceOf<T>, T::MaxRegistrars, T::MaxAdditionalFields>,
+ )>,
+ ) -> DispatchResult {
+ T::ForceOrigin::ensure_origin(origin)?;
+ for identity in identities.clone() {
+ IdentityOf::<T>::insert(identity.0, identity.1);
+ }
+ Self::deposit_event(Event::IdentitiesInserted {
+ amount: identities.len() as u32,
+ });
+ Ok(())
+ }
+
+ /// Remove identities associated with the provided accounts as force origin.
+ ///
+ /// This is not meant to operate in tandem with the identity pallet as is,
+ /// and be instead used to keep identities made and verified externally,
+ /// forbidden from interacting with an ordinary user, since it ignores any safety mechanism.
+ #[pallet::call_index(16)]
+ #[pallet::weight(T::WeightInfo::force_remove_identities(
+ T::MaxAdditionalFields::get(), // X
+ identities.len() as u32, // N
+ ))]
+ pub fn force_remove_identities(
+ origin: OriginFor<T>,
+ identities: Vec<T::AccountId>,
+ ) -> DispatchResult {
+ T::ForceOrigin::ensure_origin(origin)?;
+ for identity in identities.clone() {
+ IdentityOf::<T>::set(identity, None);
+ }
+ Self::deposit_event(Event::IdentitiesRemoved {
+ amount: identities.len() as u32,
+ });
+ Ok(())
+ }
+ }
+}
+
+impl<T: Config> Pallet<T> {
+ /// Get the subs of an account.
+ pub fn subs(who: &T::AccountId) -> Vec<(T::AccountId, Data)> {
+ SubsOf::<T>::get(who)
+ .1
+ .into_iter()
+ .filter_map(|a| SuperOf::<T>::get(&a).map(|x| (a, x.1)))
+ .collect()
+ }
+
+ /// Check if the account has corresponding identity information by the identity field.
+ pub fn has_identity(who: &T::AccountId, fields: u64) -> bool {
+ IdentityOf::<T>::get(who).map_or(false, |registration| {
+ (registration.info.fields().0.bits() & fields) == fields
+ })
+ }
+}
pallets/identity/src/tests.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/identity/src/tests.rs
@@ -0,0 +1,755 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// This file is part of Substrate.
+
+// Copyright (C) 2019-2022 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Tests for Identity Pallet
+
+use super::*;
+use crate as pallet_identity;
+
+use codec::{Decode, Encode};
+use frame_support::{
+ assert_noop, assert_ok, ord_parameter_types, parameter_types,
+ traits::{ConstU32, ConstU64, EitherOfDiverse},
+ BoundedVec,
+};
+use frame_system::{EnsureRoot, EnsureSignedBy};
+use sp_core::H256;
+use sp_runtime::{
+ testing::Header,
+ traits::{BadOrigin, BlakeTwo256, IdentityLookup},
+};
+
+type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
+type Block = frame_system::mocking::MockBlock<Test>;
+
+frame_support::construct_runtime!(
+ pub enum Test where
+ Block = Block,
+ NodeBlock = Block,
+ UncheckedExtrinsic = UncheckedExtrinsic,
+ {
+ System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
+ Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>},
+ Identity: pallet_identity::{Pallet, Call, Storage, Event<T>},
+ }
+);
+
+parameter_types! {
+ pub BlockWeights: frame_system::limits::BlockWeights =
+ frame_system::limits::BlockWeights::simple_max(frame_support::weights::Weight::from_ref_time(1024));
+}
+impl frame_system::Config for Test {
+ type BaseCallFilter = frame_support::traits::Everything;
+ type BlockWeights = ();
+ type BlockLength = ();
+ type RuntimeOrigin = RuntimeOrigin;
+ type Index = u64;
+ type BlockNumber = u64;
+ type Hash = H256;
+ type RuntimeCall = RuntimeCall;
+ type Hashing = BlakeTwo256;
+ type AccountId = u64;
+ type Lookup = IdentityLookup<Self::AccountId>;
+ type Header = Header;
+ type RuntimeEvent = RuntimeEvent;
+ type BlockHashCount = ConstU64<250>;
+ type DbWeight = ();
+ type Version = ();
+ type PalletInfo = PalletInfo;
+ type AccountData = pallet_balances::AccountData<u64>;
+ type OnNewAccount = ();
+ type OnKilledAccount = ();
+ type SystemWeightInfo = ();
+ type SS58Prefix = ();
+ type OnSetCode = ();
+ type MaxConsumers = ConstU32<16>;
+}
+
+impl pallet_balances::Config for Test {
+ type Balance = u64;
+ type RuntimeEvent = RuntimeEvent;
+ type DustRemoval = ();
+ type ExistentialDeposit = ConstU64<1>;
+ type AccountStore = System;
+ type MaxLocks = ();
+ type MaxReserves = ();
+ type ReserveIdentifier = [u8; 8];
+ type WeightInfo = ();
+}
+
+parameter_types! {
+ pub const MaxAdditionalFields: u32 = 2;
+ pub const MaxRegistrars: u32 = 20;
+}
+
+ord_parameter_types! {
+ pub const One: u64 = 1;
+ pub const Two: u64 = 2;
+}
+type EnsureOneOrRoot = EitherOfDiverse<EnsureRoot<u64>, EnsureSignedBy<One, u64>>;
+type EnsureTwoOrRoot = EitherOfDiverse<EnsureRoot<u64>, EnsureSignedBy<Two, u64>>;
+impl pallet_identity::Config for Test {
+ type RuntimeEvent = RuntimeEvent;
+ type Currency = Balances;
+ type Slashed = ();
+ type BasicDeposit = ConstU64<10>;
+ type FieldDeposit = ConstU64<10>;
+ type SubAccountDeposit = ConstU64<10>;
+ type MaxSubAccounts = ConstU32<2>;
+ type MaxAdditionalFields = MaxAdditionalFields;
+ type MaxRegistrars = MaxRegistrars;
+ type RegistrarOrigin = EnsureOneOrRoot;
+ type ForceOrigin = EnsureTwoOrRoot;
+ type WeightInfo = ();
+}
+
+pub fn new_test_ext() -> sp_io::TestExternalities {
+ let mut t = frame_system::GenesisConfig::default()
+ .build_storage::<Test>()
+ .unwrap();
+ pallet_balances::GenesisConfig::<Test> {
+ balances: vec![(1, 10), (2, 10), (3, 10), (10, 100), (20, 100), (30, 100)],
+ }
+ .assimilate_storage(&mut t)
+ .unwrap();
+ t.into()
+}
+
+fn ten() -> IdentityInfo<MaxAdditionalFields> {
+ IdentityInfo {
+ display: Data::Raw(b"ten".to_vec().try_into().unwrap()),
+ legal: Data::Raw(b"The Right Ordinal Ten, Esq.".to_vec().try_into().unwrap()),
+ ..Default::default()
+ }
+}
+
+fn twenty() -> IdentityInfo<MaxAdditionalFields> {
+ IdentityInfo {
+ display: Data::Raw(b"twenty".to_vec().try_into().unwrap()),
+ legal: Data::Raw(
+ b"The Right Ordinal Twenty, Esq."
+ .to_vec()
+ .try_into()
+ .unwrap(),
+ ),
+ ..Default::default()
+ }
+}
+
+#[test]
+fn editing_subaccounts_should_work() {
+ new_test_ext().execute_with(|| {
+ let data = |x| Data::Raw(vec![x; 1].try_into().unwrap());
+
+ assert_noop!(
+ Identity::add_sub(RuntimeOrigin::signed(10), 20, data(1)),
+ Error::<Test>::NoIdentity
+ );
+
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+
+ // first sub account
+ assert_ok!(Identity::add_sub(RuntimeOrigin::signed(10), 1, data(1)));
+ assert_eq!(SuperOf::<Test>::get(1), Some((10, data(1))));
+ assert_eq!(Balances::free_balance(10), 80);
+
+ // second sub account
+ assert_ok!(Identity::add_sub(RuntimeOrigin::signed(10), 2, data(2)));
+ assert_eq!(SuperOf::<Test>::get(1), Some((10, data(1))));
+ assert_eq!(SuperOf::<Test>::get(2), Some((10, data(2))));
+ assert_eq!(Balances::free_balance(10), 70);
+
+ // third sub account is too many
+ assert_noop!(
+ Identity::add_sub(RuntimeOrigin::signed(10), 3, data(3)),
+ Error::<Test>::TooManySubAccounts
+ );
+
+ // rename first sub account
+ assert_ok!(Identity::rename_sub(RuntimeOrigin::signed(10), 1, data(11)));
+ assert_eq!(SuperOf::<Test>::get(1), Some((10, data(11))));
+ assert_eq!(SuperOf::<Test>::get(2), Some((10, data(2))));
+ assert_eq!(Balances::free_balance(10), 70);
+
+ // remove first sub account
+ assert_ok!(Identity::remove_sub(RuntimeOrigin::signed(10), 1));
+ assert_eq!(SuperOf::<Test>::get(1), None);
+ assert_eq!(SuperOf::<Test>::get(2), Some((10, data(2))));
+ assert_eq!(Balances::free_balance(10), 80);
+
+ // add third sub account
+ assert_ok!(Identity::add_sub(RuntimeOrigin::signed(10), 3, data(3)));
+ assert_eq!(SuperOf::<Test>::get(1), None);
+ assert_eq!(SuperOf::<Test>::get(2), Some((10, data(2))));
+ assert_eq!(SuperOf::<Test>::get(3), Some((10, data(3))));
+ assert_eq!(Balances::free_balance(10), 70);
+ });
+}
+
+#[test]
+fn resolving_subaccount_ownership_works() {
+ new_test_ext().execute_with(|| {
+ let data = |x| Data::Raw(vec![x; 1].try_into().unwrap());
+
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(20),
+ Box::new(twenty())
+ ));
+
+ // 10 claims 1 as a subaccount
+ assert_ok!(Identity::add_sub(RuntimeOrigin::signed(10), 1, data(1)));
+ assert_eq!(Balances::free_balance(1), 10);
+ assert_eq!(Balances::free_balance(10), 80);
+ assert_eq!(Balances::reserved_balance(10), 20);
+ // 20 cannot claim 1 now
+ assert_noop!(
+ Identity::add_sub(RuntimeOrigin::signed(20), 1, data(1)),
+ Error::<Test>::AlreadyClaimed
+ );
+ // 1 wants to be with 20 so it quits from 10
+ assert_ok!(Identity::quit_sub(RuntimeOrigin::signed(1)));
+ // 1 gets the 10 that 10 paid.
+ assert_eq!(Balances::free_balance(1), 20);
+ assert_eq!(Balances::free_balance(10), 80);
+ assert_eq!(Balances::reserved_balance(10), 10);
+ // 20 can claim 1 now
+ assert_ok!(Identity::add_sub(RuntimeOrigin::signed(20), 1, data(1)));
+ });
+}
+
+#[test]
+fn trailing_zeros_decodes_into_default_data() {
+ let encoded = Data::Raw(b"Hello".to_vec().try_into().unwrap()).encode();
+ assert!(<(Data, Data)>::decode(&mut &encoded[..]).is_err());
+ let input = &mut &encoded[..];
+ let (a, b) = <(Data, Data)>::decode(&mut AppendZerosInput::new(input)).unwrap();
+ assert_eq!(a, Data::Raw(b"Hello".to_vec().try_into().unwrap()));
+ assert_eq!(b, Data::None);
+}
+
+#[test]
+fn adding_registrar_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_ok!(Identity::set_fee(RuntimeOrigin::signed(3), 0, 10));
+ let fields = IdentityFields(IdentityField::Display | IdentityField::Legal);
+ assert_ok!(Identity::set_fields(RuntimeOrigin::signed(3), 0, fields));
+ assert_eq!(
+ Identity::registrars(),
+ vec![Some(RegistrarInfo {
+ account: 3,
+ fee: 10,
+ fields
+ })]
+ );
+ });
+}
+
+#[test]
+fn amount_of_registrars_is_limited() {
+ new_test_ext().execute_with(|| {
+ for i in 1..MaxRegistrars::get() + 1 {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), i as u64));
+ }
+ let last_registrar = MaxRegistrars::get() as u64 + 1;
+ assert_noop!(
+ Identity::add_registrar(RuntimeOrigin::signed(1), last_registrar),
+ Error::<Test>::TooManyRegistrars
+ );
+ });
+}
+
+#[test]
+fn registration_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_ok!(Identity::set_fee(RuntimeOrigin::signed(3), 0, 10));
+ let mut three_fields = ten();
+ three_fields
+ .additional
+ .try_push(Default::default())
+ .unwrap();
+ three_fields
+ .additional
+ .try_push(Default::default())
+ .unwrap();
+ assert!(three_fields
+ .additional
+ .try_push(Default::default())
+ .is_err());
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_eq!(Identity::identity(10).unwrap().info, ten());
+ assert_eq!(Balances::free_balance(10), 90);
+ assert_ok!(Identity::clear_identity(RuntimeOrigin::signed(10)));
+ assert_eq!(Balances::free_balance(10), 100);
+ assert_noop!(
+ Identity::clear_identity(RuntimeOrigin::signed(10)),
+ Error::<Test>::NotNamed
+ );
+ });
+}
+
+#[test]
+fn uninvited_judgement_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_noop!(
+ Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Reasonable,
+ H256::random()
+ ),
+ Error::<Test>::InvalidIndex
+ );
+
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_noop!(
+ Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Reasonable,
+ H256::random()
+ ),
+ Error::<Test>::InvalidTarget
+ );
+
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_noop!(
+ Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Reasonable,
+ H256::random()
+ ),
+ Error::<Test>::JudgementForDifferentIdentity
+ );
+
+ let identity_hash = BlakeTwo256::hash_of(&ten());
+
+ assert_noop!(
+ Identity::provide_judgement(
+ RuntimeOrigin::signed(10),
+ 0,
+ 10,
+ Judgement::Reasonable,
+ identity_hash
+ ),
+ Error::<Test>::InvalidIndex
+ );
+ assert_noop!(
+ Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::FeePaid(1),
+ identity_hash
+ ),
+ Error::<Test>::InvalidJudgement
+ );
+
+ assert_ok!(Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Reasonable,
+ identity_hash
+ ));
+ assert_eq!(
+ Identity::identity(10).unwrap().judgements,
+ vec![(0, Judgement::Reasonable)]
+ );
+ });
+}
+
+#[test]
+fn clearing_judgement_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_ok!(Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Reasonable,
+ BlakeTwo256::hash_of(&ten())
+ ));
+ assert_ok!(Identity::clear_identity(RuntimeOrigin::signed(10)));
+ assert_eq!(Identity::identity(10), None);
+ });
+}
+
+#[test]
+fn killing_slashing_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_noop!(
+ Identity::kill_identity(RuntimeOrigin::signed(1), 10),
+ BadOrigin
+ );
+ assert_ok!(Identity::kill_identity(RuntimeOrigin::signed(2), 10));
+ assert_eq!(Identity::identity(10), None);
+ assert_eq!(Balances::free_balance(10), 90);
+ assert_noop!(
+ Identity::kill_identity(RuntimeOrigin::signed(2), 10),
+ Error::<Test>::NotNamed
+ );
+ });
+}
+
+#[test]
+fn setting_subaccounts_should_work() {
+ new_test_ext().execute_with(|| {
+ let mut subs = vec![(20, Data::Raw(vec![40; 1].try_into().unwrap()))];
+ assert_noop!(
+ Identity::set_subs(RuntimeOrigin::signed(10), subs.clone()),
+ Error::<Test>::NotFound
+ );
+
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_ok!(Identity::set_subs(RuntimeOrigin::signed(10), subs.clone()));
+ assert_eq!(Balances::free_balance(10), 80);
+ assert_eq!(Identity::subs_of(10), (10, vec![20].try_into().unwrap()));
+ assert_eq!(
+ Identity::super_of(20),
+ Some((10, Data::Raw(vec![40; 1].try_into().unwrap())))
+ );
+
+ // push another item and re-set it.
+ subs.push((30, Data::Raw(vec![50; 1].try_into().unwrap())));
+ assert_ok!(Identity::set_subs(RuntimeOrigin::signed(10), subs.clone()));
+ assert_eq!(Balances::free_balance(10), 70);
+ assert_eq!(
+ Identity::subs_of(10),
+ (20, vec![20, 30].try_into().unwrap())
+ );
+ assert_eq!(
+ Identity::super_of(20),
+ Some((10, Data::Raw(vec![40; 1].try_into().unwrap())))
+ );
+ assert_eq!(
+ Identity::super_of(30),
+ Some((10, Data::Raw(vec![50; 1].try_into().unwrap())))
+ );
+
+ // switch out one of the items and re-set.
+ subs[0] = (40, Data::Raw(vec![60; 1].try_into().unwrap()));
+ assert_ok!(Identity::set_subs(RuntimeOrigin::signed(10), subs.clone()));
+ assert_eq!(Balances::free_balance(10), 70); // no change in the balance
+ assert_eq!(
+ Identity::subs_of(10),
+ (20, vec![40, 30].try_into().unwrap())
+ );
+ assert_eq!(Identity::super_of(20), None);
+ assert_eq!(
+ Identity::super_of(30),
+ Some((10, Data::Raw(vec![50; 1].try_into().unwrap())))
+ );
+ assert_eq!(
+ Identity::super_of(40),
+ Some((10, Data::Raw(vec![60; 1].try_into().unwrap())))
+ );
+
+ // clear
+ assert_ok!(Identity::set_subs(RuntimeOrigin::signed(10), vec![]));
+ assert_eq!(Balances::free_balance(10), 90);
+ assert_eq!(Identity::subs_of(10), (0, BoundedVec::default()));
+ assert_eq!(Identity::super_of(30), None);
+ assert_eq!(Identity::super_of(40), None);
+
+ subs.push((20, Data::Raw(vec![40; 1].try_into().unwrap())));
+ assert_noop!(
+ Identity::set_subs(RuntimeOrigin::signed(10), subs.clone()),
+ Error::<Test>::TooManySubAccounts
+ );
+ });
+}
+
+#[test]
+fn clearing_account_should_remove_subaccounts_and_refund() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_ok!(Identity::set_subs(
+ RuntimeOrigin::signed(10),
+ vec![(20, Data::Raw(vec![40; 1].try_into().unwrap()))]
+ ));
+ assert_ok!(Identity::clear_identity(RuntimeOrigin::signed(10)));
+ assert_eq!(Balances::free_balance(10), 100);
+ assert!(Identity::super_of(20).is_none());
+ });
+}
+
+#[test]
+fn killing_account_should_remove_subaccounts_and_not_refund() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_ok!(Identity::set_subs(
+ RuntimeOrigin::signed(10),
+ vec![(20, Data::Raw(vec![40; 1].try_into().unwrap()))]
+ ));
+ assert_ok!(Identity::kill_identity(RuntimeOrigin::signed(2), 10));
+ assert_eq!(Balances::free_balance(10), 80);
+ assert!(Identity::super_of(20).is_none());
+ });
+}
+
+#[test]
+fn cancelling_requested_judgement_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_ok!(Identity::set_fee(RuntimeOrigin::signed(3), 0, 10));
+ assert_noop!(
+ Identity::cancel_request(RuntimeOrigin::signed(10), 0),
+ Error::<Test>::NoIdentity
+ );
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_ok!(Identity::request_judgement(
+ RuntimeOrigin::signed(10),
+ 0,
+ 10
+ ));
+ assert_ok!(Identity::cancel_request(RuntimeOrigin::signed(10), 0));
+ assert_eq!(Balances::free_balance(10), 90);
+ assert_noop!(
+ Identity::cancel_request(RuntimeOrigin::signed(10), 0),
+ Error::<Test>::NotFound
+ );
+
+ assert_ok!(Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Reasonable,
+ BlakeTwo256::hash_of(&ten())
+ ));
+ assert_noop!(
+ Identity::cancel_request(RuntimeOrigin::signed(10), 0),
+ Error::<Test>::JudgementGiven
+ );
+ });
+}
+
+#[test]
+fn requesting_judgement_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_ok!(Identity::set_fee(RuntimeOrigin::signed(3), 0, 10));
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_noop!(
+ Identity::request_judgement(RuntimeOrigin::signed(10), 0, 9),
+ Error::<Test>::FeeChanged
+ );
+ assert_ok!(Identity::request_judgement(
+ RuntimeOrigin::signed(10),
+ 0,
+ 10
+ ));
+ // 10 for the judgement request, 10 for the identity.
+ assert_eq!(Balances::free_balance(10), 80);
+
+ // Re-requesting won't work as we already paid.
+ assert_noop!(
+ Identity::request_judgement(RuntimeOrigin::signed(10), 0, 10),
+ Error::<Test>::StickyJudgement
+ );
+ assert_ok!(Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Erroneous,
+ BlakeTwo256::hash_of(&ten())
+ ));
+ // Registrar got their payment now.
+ assert_eq!(Balances::free_balance(3), 20);
+
+ // Re-requesting still won't work as it's erroneous.
+ assert_noop!(
+ Identity::request_judgement(RuntimeOrigin::signed(10), 0, 10),
+ Error::<Test>::StickyJudgement
+ );
+
+ // Requesting from a second registrar still works.
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 4));
+ assert_ok!(Identity::request_judgement(
+ RuntimeOrigin::signed(10),
+ 1,
+ 10
+ ));
+
+ // Re-requesting after the judgement has been reduced works.
+ assert_ok!(Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::OutOfDate,
+ BlakeTwo256::hash_of(&ten())
+ ));
+ assert_ok!(Identity::request_judgement(
+ RuntimeOrigin::signed(10),
+ 0,
+ 10
+ ));
+ });
+}
+
+#[test]
+fn provide_judgement_should_return_judgement_payment_failed_error() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_ok!(Identity::set_fee(RuntimeOrigin::signed(3), 0, 10));
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert_ok!(Identity::request_judgement(
+ RuntimeOrigin::signed(10),
+ 0,
+ 10
+ ));
+ // 10 for the judgement request, 10 for the identity.
+ assert_eq!(Balances::free_balance(10), 80);
+
+ // This forces judgement payment failed error
+ Balances::make_free_balance_be(&3, 0);
+ assert_noop!(
+ Identity::provide_judgement(
+ RuntimeOrigin::signed(3),
+ 0,
+ 10,
+ Judgement::Erroneous,
+ BlakeTwo256::hash_of(&ten())
+ ),
+ Error::<Test>::JudgementPaymentFailed
+ );
+ });
+}
+
+#[test]
+fn field_deposit_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ assert_ok!(Identity::set_fee(RuntimeOrigin::signed(3), 0, 10));
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(IdentityInfo {
+ additional: vec![
+ (
+ Data::Raw(b"number".to_vec().try_into().unwrap()),
+ Data::Raw(10u32.encode().try_into().unwrap())
+ ),
+ (
+ Data::Raw(b"text".to_vec().try_into().unwrap()),
+ Data::Raw(b"10".to_vec().try_into().unwrap())
+ ),
+ ]
+ .try_into()
+ .unwrap(),
+ ..Default::default()
+ })
+ ));
+ assert_eq!(Balances::free_balance(10), 70);
+ });
+}
+
+#[test]
+fn setting_account_id_should_work() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::add_registrar(RuntimeOrigin::signed(1), 3));
+ // account 4 cannot change the first registrar's identity since it's owned by 3.
+ assert_noop!(
+ Identity::set_account_id(RuntimeOrigin::signed(4), 0, 3),
+ Error::<Test>::InvalidIndex
+ );
+ // account 3 can, because that's the registrar's current account.
+ assert_ok!(Identity::set_account_id(RuntimeOrigin::signed(3), 0, 4));
+ // account 4 can now, because that's their new ID.
+ assert_ok!(Identity::set_account_id(RuntimeOrigin::signed(4), 0, 3));
+ });
+}
+
+#[test]
+fn test_has_identity() {
+ new_test_ext().execute_with(|| {
+ assert_ok!(Identity::set_identity(
+ RuntimeOrigin::signed(10),
+ Box::new(ten())
+ ));
+ assert!(Identity::has_identity(&10, IdentityField::Display as u64));
+ assert!(Identity::has_identity(&10, IdentityField::Legal as u64));
+ assert!(Identity::has_identity(
+ &10,
+ IdentityField::Display as u64 | IdentityField::Legal as u64
+ ));
+ assert!(!Identity::has_identity(
+ &10,
+ IdentityField::Display as u64 | IdentityField::Legal as u64 | IdentityField::Web as u64
+ ));
+ });
+}
pallets/identity/src/types.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/identity/src/types.rs
@@ -0,0 +1,540 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// This file is part of Substrate.
+
+// Copyright (C) 2021-2022 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+use super::*;
+use codec::{Decode, Encode, MaxEncodedLen};
+use enumflags2::{bitflags, BitFlags};
+use frame_support::{
+ traits::{ConstU32, Get},
+ BoundedVec, CloneNoBound, PartialEqNoBound, RuntimeDebugNoBound,
+};
+use scale_info::{
+ build::{Fields, Variants},
+ meta_type, Path, Type, TypeInfo, TypeParameter,
+};
+use sp_runtime::{traits::Zero, RuntimeDebug};
+use sp_std::{fmt::Debug, iter::once, ops::Add, prelude::*};
+
+/// Either underlying data blob if it is at most 32 bytes, or a hash of it. If the data is greater
+/// than 32-bytes then it will be truncated when encoding.
+///
+/// Can also be `None`.
+#[derive(Clone, Eq, PartialEq, RuntimeDebug, MaxEncodedLen)]
+pub enum Data {
+ /// No data here.
+ None,
+ /// The data is stored directly.
+ Raw(BoundedVec<u8, ConstU32<32>>),
+ /// Only the Blake2 hash of the data is stored. The preimage of the hash may be retrieved
+ /// through some hash-lookup service.
+ BlakeTwo256([u8; 32]),
+ /// Only the SHA2-256 hash of the data is stored. The preimage of the hash may be retrieved
+ /// through some hash-lookup service.
+ Sha256([u8; 32]),
+ /// Only the Keccak-256 hash of the data is stored. The preimage of the hash may be retrieved
+ /// through some hash-lookup service.
+ Keccak256([u8; 32]),
+ /// Only the SHA3-256 hash of the data is stored. The preimage of the hash may be retrieved
+ /// through some hash-lookup service.
+ ShaThree256([u8; 32]),
+}
+
+impl Data {
+ pub fn is_none(&self) -> bool {
+ self == &Data::None
+ }
+}
+
+impl Decode for Data {
+ fn decode<I: codec::Input>(input: &mut I) -> sp_std::result::Result<Self, codec::Error> {
+ let b = input.read_byte()?;
+ Ok(match b {
+ 0 => Data::None,
+ n @ 1..=33 => {
+ let mut r: BoundedVec<_, _> = vec![0u8; n as usize - 1]
+ .try_into()
+ .expect("bound checked in match arm condition; qed");
+ input.read(&mut r[..])?;
+ Data::Raw(r)
+ }
+ 34 => Data::BlakeTwo256(<[u8; 32]>::decode(input)?),
+ 35 => Data::Sha256(<[u8; 32]>::decode(input)?),
+ 36 => Data::Keccak256(<[u8; 32]>::decode(input)?),
+ 37 => Data::ShaThree256(<[u8; 32]>::decode(input)?),
+ _ => return Err(codec::Error::from("invalid leading byte")),
+ })
+ }
+}
+
+impl Encode for Data {
+ fn encode(&self) -> Vec<u8> {
+ match self {
+ Data::None => vec![0u8; 1],
+ Data::Raw(ref x) => {
+ let l = x.len().min(32);
+ let mut r = vec![l as u8 + 1; l + 1];
+ r[1..].copy_from_slice(&x[..l as usize]);
+ r
+ }
+ Data::BlakeTwo256(ref h) => once(34u8).chain(h.iter().cloned()).collect(),
+ Data::Sha256(ref h) => once(35u8).chain(h.iter().cloned()).collect(),
+ Data::Keccak256(ref h) => once(36u8).chain(h.iter().cloned()).collect(),
+ Data::ShaThree256(ref h) => once(37u8).chain(h.iter().cloned()).collect(),
+ }
+ }
+}
+impl codec::EncodeLike for Data {}
+
+/// Add a Raw variant with the given index and a fixed sized byte array
+macro_rules! data_raw_variants {
+ ($variants:ident, $(($index:literal, $size:literal)),* ) => {
+ $variants
+ $(
+ .variant(concat!("Raw", stringify!($size)), |v| v
+ .index($index)
+ .fields(Fields::unnamed().field(|f| f.ty::<[u8; $size]>()))
+ )
+ )*
+ }
+}
+
+impl TypeInfo for Data {
+ type Identity = Self;
+
+ fn type_info() -> Type {
+ let variants = Variants::new().variant("None", |v| v.index(0));
+
+ // create a variant for all sizes of Raw data from 0-32
+ let variants = data_raw_variants!(
+ variants,
+ (1, 0),
+ (2, 1),
+ (3, 2),
+ (4, 3),
+ (5, 4),
+ (6, 5),
+ (7, 6),
+ (8, 7),
+ (9, 8),
+ (10, 9),
+ (11, 10),
+ (12, 11),
+ (13, 12),
+ (14, 13),
+ (15, 14),
+ (16, 15),
+ (17, 16),
+ (18, 17),
+ (19, 18),
+ (20, 19),
+ (21, 20),
+ (22, 21),
+ (23, 22),
+ (24, 23),
+ (25, 24),
+ (26, 25),
+ (27, 26),
+ (28, 27),
+ (29, 28),
+ (30, 29),
+ (31, 30),
+ (32, 31),
+ (33, 32)
+ );
+
+ let variants = variants
+ .variant("BlakeTwo256", |v| {
+ v.index(34)
+ .fields(Fields::unnamed().field(|f| f.ty::<[u8; 32]>()))
+ })
+ .variant("Sha256", |v| {
+ v.index(35)
+ .fields(Fields::unnamed().field(|f| f.ty::<[u8; 32]>()))
+ })
+ .variant("Keccak256", |v| {
+ v.index(36)
+ .fields(Fields::unnamed().field(|f| f.ty::<[u8; 32]>()))
+ })
+ .variant("ShaThree256", |v| {
+ v.index(37)
+ .fields(Fields::unnamed().field(|f| f.ty::<[u8; 32]>()))
+ });
+
+ Type::builder()
+ .path(Path::new("Data", module_path!()))
+ .variant(variants)
+ }
+}
+
+impl Default for Data {
+ fn default() -> Self {
+ Self::None
+ }
+}
+
+/// An identifier for a single name registrar/identity verification service.
+pub type RegistrarIndex = u32;
+
+/// An attestation of a registrar over how accurate some `IdentityInfo` is in describing an account.
+///
+/// NOTE: Registrars may pay little attention to some fields. Registrars may want to make clear
+/// which fields their attestation is relevant for by off-chain means.
+#[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, RuntimeDebug, MaxEncodedLen, TypeInfo)]
+pub enum Judgement<Balance: Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq>
+{
+ /// The default value; no opinion is held.
+ Unknown,
+ /// No judgement is yet in place, but a deposit is reserved as payment for providing one.
+ FeePaid(Balance),
+ /// The data appears to be reasonably acceptable in terms of its accuracy, however no in depth
+ /// checks (such as in-person meetings or formal KYC) have been conducted.
+ Reasonable,
+ /// The target is known directly by the registrar and the registrar can fully attest to the
+ /// the data's accuracy.
+ KnownGood,
+ /// The data was once good but is currently out of date. There is no malicious intent in the
+ /// inaccuracy. This judgement can be removed through updating the data.
+ OutOfDate,
+ /// The data is imprecise or of sufficiently low-quality to be problematic. It is not
+ /// indicative of malicious intent. This judgement can be removed through updating the data.
+ LowQuality,
+ /// The data is erroneous. This may be indicative of malicious intent. This cannot be removed
+ /// except by the registrar.
+ Erroneous,
+}
+
+impl<Balance: Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq>
+ Judgement<Balance>
+{
+ /// Returns `true` if this judgement is indicative of a deposit being currently held. This means
+ /// it should not be cleared or replaced except by an operation which utilizes the deposit.
+ pub(crate) fn has_deposit(&self) -> bool {
+ matches!(self, Judgement::FeePaid(_))
+ }
+
+ /// Returns `true` if this judgement is one that should not be generally be replaced outside
+ /// of specialized handlers. Examples include "malicious" judgements and deposit-holding
+ /// judgements.
+ pub(crate) fn is_sticky(&self) -> bool {
+ matches!(self, Judgement::FeePaid(_) | Judgement::Erroneous)
+ }
+}
+
+/// The fields that we use to identify the owner of an account with. Each corresponds to a field
+/// in the `IdentityInfo` struct.
+#[bitflags]
+#[repr(u64)]
+#[derive(Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)]
+pub enum IdentityField {
+ Display = 0b0000000000000000000000000000000000000000000000000000000000000001,
+ Legal = 0b0000000000000000000000000000000000000000000000000000000000000010,
+ Web = 0b0000000000000000000000000000000000000000000000000000000000000100,
+ Riot = 0b0000000000000000000000000000000000000000000000000000000000001000,
+ Email = 0b0000000000000000000000000000000000000000000000000000000000010000,
+ PgpFingerprint = 0b0000000000000000000000000000000000000000000000000000000000100000,
+ Image = 0b0000000000000000000000000000000000000000000000000000000001000000,
+ Twitter = 0b0000000000000000000000000000000000000000000000000000000010000000,
+}
+
+/// Wrapper type for `BitFlags<IdentityField>` that implements `Codec`.
+#[derive(Clone, Copy, PartialEq, Default, RuntimeDebug)]
+pub struct IdentityFields(pub BitFlags<IdentityField>);
+
+impl MaxEncodedLen for IdentityFields {
+ fn max_encoded_len() -> usize {
+ u64::max_encoded_len()
+ }
+}
+
+impl Eq for IdentityFields {}
+impl Encode for IdentityFields {
+ fn using_encoded<R, F: FnOnce(&[u8]) -> R>(&self, f: F) -> R {
+ self.0.bits().using_encoded(f)
+ }
+}
+impl Decode for IdentityFields {
+ fn decode<I: codec::Input>(input: &mut I) -> sp_std::result::Result<Self, codec::Error> {
+ let field = u64::decode(input)?;
+ Ok(Self(
+ <BitFlags<IdentityField>>::from_bits(field as u64).map_err(|_| "invalid value")?,
+ ))
+ }
+}
+impl TypeInfo for IdentityFields {
+ type Identity = Self;
+
+ fn type_info() -> Type {
+ Type::builder()
+ .path(Path::new("BitFlags", module_path!()))
+ .type_params(vec![TypeParameter::new(
+ "T",
+ Some(meta_type::<IdentityField>()),
+ )])
+ .composite(Fields::unnamed().field(|f| f.ty::<u64>().type_name("IdentityField")))
+ }
+}
+
+/// Information concerning the identity of the controller of an account.
+///
+/// NOTE: This should be stored at the end of the storage item to facilitate the addition of extra
+/// fields in a backwards compatible way through a specialized `Decode` impl.
+#[derive(
+ CloneNoBound, Encode, Decode, Eq, MaxEncodedLen, PartialEqNoBound, RuntimeDebugNoBound, TypeInfo,
+)]
+#[codec(mel_bound())]
+#[cfg_attr(test, derive(frame_support::DefaultNoBound))]
+#[scale_info(skip_type_params(FieldLimit))]
+pub struct IdentityInfo<FieldLimit: Get<u32>> {
+ /// Additional fields of the identity that are not catered for with the struct's explicit
+ /// fields.
+ pub additional: BoundedVec<(Data, Data), FieldLimit>,
+
+ /// A reasonable display name for the controller of the account. This should be whatever it is
+ /// that it is typically known as and should not be confusable with other entities, given
+ /// reasonable context.
+ ///
+ /// Stored as UTF-8.
+ pub display: Data,
+
+ /// The full legal name in the local jurisdiction of the entity. This might be a bit
+ /// long-winded.
+ ///
+ /// Stored as UTF-8.
+ pub legal: Data,
+
+ /// A representative website held by the controller of the account.
+ ///
+ /// NOTE: `https://` is automatically prepended.
+ ///
+ /// Stored as UTF-8.
+ pub web: Data,
+
+ /// The Riot/Matrix handle held by the controller of the account.
+ ///
+ /// Stored as UTF-8.
+ pub riot: Data,
+
+ /// The email address of the controller of the account.
+ ///
+ /// Stored as UTF-8.
+ pub email: Data,
+
+ /// The PGP/GPG public key of the controller of the account.
+ pub pgp_fingerprint: Option<[u8; 20]>,
+
+ /// A graphic image representing the controller of the account. Should be a company,
+ /// organization or project logo or a headshot in the case of a human.
+ pub image: Data,
+
+ /// The Twitter identity. The leading `@` character may be elided.
+ pub twitter: Data,
+}
+
+impl<FieldLimit: Get<u32>> IdentityInfo<FieldLimit> {
+ pub(crate) fn fields(&self) -> IdentityFields {
+ let mut res = <BitFlags<IdentityField>>::empty();
+ if !self.display.is_none() {
+ res.insert(IdentityField::Display);
+ }
+ if !self.legal.is_none() {
+ res.insert(IdentityField::Legal);
+ }
+ if !self.web.is_none() {
+ res.insert(IdentityField::Web);
+ }
+ if !self.riot.is_none() {
+ res.insert(IdentityField::Riot);
+ }
+ if !self.email.is_none() {
+ res.insert(IdentityField::Email);
+ }
+ if self.pgp_fingerprint.is_some() {
+ res.insert(IdentityField::PgpFingerprint);
+ }
+ if !self.image.is_none() {
+ res.insert(IdentityField::Image);
+ }
+ if !self.twitter.is_none() {
+ res.insert(IdentityField::Twitter);
+ }
+ IdentityFields(res)
+ }
+}
+
+/// Information concerning the identity of the controller of an account.
+///
+/// NOTE: This is stored separately primarily to facilitate the addition of extra fields in a
+/// backwards compatible way through a specialized `Decode` impl.
+#[derive(
+ CloneNoBound, Encode, Eq, MaxEncodedLen, PartialEqNoBound, RuntimeDebugNoBound, TypeInfo,
+)]
+#[codec(mel_bound())]
+#[scale_info(skip_type_params(MaxJudgements, MaxAdditionalFields))]
+pub struct Registration<
+ Balance: Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq,
+ MaxJudgements: Get<u32>,
+ MaxAdditionalFields: Get<u32>,
+> {
+ /// Judgements from the registrars on this identity. Stored ordered by `RegistrarIndex`. There
+ /// may be only a single judgement from each registrar.
+ pub judgements: BoundedVec<(RegistrarIndex, Judgement<Balance>), MaxJudgements>,
+
+ /// Amount held on deposit for this information.
+ pub deposit: Balance,
+
+ /// Information on the identity.
+ pub info: IdentityInfo<MaxAdditionalFields>,
+}
+
+impl<
+ Balance: Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq + Zero + Add,
+ MaxJudgements: Get<u32>,
+ MaxAdditionalFields: Get<u32>,
+ > Registration<Balance, MaxJudgements, MaxAdditionalFields>
+{
+ pub(crate) fn total_deposit(&self) -> Balance {
+ self.deposit
+ + self
+ .judgements
+ .iter()
+ .map(|(_, ref j)| {
+ if let Judgement::FeePaid(fee) = j {
+ *fee
+ } else {
+ Zero::zero()
+ }
+ })
+ .fold(Zero::zero(), |a, i| a + i)
+ }
+}
+
+impl<
+ Balance: Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq,
+ MaxJudgements: Get<u32>,
+ MaxAdditionalFields: Get<u32>,
+ > Decode for Registration<Balance, MaxJudgements, MaxAdditionalFields>
+{
+ fn decode<I: codec::Input>(input: &mut I) -> sp_std::result::Result<Self, codec::Error> {
+ let (judgements, deposit, info) = Decode::decode(&mut AppendZerosInput::new(input))?;
+ Ok(Self {
+ judgements,
+ deposit,
+ info,
+ })
+ }
+}
+
+/// Information concerning a registrar.
+#[derive(Clone, Encode, Decode, Eq, PartialEq, RuntimeDebug, MaxEncodedLen, TypeInfo)]
+pub struct RegistrarInfo<
+ Balance: Encode + Decode + Clone + Debug + Eq + PartialEq,
+ AccountId: Encode + Decode + Clone + Debug + Eq + PartialEq,
+> {
+ /// The account of the registrar.
+ pub account: AccountId,
+
+ /// Amount required to be given to the registrar for them to provide judgement.
+ pub fee: Balance,
+
+ /// Relevant fields for this registrar. Registrar judgements are limited to attestations on
+ /// these fields.
+ pub fields: IdentityFields,
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn manual_data_type_info() {
+ let mut registry = scale_info::Registry::new();
+ let type_id = registry.register_type(&scale_info::meta_type::<Data>());
+ let registry: scale_info::PortableRegistry = registry.into();
+ let type_info = registry.resolve(type_id.id()).unwrap();
+
+ let check_type_info = |data: &Data| {
+ let variant_name = match data {
+ Data::None => "None".to_string(),
+ Data::BlakeTwo256(_) => "BlakeTwo256".to_string(),
+ Data::Sha256(_) => "Sha256".to_string(),
+ Data::Keccak256(_) => "Keccak256".to_string(),
+ Data::ShaThree256(_) => "ShaThree256".to_string(),
+ Data::Raw(bytes) => format!("Raw{}", bytes.len()),
+ };
+ if let scale_info::TypeDef::Variant(variant) = type_info.type_def() {
+ let variant = variant
+ .variants()
+ .iter()
+ .find(|v| v.name() == &variant_name)
+ .expect(&format!("Expected to find variant {}", variant_name));
+
+ let field_arr_len = variant
+ .fields()
+ .first()
+ .and_then(|f| registry.resolve(f.ty().id()))
+ .map(|ty| {
+ if let scale_info::TypeDef::Array(arr) = ty.type_def() {
+ arr.len()
+ } else {
+ panic!("Should be an array type")
+ }
+ })
+ .unwrap_or(0);
+
+ let encoded = data.encode();
+ assert_eq!(encoded[0], variant.index());
+ assert_eq!(encoded.len() as u32 - 1, field_arr_len);
+ } else {
+ panic!("Should be a variant type")
+ };
+ };
+
+ let mut data = vec![
+ Data::None,
+ Data::BlakeTwo256(Default::default()),
+ Data::Sha256(Default::default()),
+ Data::Keccak256(Default::default()),
+ Data::ShaThree256(Default::default()),
+ ];
+
+ // A Raw instance for all possible sizes of the Raw data
+ for n in 0..32 {
+ data.push(Data::Raw(vec![0u8; n as usize].try_into().unwrap()))
+ }
+
+ for d in data.iter() {
+ check_type_info(d);
+ }
+ }
+}
pallets/identity/src/weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/identity/src/weights.rs
@@ -0,0 +1,558 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+// Original license:
+// This file is part of Substrate.
+
+// Copyright (C) 2022 Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! Autogenerated weights for pallet_identity
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
+//! DATE: 2022-11-07, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! HOSTNAME: `bm2`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+
+// Executed Command:
+// ./target/production/substrate
+// benchmark
+// pallet
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=pallet_identity
+// --extrinsic=*
+// --execution=wasm
+// --wasm-execution=compiled
+// --heap-pages=4096
+// --output=./frame/identity/src/weights.rs
+// --header=./HEADER-APACHE2
+// --template=./.maintain/frame-weight-template.hbs
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weight functions needed for pallet_identity.
+pub trait WeightInfo {
+ fn add_registrar(r: u32, ) -> Weight;
+ fn set_identity(r: u32, x: u32, ) -> Weight;
+ fn set_subs_new(s: u32, ) -> Weight;
+ fn set_subs_old(p: u32, ) -> Weight;
+ fn clear_identity(r: u32, s: u32, x: u32, ) -> Weight;
+ fn request_judgement(r: u32, x: u32, ) -> Weight;
+ fn cancel_request(r: u32, x: u32, ) -> Weight;
+ fn set_fee(r: u32, ) -> Weight;
+ fn set_account_id(r: u32, ) -> Weight;
+ fn set_fields(r: u32, ) -> Weight;
+ fn provide_judgement(r: u32, x: u32, ) -> Weight;
+ fn kill_identity(r: u32, s: u32, x: u32, ) -> Weight;
+ fn force_insert_identities(x: u32, n: u32, ) -> Weight;
+ fn force_remove_identities(x: u32, n: u32, ) -> Weight;
+ fn add_sub(s: u32, ) -> Weight;
+ fn rename_sub(s: u32, ) -> Weight;
+ fn remove_sub(s: u32, ) -> Weight;
+ fn quit_sub(s: u32, ) -> Weight;
+}
+
+/// Weights for pallet_identity using the Substrate node and recommended hardware.
+pub struct SubstrateWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn add_registrar(r: u32, ) -> Weight {
+ // Minimum execution time: 20_269 nanoseconds.
+ Weight::from_ref_time(21_910_543 as u64)
+ // Standard Error: 4_604
+ .saturating_add(Weight::from_ref_time(223_104 as u64).saturating_mul(r as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn set_identity(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 41_872 nanoseconds.
+ Weight::from_ref_time(40_230_216 as u64)
+ // Standard Error: 2_342
+ .saturating_add(Weight::from_ref_time(145_168 as u64).saturating_mul(r as u64))
+ // Standard Error: 457
+ .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity SuperOf (r:2 w:2)
+ /// The range of component `s` is `[0, 100]`.
+ fn set_subs_new(s: u32, ) -> Weight {
+ // Minimum execution time: 12_024 nanoseconds.
+ Weight::from_ref_time(32_550_819 as u64)
+ // Standard Error: 5_057
+ .saturating_add(Weight::from_ref_time(2_521_245 as u64).saturating_mul(s as u64))
+ .saturating_add(T::DbWeight::get().reads(2 as u64))
+ .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(s as u64)))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ .saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(s as u64)))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity SuperOf (r:0 w:2)
+ /// The range of component `p` is `[0, 100]`.
+ fn set_subs_old(p: u32, ) -> Weight {
+ // Minimum execution time: 12_232 nanoseconds.
+ Weight::from_ref_time(34_009_761 as u64)
+ // Standard Error: 5_047
+ .saturating_add(Weight::from_ref_time(1_113_100 as u64).saturating_mul(p as u64))
+ .saturating_add(T::DbWeight::get().reads(2 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ .saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(p as u64)))
+ }
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ // Storage: Identity SuperOf (r:0 w:100)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `s` is `[0, 100]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn clear_identity(r: u32, s: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 57_144 nanoseconds.
+ Weight::from_ref_time(41_559_247 as u64)
+ // Standard Error: 9_996
+ .saturating_add(Weight::from_ref_time(146_770 as u64).saturating_mul(r as u64))
+ // Standard Error: 1_952
+ .saturating_add(Weight::from_ref_time(1_086_673 as u64).saturating_mul(s as u64))
+ // Standard Error: 1_952
+ .saturating_add(Weight::from_ref_time(162_481 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(2 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ .saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(s as u64)))
+ }
+ // Storage: Identity Registrars (r:1 w:0)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn request_judgement(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 44_726 nanoseconds.
+ Weight::from_ref_time(41_637_308 as u64)
+ // Standard Error: 1_907
+ .saturating_add(Weight::from_ref_time(219_078 as u64).saturating_mul(r as u64))
+ // Standard Error: 372
+ .saturating_add(Weight::from_ref_time(309_888 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(2 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn cancel_request(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 39_719 nanoseconds.
+ Weight::from_ref_time(38_008_751 as u64)
+ // Standard Error: 2_394
+ .saturating_add(Weight::from_ref_time(181_870 as u64).saturating_mul(r as u64))
+ // Standard Error: 467
+ .saturating_add(Weight::from_ref_time(314_990 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn set_fee(r: u32, ) -> Weight {
+ // Minimum execution time: 10_634 nanoseconds.
+ Weight::from_ref_time(11_383_704 as u64)
+ // Standard Error: 2_250
+ .saturating_add(Weight::from_ref_time(193_094 as u64).saturating_mul(r as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn set_account_id(r: u32, ) -> Weight {
+ // Minimum execution time: 10_840 nanoseconds.
+ Weight::from_ref_time(11_638_740 as u64)
+ // Standard Error: 1_985
+ .saturating_add(Weight::from_ref_time(193_016 as u64).saturating_mul(r as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn set_fields(r: u32, ) -> Weight {
+ // Minimum execution time: 10_748 nanoseconds.
+ Weight::from_ref_time(11_346_901 as u64)
+ // Standard Error: 2_132
+ .saturating_add(Weight::from_ref_time(196_630 as u64).saturating_mul(r as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:0)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn provide_judgement(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 33_682 nanoseconds.
+ Weight::from_ref_time(31_336_603 as u64)
+ // Standard Error: 3_056
+ .saturating_add(Weight::from_ref_time(200_403 as u64).saturating_mul(r as u64))
+ // Standard Error: 565
+ .saturating_add(Weight::from_ref_time(525_142 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(2 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: Identity SuperOf (r:0 w:100)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `s` is `[0, 100]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn kill_identity(r: u32, s: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 68_794 nanoseconds.
+ Weight::from_ref_time(52_114_486 as u64)
+ // Standard Error: 4_808
+ .saturating_add(Weight::from_ref_time(153_462 as u64).saturating_mul(r as u64))
+ // Standard Error: 939
+ .saturating_add(Weight::from_ref_time(1_084_612 as u64).saturating_mul(s as u64))
+ // Standard Error: 939
+ .saturating_add(Weight::from_ref_time(170_112 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(3 as u64))
+ .saturating_add(T::DbWeight::get().writes(3 as u64))
+ .saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(s as u64)))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `x` is `[0, 100]`.
+ /// The range of component `n` is `[0, 600]`.
+ fn force_insert_identities(x: u32, n: u32) -> Weight {
+ // Minimum execution time: 41_872 nanoseconds.
+ Weight::from_ref_time(40_230_216 as u64)
+ // Standard Error: 2_342
+ .saturating_add(Weight::from_ref_time(145_168 as u64))
+ // Standard Error: 457
+ .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64).saturating_mul(n as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `x` is `[0, 100]`.
+ /// The range of component `n` is `[0, 600]`.
+ fn force_remove_identities(x: u32, n: u32) -> Weight {
+ // Minimum execution time: 41_872 nanoseconds.
+ Weight::from_ref_time(40_230_216 as u64)
+ // Standard Error: 2_342
+ .saturating_add(Weight::from_ref_time(145_168 as u64))
+ // Standard Error: 457
+ .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(x as u64))
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64).saturating_mul(n as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SuperOf (r:1 w:1)
+ // Storage: Identity SubsOf (r:1 w:1)
+ /// The range of component `s` is `[0, 99]`.
+ fn add_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 37_914 nanoseconds.
+ Weight::from_ref_time(43_488_083 as u64)
+ // Standard Error: 1_631
+ .saturating_add(Weight::from_ref_time(118_845 as u64).saturating_mul(s as u64))
+ .saturating_add(T::DbWeight::get().reads(3 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SuperOf (r:1 w:1)
+ /// The range of component `s` is `[1, 100]`.
+ fn rename_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 16_124 nanoseconds.
+ Weight::from_ref_time(18_580_462 as u64)
+ // Standard Error: 688
+ .saturating_add(Weight::from_ref_time(67_220 as u64).saturating_mul(s as u64))
+ .saturating_add(T::DbWeight::get().reads(2 as u64))
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SuperOf (r:1 w:1)
+ // Storage: Identity SubsOf (r:1 w:1)
+ /// The range of component `s` is `[1, 100]`.
+ fn remove_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 41_517 nanoseconds.
+ Weight::from_ref_time(45_123_530 as u64)
+ // Standard Error: 1_530
+ .saturating_add(Weight::from_ref_time(105_429 as u64).saturating_mul(s as u64))
+ .saturating_add(T::DbWeight::get().reads(3 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+ // Storage: Identity SuperOf (r:1 w:1)
+ // Storage: Identity SubsOf (r:1 w:1)
+ /// The range of component `s` is `[0, 99]`.
+ fn quit_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 30_171 nanoseconds.
+ Weight::from_ref_time(33_355_514 as u64)
+ // Standard Error: 1_286
+ .saturating_add(Weight::from_ref_time(114_716 as u64).saturating_mul(s as u64))
+ .saturating_add(T::DbWeight::get().reads(2 as u64))
+ .saturating_add(T::DbWeight::get().writes(2 as u64))
+ }
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn add_registrar(r: u32, ) -> Weight {
+ // Minimum execution time: 20_269 nanoseconds.
+ Weight::from_ref_time(21_910_543 as u64)
+ // Standard Error: 4_604
+ .saturating_add(Weight::from_ref_time(223_104 as u64).saturating_mul(r as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn set_identity(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 41_872 nanoseconds.
+ Weight::from_ref_time(40_230_216 as u64)
+ // Standard Error: 2_342
+ .saturating_add(Weight::from_ref_time(145_168 as u64).saturating_mul(r as u64))
+ // Standard Error: 457
+ .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity SuperOf (r:2 w:2)
+ /// The range of component `s` is `[0, 100]`.
+ fn set_subs_new(s: u32, ) -> Weight {
+ // Minimum execution time: 12_024 nanoseconds.
+ Weight::from_ref_time(32_550_819 as u64)
+ // Standard Error: 5_057
+ .saturating_add(Weight::from_ref_time(2_521_245 as u64).saturating_mul(s as u64))
+ .saturating_add(RocksDbWeight::get().reads(2 as u64))
+ .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(s as u64)))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(s as u64)))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity SuperOf (r:0 w:2)
+ /// The range of component `p` is `[0, 100]`.
+ fn set_subs_old(p: u32, ) -> Weight {
+ // Minimum execution time: 12_232 nanoseconds.
+ Weight::from_ref_time(34_009_761 as u64)
+ // Standard Error: 5_047
+ .saturating_add(Weight::from_ref_time(1_113_100 as u64).saturating_mul(p as u64))
+ .saturating_add(RocksDbWeight::get().reads(2 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(p as u64)))
+ }
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ // Storage: Identity SuperOf (r:0 w:100)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `s` is `[0, 100]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn clear_identity(r: u32, s: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 57_144 nanoseconds.
+ Weight::from_ref_time(41_559_247 as u64)
+ // Standard Error: 9_996
+ .saturating_add(Weight::from_ref_time(146_770 as u64).saturating_mul(r as u64))
+ // Standard Error: 1_952
+ .saturating_add(Weight::from_ref_time(1_086_673 as u64).saturating_mul(s as u64))
+ // Standard Error: 1_952
+ .saturating_add(Weight::from_ref_time(162_481 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(2 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(s as u64)))
+ }
+ // Storage: Identity Registrars (r:1 w:0)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn request_judgement(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 44_726 nanoseconds.
+ Weight::from_ref_time(41_637_308 as u64)
+ // Standard Error: 1_907
+ .saturating_add(Weight::from_ref_time(219_078 as u64).saturating_mul(r as u64))
+ // Standard Error: 372
+ .saturating_add(Weight::from_ref_time(309_888 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(2 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn cancel_request(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 39_719 nanoseconds.
+ Weight::from_ref_time(38_008_751 as u64)
+ // Standard Error: 2_394
+ .saturating_add(Weight::from_ref_time(181_870 as u64).saturating_mul(r as u64))
+ // Standard Error: 467
+ .saturating_add(Weight::from_ref_time(314_990 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn set_fee(r: u32, ) -> Weight {
+ // Minimum execution time: 10_634 nanoseconds.
+ Weight::from_ref_time(11_383_704 as u64)
+ // Standard Error: 2_250
+ .saturating_add(Weight::from_ref_time(193_094 as u64).saturating_mul(r as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn set_account_id(r: u32, ) -> Weight {
+ // Minimum execution time: 10_840 nanoseconds.
+ Weight::from_ref_time(11_638_740 as u64)
+ // Standard Error: 1_985
+ .saturating_add(Weight::from_ref_time(193_016 as u64).saturating_mul(r as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ fn set_fields(r: u32, ) -> Weight {
+ // Minimum execution time: 10_748 nanoseconds.
+ Weight::from_ref_time(11_346_901 as u64)
+ // Standard Error: 2_132
+ .saturating_add(Weight::from_ref_time(196_630 as u64).saturating_mul(r as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity Registrars (r:1 w:0)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `r` is `[1, 19]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn provide_judgement(r: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 33_682 nanoseconds.
+ Weight::from_ref_time(31_336_603 as u64)
+ // Standard Error: 3_056
+ .saturating_add(Weight::from_ref_time(200_403 as u64).saturating_mul(r as u64))
+ // Standard Error: 565
+ .saturating_add(Weight::from_ref_time(525_142 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(2 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity SubsOf (r:1 w:1)
+ // Storage: Identity IdentityOf (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: Identity SuperOf (r:0 w:100)
+ /// The range of component `r` is `[1, 20]`.
+ /// The range of component `s` is `[0, 100]`.
+ /// The range of component `x` is `[0, 100]`.
+ fn kill_identity(r: u32, s: u32, x: u32, ) -> Weight {
+ // Minimum execution time: 68_794 nanoseconds.
+ Weight::from_ref_time(52_114_486 as u64)
+ // Standard Error: 4_808
+ .saturating_add(Weight::from_ref_time(153_462 as u64).saturating_mul(r as u64))
+ // Standard Error: 939
+ .saturating_add(Weight::from_ref_time(1_084_612 as u64).saturating_mul(s as u64))
+ // Standard Error: 939
+ .saturating_add(Weight::from_ref_time(170_112 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(3 as u64))
+ .saturating_add(RocksDbWeight::get().writes(3 as u64))
+ .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(s as u64)))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `x` is `[0, 100]`.
+ /// The range of component `n` is `[0, 600]`.
+ fn force_insert_identities(x: u32, n: u32) -> Weight {
+ // Minimum execution time: 41_872 nanoseconds.
+ Weight::from_ref_time(40_230_216 as u64)
+ // Standard Error: 2_342
+ .saturating_add(Weight::from_ref_time(145_168 as u64))
+ // Standard Error: 457
+ .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64).saturating_mul(n as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:1)
+ /// The range of component `x` is `[0, 100]`.
+ /// The range of component `n` is `[0, 600]`.
+ fn force_remove_identities(x: u32, n: u32) -> Weight {
+ // Minimum execution time: 41_872 nanoseconds.
+ Weight::from_ref_time(40_230_216 as u64)
+ // Standard Error: 2_342
+ .saturating_add(Weight::from_ref_time(145_168 as u64))
+ // Standard Error: 457
+ .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(x as u64))
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64).saturating_mul(n as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SuperOf (r:1 w:1)
+ // Storage: Identity SubsOf (r:1 w:1)
+ /// The range of component `s` is `[0, 99]`.
+ fn add_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 37_914 nanoseconds.
+ Weight::from_ref_time(43_488_083 as u64)
+ // Standard Error: 1_631
+ .saturating_add(Weight::from_ref_time(118_845 as u64).saturating_mul(s as u64))
+ .saturating_add(RocksDbWeight::get().reads(3 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SuperOf (r:1 w:1)
+ /// The range of component `s` is `[1, 100]`.
+ fn rename_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 16_124 nanoseconds.
+ Weight::from_ref_time(18_580_462 as u64)
+ // Standard Error: 688
+ .saturating_add(Weight::from_ref_time(67_220 as u64).saturating_mul(s as u64))
+ .saturating_add(RocksDbWeight::get().reads(2 as u64))
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Identity IdentityOf (r:1 w:0)
+ // Storage: Identity SuperOf (r:1 w:1)
+ // Storage: Identity SubsOf (r:1 w:1)
+ /// The range of component `s` is `[1, 100]`.
+ fn remove_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 41_517 nanoseconds.
+ Weight::from_ref_time(45_123_530 as u64)
+ // Standard Error: 1_530
+ .saturating_add(Weight::from_ref_time(105_429 as u64).saturating_mul(s as u64))
+ .saturating_add(RocksDbWeight::get().reads(3 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+ // Storage: Identity SuperOf (r:1 w:1)
+ // Storage: Identity SubsOf (r:1 w:1)
+ /// The range of component `s` is `[0, 99]`.
+ fn quit_sub(s: u32, ) -> Weight {
+ // Minimum execution time: 30_171 nanoseconds.
+ Weight::from_ref_time(33_355_514 as u64)
+ // Standard Error: 1_286
+ .saturating_add(Weight::from_ref_time(114_716 as u64).saturating_mul(s as u64))
+ .saturating_add(RocksDbWeight::get().reads(2 as u64))
+ .saturating_add(RocksDbWeight::get().writes(2 as u64))
+ }
+}
primitives/common/src/constants.rsdiffbeforeafterboth--- a/primitives/common/src/constants.rs
+++ b/primitives/common/src/constants.rs
@@ -42,6 +42,15 @@
pub const CENTIUNIQUE: Balance = 10 * MILLIUNIQUE;
pub const UNIQUE: Balance = 100 * CENTIUNIQUE;
+/// Minimum balance required to create or keep an account open.
+pub const EXISTENTIAL_DEPOSIT: u128 = 0;
+/// Amount of Balance reserved for candidate registration.
+pub const GENESIS_LICENSE_BOND: u128 = 1_000_000_000_000 * UNIQUE;
+/// Amount of maximum collators for Collator Selection.
+pub const MAX_COLLATORS: u32 = 10;
+/// How long a periodic session lasts in blocks.
+pub const SESSION_LENGTH: BlockNumber = HOURS;
+
// Targeting 0.1 UNQ per transfer
pub const WEIGHT_TO_FEE_COEFF: u64 = /*<weight2fee>*/77_071_069_464_131_590/*</weight2fee>*/;
runtime/common/config/pallets/collator_selection.rsdiffbeforeafterboth--- /dev/null
+++ b/runtime/common/config/pallets/collator_selection.rs
@@ -0,0 +1,98 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use frame_support::{parameter_types, PalletId};
+use frame_system::EnsureRoot;
+use crate::{
+ AccountId, Balance, Balances, BlockNumber, Runtime, RuntimeEvent, Aura, Session, SessionKeys,
+ CollatorSelection, Treasury,
+ config::pallets::{MaxCollators, SessionPeriod, TreasuryAccountId},
+};
+use sp_runtime::Perbill;
+use up_common::constants::{UNIQUE, MILLIUNIQUE};
+
+parameter_types! {
+ pub const SessionOffset: BlockNumber = 0;
+}
+
+impl pallet_session::Config for Runtime {
+ type RuntimeEvent = RuntimeEvent;
+ type ValidatorId = <Self as frame_system::Config>::AccountId;
+ // we don't have stash and controller, thus we don't need the convert as well.
+ type ValidatorIdOf = pallet_collator_selection::IdentityCollator;
+ type ShouldEndSession = pallet_session::PeriodicSessions<SessionPeriod, SessionOffset>;
+ type NextSessionRotation = pallet_session::PeriodicSessions<SessionPeriod, SessionOffset>;
+ type SessionManager = CollatorSelection;
+ // Essentially just Aura, but lets be pedantic.
+ type SessionHandler = <SessionKeys as sp_runtime::traits::OpaqueKeys>::KeyTypeIdProviders;
+ type Keys = SessionKeys;
+ type WeightInfo = pallet_session::weights::SubstrateWeight<Self>; // ();
+}
+
+parameter_types! {
+ pub const UncleGenerations: u32 = 0;
+}
+
+impl pallet_authorship::Config for Runtime {
+ type FindAuthor = pallet_session::FindAccountFromAuthorIndex<Self, Aura>;
+ type UncleGenerations = UncleGenerations;
+ type FilterUncle = ();
+ type EventHandler = CollatorSelection;
+}
+
+parameter_types! {
+ // These do not matter as we forbid non-sudo operations with the identity pallet
+ pub const BasicDeposit: Balance = 10 * UNIQUE;
+ pub const FieldDeposit: Balance = 25 * MILLIUNIQUE;
+ pub const SubAccountDeposit: Balance = 2 * UNIQUE;
+ pub const MaxSubAccounts: u32 = 100;
+ pub const MaxAdditionalFields: u32 = 100;
+ pub const MaxRegistrars: u32 = 20;
+}
+
+impl pallet_identity::Config for Runtime {
+ type RuntimeEvent = RuntimeEvent;
+ type Currency = Balances;
+ type BasicDeposit = BasicDeposit;
+ type FieldDeposit = FieldDeposit;
+ type MaxAdditionalFields = MaxAdditionalFields;
+ type MaxRegistrars = MaxRegistrars;
+ type MaxSubAccounts = MaxSubAccounts;
+ type SubAccountDeposit = SubAccountDeposit;
+ type RegistrarOrigin = EnsureRoot<<Self as frame_system::Config>::AccountId>;
+ type ForceOrigin = EnsureRoot<<Self as frame_system::Config>::AccountId>;
+ type Slashed = Treasury;
+ type WeightInfo = pallet_identity::weights::SubstrateWeight<Runtime>;
+}
+
+parameter_types! {
+ pub const PotId: PalletId = PalletId(*b"PotStake");
+ pub const SlashRatio: Perbill = Perbill::from_percent(100);
+}
+
+impl pallet_collator_selection::Config for Runtime {
+ type RuntimeEvent = RuntimeEvent;
+ // We allow root only to execute privileged collator selection operations.
+ type UpdateOrigin = EnsureRoot<AccountId>;
+ type TreasuryAccountId = TreasuryAccountId;
+ type PotId = PotId;
+ type MaxCollators = MaxCollators;
+ type SlashRatio = SlashRatio;
+ type ValidatorId = <Self as frame_system::Config>::AccountId;
+ type ValidatorIdOf = pallet_collator_selection::IdentityCollator;
+ type ValidatorRegistration = Session;
+ type WeightInfo = pallet_collator_selection::weights::SubstrateWeight<Runtime>;
+}
runtime/common/config/pallets/mod.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/mod.rs
+++ b/runtime/common/config/pallets/mod.rs
@@ -47,6 +47,9 @@
#[cfg(feature = "app-promotion")]
pub mod app_promotion;
+#[cfg(feature = "collator-selection")]
+pub mod collator_selection;
+
parameter_types! {
pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();
pub const CollectionCreationPrice: Balance = 2 * UNIQUE;
@@ -101,14 +104,24 @@
parameter_types! {
pub AppPromotionDailyRate: Perbill = Perbill::from_rational(5u32, 10_000);
+ pub const MaxCollators: u32 = MAX_COLLATORS;
+ pub const LicenseBond: Balance = GENESIS_LICENSE_BOND;
+ pub const SessionPeriod: BlockNumber = SESSION_LENGTH;
pub const DayRelayBlocks: BlockNumber = RELAY_DAYS;
}
+
impl pallet_configuration::Config for Runtime {
+ type RuntimeEvent = RuntimeEvent;
+ type Currency = Balances;
type DefaultWeightToFeeCoefficient = ConstU64<{ up_common::constants::WEIGHT_TO_FEE_COEFF }>;
type DefaultMinGasPrice = ConstU64<{ up_common::constants::MIN_GAS_PRICE }>;
+ type DefaultCollatorSelectionMaxCollators = MaxCollators;
+ type DefaultCollatorSelectionKickThreshold = SessionPeriod;
+ type DefaultCollatorSelectionLicenseBond = LicenseBond;
type MaxXcmAllowedLocations = ConstU32<16>;
type AppPromotionDailyRate = AppPromotionDailyRate;
type DayRelayBlocks = DayRelayBlocks;
+ type WeightInfo = pallet_configuration::weights::SubstrateWeight<Self>;
}
impl pallet_maintenance::Config for Runtime {
runtime/common/config/substrate.rsdiffbeforeafterboth--- a/runtime/common/config/substrate.rs
+++ b/runtime/common/config/substrate.rs
@@ -131,7 +131,7 @@
parameter_types! {
// pub const ExistentialDeposit: u128 = 500;
- pub const ExistentialDeposit: u128 = 0;
+ pub const ExistentialDeposit: u128 = EXISTENTIAL_DEPOSIT;
pub const MaxLocks: u32 = 50;
pub const MaxReserves: u32 = 50;
}
runtime/common/construct_runtime/mod.rsdiffbeforeafterboth--- a/runtime/common/construct_runtime/mod.rs
+++ b/runtime/common/construct_runtime/mod.rs
@@ -32,8 +32,17 @@
ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Config, Storage, Inherent, Event<T>, ValidateUnsigned} = 20,
ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21,
- Aura: pallet_aura::{Pallet, Config<T>} = 22,
- AuraExt: cumulus_pallet_aura_ext::{Pallet, Config} = 23,
+ #[runtimes(quartz)]
+ Authorship: pallet_authorship::{Pallet, Call, Storage} = 22,
+
+ #[runtimes(quartz)]
+ CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event<T>, Config<T>} = 23,
+
+ #[runtimes(quartz)]
+ Session: pallet_session::{Pallet, Call, Storage, Event, Config<T>} = 24,
+
+ Aura: pallet_aura::{Pallet, Config<T>} = 25,
+ AuraExt: cumulus_pallet_aura_ext::{Pallet, Config} = 26,
Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 30,
RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 31,
@@ -47,6 +56,9 @@
Tokens: orml_tokens = 39,
// Contracts: pallet_contracts::{Pallet, Call, Storage, Event<T>} = 38,
+ #[runtimes(quartz)]
+ Identity: pallet_identity::{Pallet, Call, Storage, Event<T>} = 40,
+
// XCM helpers.
XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 50,
PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin} = 51,
@@ -60,7 +72,7 @@
// #[runtimes(opal)]
// Scheduler: pallet_unique_scheduler_v2::{Pallet, Call, Storage, Event<T>} = 62,
- Configuration: pallet_configuration::{Pallet, Call, Storage} = 63,
+ Configuration: pallet_configuration::{Pallet, Call, Storage, Event<T>} = 63,
Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
// ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
runtime/common/identity.rsdiffbeforeafterboth--- /dev/null
+++ b/runtime/common/identity.rs
@@ -0,0 +1,67 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use scale_info::TypeInfo;
+use codec::{Encode, Decode};
+use up_common::types::AccountId;
+use crate::RuntimeCall;
+
+use sp_runtime::{
+ traits::{DispatchInfoOf, SignedExtension},
+ transaction_validity::{
+ TransactionValidity, ValidTransaction, InvalidTransaction, TransactionValidityError,
+ },
+};
+
+#[derive(Debug, Encode, Decode, PartialEq, Eq, Clone, TypeInfo)]
+pub struct DisableIdentityCalls;
+
+impl SignedExtension for DisableIdentityCalls {
+ type AccountId = AccountId;
+ type Call = RuntimeCall;
+ type AdditionalSigned = ();
+ type Pre = ();
+
+ const IDENTIFIER: &'static str = "DisableIdentityCalls";
+
+ fn additional_signed(&self) -> Result<Self::AdditionalSigned, TransactionValidityError> {
+ Ok(())
+ }
+
+ fn pre_dispatch(
+ self,
+ who: &Self::AccountId,
+ call: &Self::Call,
+ info: &DispatchInfoOf<Self::Call>,
+ len: usize,
+ ) -> Result<Self::Pre, TransactionValidityError> {
+ self.validate(who, call, info, len).map(|_| ())
+ }
+
+ fn validate(
+ &self,
+ _who: &Self::AccountId,
+ call: &Self::Call,
+ _info: &DispatchInfoOf<Self::Call>,
+ _len: usize,
+ ) -> TransactionValidity {
+ match call {
+ #[cfg(feature = "collator-selection")]
+ RuntimeCall::Identity(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),
+ _ => Ok(ValidTransaction::default()),
+ }
+ }
+}
runtime/common/maintenance.rsdiffbeforeafterboth--- a/runtime/common/maintenance.rs
+++ b/runtime/common/maintenance.rs
@@ -85,6 +85,12 @@
Err(TransactionValidityError::Invalid(InvalidTransaction::Call))
}
+ #[cfg(feature = "collator-selection")]
+ RuntimeCall::CollatorSelection(_)
+ | RuntimeCall::Authorship(_)
+ | RuntimeCall::Session(_)
+ | RuntimeCall::Identity(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),
+
#[cfg(feature = "pallet-test-utils")]
RuntimeCall::TestUtils(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),
runtime/common/mod.rsdiffbeforeafterboth--- a/runtime/common/mod.rs
+++ b/runtime/common/mod.rs
@@ -18,6 +18,7 @@
pub mod construct_runtime;
pub mod dispatch;
pub mod ethereum;
+pub mod identity;
pub mod instance;
pub mod maintenance;
pub mod runtime_apis;
@@ -33,7 +34,10 @@
pub mod tests;
use sp_core::H160;
-use frame_support::traits::{Currency, OnUnbalanced, Imbalance};
+use frame_support::{
+ traits::{Currency, OnUnbalanced, Imbalance},
+ weights::Weight,
+};
use sp_runtime::{
generic,
traits::{BlakeTwo256, BlockNumberProvider},
@@ -93,6 +97,7 @@
frame_system::CheckNonce<Runtime>,
frame_system::CheckWeight<Runtime>,
maintenance::CheckMaintenance,
+ identity::DisableIdentityCalls,
ChargeTransactionPayment,
//pallet_contract_helpers::ContractHelpersExtension<Runtime>,
pallet_ethereum::FakeTransactionFinalizer<Runtime>,
@@ -113,6 +118,7 @@
frame_system::ChainContext<Runtime>,
Runtime,
AllPalletsWithSystem,
+ AuraToCollatorSelection,
>;
type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;
@@ -179,3 +185,164 @@
/// Transfer tokens to the given account from the Parachain account.
TransferToken(XAccountId, XBalance),
}
+
+pub struct AuraToCollatorSelection;
+impl frame_support::traits::OnRuntimeUpgrade for AuraToCollatorSelection {
+ fn on_runtime_upgrade() -> Weight {
+ #[cfg(feature = "collator-selection")]
+ {
+ use frame_support::{BoundedVec, storage::migration};
+ use sp_runtime::{traits::OpaqueKeys, RuntimeAppPublic};
+ use pallet_session::SessionManager;
+ use crate::config::pallets::MaxCollators;
+
+ let mut weight = <Runtime as frame_system::Config>::DbWeight::get().reads(1);
+
+ let version = migration::get_storage_value::<()>(
+ b"AuraToCollatorSelection",
+ b"StorageVersion",
+ &[],
+ );
+
+ let should_upgrade = match version {
+ None => true,
+ Some(_) => false,
+ };
+
+ if should_upgrade {
+ log::info!(
+ target: "runtime::aura_to_collator_selection",
+ "Running migration of Aura authorities to Collator Selection invulnerables"
+ );
+
+ let invulnerables = pallet_aura::Pallet::<Runtime>::authorities()
+ .iter()
+ .cloned()
+ .filter_map(|authority_id| {
+ weight.saturating_accrue(<Runtime as frame_system::Config>::DbWeight::get().reads_writes(1, 1));
+ let vec = authority_id.clone().to_raw_vec();
+ let slice = vec.as_slice();
+ let array: Option<[u8; 32]> = match slice.try_into() {
+ Ok(a) => Some(a),
+ Err(_) => {
+ log::error!("Failed to convert an Aura authority to a Collator Selection invulnerable: {:?}", authority_id);
+ None
+ },
+ };
+ array.map(|a| (AccountId::from(a), authority_id))
+ })
+ .collect::<Vec<_>>();
+
+ let bounded_invulnerables = BoundedVec::<_, MaxCollators>::try_from(
+ invulnerables
+ .iter()
+ .cloned()
+ .map(|(acc, _)| acc)
+ .collect::<Vec<_>>(),
+ )
+ .expect("Existing collators/invulnerables are more than MaxCollators");
+
+ <pallet_collator_selection::Invulnerables<Runtime>>::put(bounded_invulnerables);
+
+ let keys = invulnerables
+ .into_iter()
+ .map(|(acc, aura)| {
+ (
+ acc.clone(), // account id
+ acc, // validator id
+ SessionKeys { aura: aura.clone() }, // session keys
+ )
+ })
+ .collect::<Vec<_>>();
+
+ for (account, val, keys) in keys.iter().cloned() {
+ for id in <Runtime as pallet_session::Config>::Keys::key_ids() {
+ <pallet_session::KeyOwner<Runtime>>::insert((*id, keys.get_raw(*id)), &val)
+ }
+ <pallet_session::NextKeys<Runtime>>::insert(&val, &keys);
+ // todo exercise caution, the following is taken from genesis
+ if frame_system::Pallet::<Runtime>::inc_consumers_without_limit(&account)
+ .is_err()
+ {
+ log::warn!(
+ "We have entered an error with incrementing consumers without limit during the migration"
+ );
+ // This will leak a provider reference, however it only happens once (at
+ // genesis) so it's really not a big deal and we assume that the user wants to
+ // do this since it's the only way a non-endowed account can contain a session
+ // key.
+ frame_system::Pallet::<Runtime>::inc_providers(&account);
+ }
+ }
+
+ let initial_validators_0 =
+ <Runtime as pallet_session::Config>::SessionManager::new_session(0)
+ .unwrap_or_else(|| {
+ frame_support::print(
+ "No initial validator provided by `SessionManager`, use \
+ session config keys to generate initial validator set.",
+ );
+ keys.iter().map(|x| x.1.clone()).collect()
+ });
+ /*assert!(
+ !initial_validators_0.is_empty(),
+ "Empty validator set for session 0 in (pseudo) genesis block!"
+ );*/
+
+ let initial_validators_1 =
+ <Runtime as pallet_session::Config>::SessionManager::new_session(1)
+ .unwrap_or_else(|| initial_validators_0.clone());
+ /*assert!(
+ !initial_validators_1.is_empty(),
+ "Empty validator set for session 1 in (pseudo) genesis block!"
+ );*/
+
+ let queued_keys: Vec<_> = initial_validators_1
+ .iter()
+ .cloned()
+ .map(|v| {
+ (
+ v.clone(),
+ <pallet_session::NextKeys<Runtime>>::get(&v)
+ .expect("Validator in session 1 missing keys!"),
+ )
+ })
+ .collect();
+
+ // Tell everyone about the genesis session keys -- Aura must've already initialized it
+ //<Runtime as pallet_session::Config>::SessionHandler::on_genesis_session::<<Runtime as pallet_session::Config>::Keys>(&queued_keys);
+
+ <pallet_session::Validators<Runtime>>::put(initial_validators_0);
+ <pallet_session::QueuedKeys<Runtime>>::put(queued_keys);
+
+ <Runtime as pallet_session::Config>::SessionManager::start_session(0);
+
+ log::info!(
+ target: "runtime::aura_to_collator_selection",
+ "Migration of Aura authorities to Collator Selection invulnerables is complete."
+ );
+
+ migration::put_storage_value::<()>(
+ b"AuraToCollatorSelection",
+ b"StorageVersion",
+ &[],
+ (),
+ );
+
+ weight += <Runtime as frame_system::Config>::DbWeight::get().writes(1)
+ } else {
+ log::info!(
+ target: "runtime::aura_to_collator_selection",
+ "The storage migration has already been flagged as complete. No migration needs to be done.",
+ );
+ }
+
+ weight
+ }
+
+ #[cfg(not(feature = "collator-selection"))]
+ {
+ Weight::zero()
+ }
+ }
+}
runtime/common/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -686,6 +686,7 @@
list_benchmark!(list, extra, pallet_unique, Unique);
list_benchmark!(list, extra, pallet_structure, Structure);
list_benchmark!(list, extra, pallet_inflation, Inflation);
+ list_benchmark!(list, extra, pallet_configuration, Configuration);
#[cfg(feature = "app-promotion")]
list_benchmark!(list, extra, pallet_app_promotion, AppPromotion);
@@ -705,6 +706,12 @@
#[cfg(feature = "rmrk")]
list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);
+ #[cfg(feature = "collator-selection")]
+ list_benchmark!(list, extra, pallet_collator_selection, CollatorSelection);
+
+ #[cfg(feature = "collator-selection")]
+ list_benchmark!(list, extra, pallet_identity, Identity);
+
#[cfg(feature = "foreign-assets")]
list_benchmark!(list, extra, pallet_foreign_assets, ForeignAssets);
@@ -749,6 +756,7 @@
add_benchmark!(params, batches, pallet_unique, Unique);
add_benchmark!(params, batches, pallet_structure, Structure);
add_benchmark!(params, batches, pallet_inflation, Inflation);
+ add_benchmark!(params, batches, pallet_configuration, Configuration);
#[cfg(feature = "app-promotion")]
add_benchmark!(params, batches, pallet_app_promotion, AppPromotion);
@@ -768,6 +776,12 @@
#[cfg(feature = "rmrk")]
add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);
+ #[cfg(feature = "collator-selection")]
+ add_benchmark!(params, batches, pallet_collator_selection, CollatorSelection);
+
+ #[cfg(feature = "collator-selection")]
+ add_benchmark!(params, batches, pallet_identity, Identity);
+
#[cfg(feature = "foreign-assets")]
add_benchmark!(params, batches, pallet_foreign_assets, ForeignAssets);
runtime/common/tests/mod.rsdiffbeforeafterboth--- a/runtime/common/tests/mod.rs
+++ b/runtime/common/tests/mod.rs
@@ -18,7 +18,7 @@
use sp_core::{Public, Pair};
use sp_std::vec;
use up_common::types::AuraId;
-use crate::{GenesisConfig, ParachainInfoConfig, AuraConfig};
+use crate::{GenesisConfig, ParachainInfoConfig};
pub mod xcm;
@@ -28,7 +28,56 @@
.public()
}
+#[cfg(feature = "collator-selection")]
fn new_test_ext(para_id: u32) -> sp_io::TestExternalities {
+ use sp_core::{sr25519};
+ use sp_runtime::traits::{IdentifyAccount, Verify};
+ use crate::{AccountId, Signature, SessionKeys, CollatorSelectionConfig, SessionConfig};
+
+ type AccountPublic = <Signature as Verify>::Signer;
+
+ fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId
+ where
+ AccountPublic: From<<TPublic::Pair as Pair>::Public>,
+ {
+ AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()
+ }
+
+ let accounts = vec!["Alice", "Bob"];
+ let keys = accounts
+ .iter()
+ .map(|&acc| {
+ let account_id = get_account_id_from_seed::<sr25519::Public>(acc);
+ (
+ account_id.clone(),
+ account_id,
+ SessionKeys {
+ aura: get_from_seed::<AuraId>(acc),
+ },
+ )
+ })
+ .collect::<Vec<_>>();
+ let invulnerables = accounts
+ .iter()
+ .map(|acc| get_account_id_from_seed::<sr25519::Public>(acc))
+ .collect::<Vec<_>>();
+
+ let cfg = GenesisConfig {
+ collator_selection: CollatorSelectionConfig { invulnerables },
+ session: SessionConfig { keys },
+ parachain_info: ParachainInfoConfig {
+ parachain_id: para_id.into(),
+ },
+ ..GenesisConfig::default()
+ };
+
+ cfg.build_storage().unwrap().into()
+}
+
+#[cfg(not(feature = "collator-selection"))]
+fn new_test_ext(para_id: u32) -> sp_io::TestExternalities {
+ use crate::AuraConfig;
+
let cfg = GenesisConfig {
aura: AuraConfig {
authorities: vec![
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -28,6 +28,7 @@
'pallet-evm-coder-substrate/runtime-benchmarks',
'pallet-balances/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
+ 'pallet-configuration/runtime-benchmarks',
'pallet-common/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-fungible/runtime-benchmarks',
@@ -39,6 +40,8 @@
'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
'pallet-app-promotion/runtime-benchmarks',
+ 'pallet-collator-selection/runtime-benchmarks',
+ 'pallet-identity/runtime-benchmarks',
'pallet-unique-scheduler-v2/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
@@ -69,6 +72,10 @@
'pallet-xcm/try-runtime',
'cumulus-pallet-xcm/try-runtime',
'cumulus-pallet-dmp-queue/try-runtime',
+ "pallet-authorship/try-runtime",
+ "pallet-collator-selection/try-runtime",
+ "pallet-session/try-runtime",
+ "pallet-identity/try-runtime",
'pallet-inflation/try-runtime',
'pallet-unique/try-runtime',
'pallet-configuration/try-runtime',
@@ -113,6 +120,10 @@
# 'pallet-contracts-primitives/std',
# 'pallet-contracts-rpc-runtime-api/std',
# 'pallet-contract-helpers/std',
+ "pallet-authorship/std",
+ 'pallet-collator-selection/std',
+ "pallet-session/std",
+ 'pallet-identity/std',
'pallet-randomness-collective-flip/std',
'pallet-sudo/std',
'pallet-timestamp/std',
@@ -192,6 +203,7 @@
rmrk = []
foreign-assets = []
app-promotion = []
+collator-selection = []
################################################################################
# Substrate Dependencies
@@ -255,6 +267,16 @@
git = "https://github.com/paritytech/substrate"
branch = "polkadot-v0.9.36"
+[dependencies.pallet-authorship]
+default-features = false
+git = 'https://github.com/paritytech/substrate'
+branch = 'polkadot-v0.9.36'
+
+[dependencies.pallet-session]
+default-features = false
+git = 'https://github.com/paritytech/substrate'
+branch = 'polkadot-v0.9.36'
+
[dependencies.pallet-balances]
default-features = false
git = "https://github.com/paritytech/substrate"
@@ -478,6 +500,8 @@
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
+pallet-collator-selection = { default-features = false, path = "../../pallets/collator-selection" }
+pallet-identity = { default-features = false, path = "../../pallets/identity" }
pallet-configuration = { default-features = false, path = "../../pallets/configuration" }
pallet-common = { default-features = false, path = "../../pallets/common" }
pallet-structure = { default-features = false, path = "../../pallets/structure" }
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -28,6 +28,7 @@
'pallet-evm-coder-substrate/runtime-benchmarks',
'pallet-balances/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
+ 'pallet-configuration/runtime-benchmarks',
'pallet-common/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-fungible/runtime-benchmarks',
@@ -38,6 +39,8 @@
'pallet-unique/runtime-benchmarks',
'pallet-foreign-assets/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
+ 'pallet-collator-selection/runtime-benchmarks',
+ 'pallet-identity/runtime-benchmarks',
'pallet-app-promotion/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
@@ -67,6 +70,10 @@
'pallet-xcm/try-runtime',
'cumulus-pallet-xcm/try-runtime',
'cumulus-pallet-dmp-queue/try-runtime',
+ "pallet-authorship/try-runtime",
+ "pallet-collator-selection/try-runtime",
+ "pallet-session/try-runtime",
+ "pallet-identity/try-runtime",
'pallet-inflation/try-runtime',
'pallet-unique/try-runtime',
'pallet-configuration/try-runtime',
@@ -108,6 +115,10 @@
# 'pallet-contracts-primitives/std',
# 'pallet-contracts-rpc-runtime-api/std',
# 'pallet-contract-helpers/std',
+ "pallet-authorship/std",
+ 'pallet-collator-selection/std',
+ "pallet-session/std",
+ "pallet-identity/std",
'pallet-randomness-collective-flip/std',
'pallet-sudo/std',
'pallet-timestamp/std',
@@ -170,7 +181,7 @@
"pallet-maintenance/std",
]
limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
-quartz-runtime = ['refungible', 'app-promotion', 'foreign-assets']
+quartz-runtime = ['refungible', 'app-promotion', 'collator-selection', 'foreign-assets']
become-sapphire = []
pov-estimate = []
@@ -178,6 +189,7 @@
scheduler = []
rmrk = []
foreign-assets = []
+collator-selection = []
app-promotion = []
################################################################################
@@ -242,6 +254,16 @@
git = "https://github.com/paritytech/substrate"
branch = "polkadot-v0.9.36"
+[dependencies.pallet-authorship]
+default-features = false
+git = 'https://github.com/paritytech/substrate'
+branch = 'polkadot-v0.9.36'
+
+[dependencies.pallet-session]
+default-features = false
+git = 'https://github.com/paritytech/substrate'
+branch = 'polkadot-v0.9.36'
+
[dependencies.pallet-balances]
default-features = false
git = "https://github.com/paritytech/substrate"
@@ -472,6 +494,8 @@
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
+pallet-collator-selection = { default-features = false, path = "../../pallets/collator-selection" }
+pallet-identity = { default-features = false, path = "../../pallets/identity" }
pallet-configuration = { default-features = false, path = "../../pallets/configuration" }
pallet-common = { default-features = false, path = "../../pallets/common" }
pallet-structure = { default-features = false, path = "../../pallets/structure" }
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -28,6 +28,7 @@
'pallet-evm-coder-substrate/runtime-benchmarks',
'pallet-balances/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
+ 'pallet-configuration/runtime-benchmarks',
'pallet-common/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-fungible/runtime-benchmarks',
@@ -38,6 +39,8 @@
'pallet-unique/runtime-benchmarks',
'pallet-foreign-assets/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
+ 'pallet-collator-selection/runtime-benchmarks',
+ 'pallet-identity/runtime-benchmarks',
'pallet-app-promotion/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
@@ -67,6 +70,10 @@
'pallet-xcm/try-runtime',
'cumulus-pallet-xcm/try-runtime',
'cumulus-pallet-dmp-queue/try-runtime',
+ "pallet-authorship/try-runtime",
+ "pallet-collator-selection/try-runtime",
+ "pallet-session/try-runtime",
+ "pallet-identity/try-runtime",
'pallet-inflation/try-runtime',
'pallet-unique/try-runtime',
'pallet-configuration/try-runtime',
@@ -108,6 +115,10 @@
# 'pallet-contracts-primitives/std',
# 'pallet-contracts-rpc-runtime-api/std',
# 'pallet-contract-helpers/std',
+ "pallet-authorship/std",
+ 'pallet-collator-selection/std',
+ "pallet-session/std",
+ "pallet-identity/std",
'pallet-randomness-collective-flip/std',
'pallet-sudo/std',
'pallet-timestamp/std',
@@ -178,6 +189,7 @@
scheduler = []
rmrk = []
foreign-assets = []
+collator-selection = []
################################################################################
# Substrate Dependencies
@@ -241,6 +253,16 @@
git = "https://github.com/paritytech/substrate"
branch = "polkadot-v0.9.36"
+[dependencies.pallet-authorship]
+default-features = false
+git = 'https://github.com/paritytech/substrate'
+branch = 'polkadot-v0.9.36'
+
+[dependencies.pallet-session]
+default-features = false
+git = 'https://github.com/paritytech/substrate'
+branch = 'polkadot-v0.9.36'
+
[dependencies.pallet-balances]
default-features = false
git = "https://github.com/paritytech/substrate"
@@ -462,6 +484,8 @@
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
+pallet-collator-selection = { default-features = false, path = "../../pallets/collator-selection" }
+pallet-identity = { default-features = false, path = "../../pallets/identity" }
pallet-configuration = { default-features = false, path = "../../pallets/configuration" }
pallet-common = { default-features = false, path = "../../pallets/common" }
pallet-structure = { default-features = false, path = "../../pallets/structure" }
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -31,6 +31,7 @@
"lint": "eslint --ext .ts,.js src/",
"fix": "eslint --ext .ts,.js src/ --fix",
"setup": "ts-node ./src/util/globalSetup.ts",
+ "setIdentities": "ts-node ./src/util/identitySetter.ts",
"test": "yarn setup && mocha --timeout 9999999 -r ts-node/register './src/**/*.*test.ts'",
"testParallelFull": "yarn testParallel && yarn testSequential",
"testParallel": "yarn setup && mocha --parallel --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",
@@ -87,6 +88,8 @@
"testSchedulingEVM": "mocha --timeout 9999999 -r ts-node/register ./**/eth/scheduling.test.ts",
"testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts",
"testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",
+ "testCollatorSelection": "mocha --timeout 9999999 -r ts-node/register ./**/collatorSelection.*test.ts",
+ "testIdentity": "mocha --timeout 9999999 -r ts-node/register ./**/identity.*test.ts",
"testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",
"testLimits": "mocha --timeout 9999999 -r ts-node/register ./**/limits.test.ts",
"testEthCreateNFTCollection": "mocha --timeout 9999999 -r ts-node/register ./**/eth/createNFTCollection.test.ts",
tests/src/.outdated/substrate/substrate-api.tsdiffbeforeafterboth--- a/tests/src/.outdated/substrate/substrate-api.ts
+++ b/tests/src/.outdated/substrate/substrate-api.ts
@@ -41,6 +41,10 @@
extrinsic: {},
payload: {},
},
+ DisableIdentityCalls: {
+ extrinsic: {},
+ payload: {},
+ },
FakeTransactionFinalizer: {
extrinsic: {},
payload: {},
tests/src/collatorSelection.seqtest.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collatorSelection.seqtest.ts
@@ -0,0 +1,465 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import {IKeyringPair} from '@polkadot/types/types';
+import {usingPlaygrounds, expect, itSub, Pallets, requirePalletsOrSkip} from './util';
+
+async function resetInvulnerables() {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ const superuser = await privateKey('//Alice');
+ const alice = await privateKey('//Alice');
+ const bob = await privateKey('//Bob');
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+ if (!invulnerables.includes(alice.address) || !invulnerables.includes(bob.address) || invulnerables.length != 2) {
+ console.warn('Alice and Bob are not the invulnerables! Reinstating them back. '
+ + 'Current invulnerables\' size: ' + invulnerables.length);
+
+ let nonce = await helper.chain.getNonce(alice.address);
+ // In case there are too many invulnerables already, remove some of them, leaving space for Alice and Bob.
+ if (invulnerables.length + 2 >= helper.collatorSelection.maxCollators()) {
+ await Promise.all([
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerables.pop()], true, {nonce: nonce++}),
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerables.pop()], true, {nonce: nonce++}),
+ ]);
+ }
+
+ nonce = await helper.chain.getNonce(alice.address);
+ await Promise.all([
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}),
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}),
+ ]);
+
+ nonce = await helper.chain.getNonce(alice.address);
+ await Promise.all(invulnerables.map((invulnerable: any) => {
+ if (invulnerable == alice.address || invulnerable == bob.address) return new Promise<void>(res => res());
+ return helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerable], true, {nonce: nonce++});
+ }));
+ }
+ });
+}
+
+// todo:collator Most preferable to launch this test in parallel somehow -- or change the session period (1 hr).
+describe('Integration Test: Collator Selection', () => {
+ let superuser: IKeyringPair;
+ let previousLicenseBond = 0n;
+ let licenseBond = 0n;
+
+ before(async function() {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ requirePalletsOrSkip(this, helper, [Pallets.CollatorSelection]);
+ superuser = await privateKey('//Alice');
+
+ previousLicenseBond = await helper.collatorSelection.getLicenseBond();
+ licenseBond = 10n * helper.balance.getOneTokenNominal();
+ await helper.getSudo().collatorSelection.setLicenseBond(superuser, licenseBond);
+ });
+ });
+
+ describe('Dynamic shuffling of collators', () => {
+ // These two are the default invulnerables, and should return to be invulnerables after this suite.
+ let alice: IKeyringPair;
+ let bob: IKeyringPair;
+
+ let charlie: IKeyringPair;
+ let dave: IKeyringPair;
+
+ before(async function() {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ // todo:collator see again if blocks start to be finalized in dev mode
+ // Skip the collator block production in dev mode, since the blocks are sealed automatically.
+ if (await helper.arrange.isDevNode()) this.skip();
+
+ alice = await privateKey('//Alice');
+ bob = await privateKey('//Bob');
+ charlie = await privateKey('//Charlie');
+ dave = await privateKey('//Dave');
+
+ expect((await helper.session.setOwnKeysFromAddress(charlie))
+ .status.toLowerCase()).to.be.equal('success');
+ expect((await helper.session.setOwnKeysFromAddress(dave))
+ .status.toLowerCase()).to.be.equal('success');
+
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+ if (!invulnerables.includes(alice.address) || !invulnerables.includes(bob.address) || invulnerables.length != 2) {
+ console.warn('Alice and Bob are not the invulnerables! Reinstating them back. '
+ + 'Current invulnerables\' size: ' + invulnerables.length);
+
+ let nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all([
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}),
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}),
+ ]);
+
+ nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all(invulnerables.map((invulnerable: any) => {
+ if (invulnerable == alice.address || invulnerable == bob.address) return new Promise((res) => res);
+ return helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerable], true, {nonce: nonce++});
+ }));
+ }
+ });
+ });
+
+ itSub('Change invulnerables and make sure they start producing blocks', async ({helper}) => {
+ let nonce = await helper.chain.getNonce(superuser.address);
+ await expect(Promise.all([
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [charlie.address], true, {nonce: nonce++}),
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [dave.address], true, {nonce: nonce++}),
+ ])).to.be.fulfilled;
+
+ nonce = await helper.chain.getNonce(superuser.address);
+ await expect(Promise.all([
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [alice.address], true, {nonce: nonce++}),
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [bob.address], true, {nonce: nonce++}),
+ ])).to.be.fulfilled;
+
+ const newInvulnerables = await helper.collatorSelection.getInvulnerables();
+ expect(newInvulnerables).to.contain(charlie.address).and.contain(dave.address).and.be.length(2);
+
+ await helper.wait.newSessions(2);
+
+ const newValidators = await helper.callRpc('api.query.session.validators');
+ expect(newValidators).to.contain(charlie.address).and.contain(dave.address).and.be.length(2);
+
+ const lastBlockNumber = await helper.chain.getLatestBlockNumber();
+ await helper.wait.newBlocks(1);
+ const lastCharlieBlock = (await helper.callRpc('api.query.collatorSelection.lastAuthoredBlock', [charlie.address])).toNumber();
+ const lastDaveBlock = (await helper.callRpc('api.query.collatorSelection.lastAuthoredBlock', [dave.address])).toNumber();
+ expect(lastCharlieBlock >= lastBlockNumber || lastDaveBlock >= lastBlockNumber).to.be.true;
+ });
+
+ after(async () => {
+ await usingPlaygrounds(async (helper) => {
+ if (await helper.arrange.isDevNode()) return;
+
+ let nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all([
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}),
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}),
+ ]);
+
+ nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all([
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [charlie.address], true, {nonce: nonce++}),
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [dave.address], true, {nonce: nonce++}),
+ ]);
+ });
+ });
+ });
+
+ describe('Getting and releasing licenses to collate', () => {
+ let charlie: IKeyringPair;
+ let dave: IKeyringPair;
+ let crowd: IKeyringPair[];
+
+ before(async function() {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ charlie = await privateKey('//Charlie');
+ dave = await privateKey('//Dave');
+ crowd = await helper.arrange.createCrowd(20, 100n, superuser);
+
+ // set session keys for everyone
+ expect((await helper.session.setOwnKeysFromAddress(charlie))
+ .status.toLowerCase()).to.be.equal('success');
+ expect((await helper.session.setOwnKeysFromAddress(dave))
+ .status.toLowerCase()).to.be.equal('success');
+ await Promise.all(crowd.map(acc => helper.session.setOwnKeysFromAddress(acc)));
+ });
+ });
+
+ describe('Positive', () => {
+ itSub('Can lease and release a license', async ({helper}) => {
+ const account = crowd.pop()!;
+
+ // make sure it does not have any reserved funds
+ expect((await helper.balance.getSubstrateFull(account.address)).reserved).to.be.equal(0n);
+
+ // getting a license reserves a license bond cost
+ await helper.collatorSelection.obtainLicense(account);
+ expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(licenseBond);
+ expect((await helper.balance.getSubstrateFull(account.address)).reserved).to.be.equal(licenseBond);
+
+ // releasing a license un-reserves the license bond cost
+ await helper.collatorSelection.releaseLicense(account);
+ expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(0n);
+
+ const balance = await helper.balance.getSubstrateFull(account.address);
+ expect(balance.reserved).to.be.equal(0n);
+ expect(balance.free > 100n - licenseBond);
+ });
+
+ itSub('Can force revoke a license', async ({helper}) => {
+ const account = crowd.pop()!;
+
+ // getting a license reserves a license bond cost
+ const previousBalance = await helper.balance.getSubstrateFull(account.address);
+ await helper.collatorSelection.obtainLicense(account);
+ expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(licenseBond);
+
+ // force-releasing a license un-reserves the license bond cost as well
+ await helper.getSudo().collatorSelection.forceReleaseLicense(superuser, account.address);
+ expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(previousBalance.reserved);
+
+ const balance = await helper.balance.getSubstrateFull(account.address);
+ expect(balance.reserved).to.be.equal(previousBalance.reserved);
+ expect(balance.free > previousBalance.free - licenseBond);
+ });
+ });
+
+ describe('Negative', () => {
+ itSub('Cannot get a license without session keys set', async ({helper}) => {
+ const [account] = await helper.arrange.createAccounts([100n], superuser);
+ await expect(helper.collatorSelection.obtainLicense(account))
+ .to.be.rejectedWith(/collatorSelection.ValidatorNotRegistered/);
+ });
+
+ itSub('Cannot register a license twice', async ({helper}) => {
+ const account = crowd.pop()!;
+ await helper.collatorSelection.obtainLicense(account);
+ await expect(helper.collatorSelection.obtainLicense(account))
+ .to.be.rejectedWith(/collatorSelection.AlreadyHoldingLicense/);
+ });
+
+ itSub('Cannot release a license twice', async ({helper}) => {
+ const account = crowd.pop()!;
+ await helper.collatorSelection.obtainLicense(account);
+ await helper.collatorSelection.releaseLicense(account);
+ await expect(helper.collatorSelection.releaseLicense(account))
+ .to.be.rejectedWith(/collatorSelection.NoLicense/);
+ });
+
+ itSub('Cannot force revoke a license as non-sudo', async ({helper}) => {
+ const account = crowd.pop()!;
+ await helper.collatorSelection.obtainLicense(account);
+ await expect(helper.collatorSelection.forceReleaseLicense(superuser, account.address))
+ .to.be.rejectedWith(/BadOrigin/);
+ });
+ });
+ });
+
+ describe('Onboarding, collating, and offboarding as collator candidates', () => {
+ // These two are the default invulnerables, and should return to be invulnerables after this suite.
+ let charlie: IKeyringPair;
+ let dave: IKeyringPair;
+ let crowd: IKeyringPair[];
+
+ before(async function() {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ charlie = await privateKey('//Charlie');
+ dave = await privateKey('//Dave');
+ crowd = await helper.arrange.createCrowd(20, 100n, superuser);
+
+ // set session keys for everyone
+ expect((await helper.session.setOwnKeysFromAddress(charlie))
+ .status.toLowerCase()).to.be.equal('success');
+ expect((await helper.session.setOwnKeysFromAddress(dave))
+ .status.toLowerCase()).to.be.equal('success');
+ await Promise.all(crowd.map(acc => helper.session.setOwnKeysFromAddress(acc)));
+ });
+ });
+
+ describe('Positive', () => {
+ itSub('Can onboard and offboard repeatedly', async ({helper}) => {
+ const account = crowd.pop()!;
+ await helper.collatorSelection.obtainLicense(account);
+ await helper.collatorSelection.onboard(account);
+ expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([account.address]);
+
+ await helper.collatorSelection.offboard(account);
+ expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([]);
+
+ await helper.collatorSelection.onboard(account);
+ expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([account.address]);
+
+ await helper.collatorSelection.offboard(account);
+ expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([]);
+ });
+
+ itSub('Penalizes and forfeits license from faulty collators', async ({helper}) => {
+ // This one shouldn't even be able to produce blocks.
+ const account = crowd.pop()!;
+ await helper.collatorSelection.obtainLicense(account);
+ await helper.collatorSelection.onboard(account);
+ expect(await helper.collatorSelection.getCandidates()).to.contain(account.address);
+
+ // Wait for 3 new sessions before checking that the collator will be kicked:
+ // one to get collator onboarded, and another two for the collator to fail
+ await helper.wait.newSessions(3);
+
+ expect(await helper.collatorSelection.getCandidates()).to.not.contain(account.address);
+ expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(0n);
+
+ // The account's reserved funds get slashed as a penalty
+ const balance = await helper.balance.getSubstrateFull(account.address);
+ expect(balance.reserved).to.be.equal(0n);
+ expect(balance.free < 100n - licenseBond);
+ });
+ });
+
+ describe('Negative', () => {
+ itSub('Cannot onboard without a license', async ({helper}) => {
+ const account = crowd.pop()!;
+ await expect(helper.collatorSelection.onboard(account))
+ .to.be.rejectedWith(/collatorSelection.NoLicense/);
+ });
+
+ itSub('Cannot offboard without a license', async ({helper}) => {
+ const account = crowd.pop()!;
+ await expect(helper.collatorSelection.offboard(account))
+ .to.be.rejectedWith(/collatorSelection.NotCandidate/);
+ });
+
+ itSub('Cannot offboard while not onboarded', async ({helper}) => {
+ const account = crowd.pop()!;
+ await helper.collatorSelection.obtainLicense(account);
+ await expect(helper.collatorSelection.offboard(account))
+ .to.be.rejectedWith(/collatorSelection.NotCandidate/);
+ });
+
+ itSub('Cannot onboard while already onboarded', async ({helper}) => {
+ const account = crowd.pop()!;
+ await helper.collatorSelection.obtainLicense(account);
+ await helper.collatorSelection.onboard(account);
+ await expect(helper.collatorSelection.onboard(account))
+ .to.be.rejectedWith(/collatorSelection.AlreadyCandidate/);
+ });
+ });
+ });
+
+ describe('Addition and removal of invulnerables', () => {
+ before(async function() {
+ await resetInvulnerables();
+ });
+
+ describe('Positive', () => {
+ itSub('Adds an invulnerable', async ({helper}) => {
+ const [account] = await helper.arrange.createAccounts([10n], superuser);
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+
+ await helper.session.setOwnKeysFromAddress(account);
+ await helper.getSudo().collatorSelection.addInvulnerable(superuser, account.address);
+
+ const newInvulnerables = await helper.collatorSelection.getInvulnerables();
+ expect(invulnerables.concat(account.address)).to.have.all.members(newInvulnerables);
+ });
+
+ itSub('Removes an invulnerable', async ({helper}) => {
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+ const lastInvulnerable = invulnerables.pop()!;
+
+ await helper.getSudo().collatorSelection.removeInvulnerable(superuser, lastInvulnerable);
+ const newInvulnerables = await helper.collatorSelection.getInvulnerables();
+ // invulnerables had its last element removed, so they should be equal
+ expect(newInvulnerables).to.have.all.members(invulnerables);
+ });
+ });
+
+ describe('Negative', () => {
+ itSub('Does not duplicate an invulnerable', async ({helper}) => {
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+ // adding an already invulnerable should not fail, but should not duplicate it either
+ await expect(helper.getSudo().collatorSelection.addInvulnerable(superuser, invulnerables[0]))
+ .to.be.fulfilled;
+ const newInvulnerables = await helper.collatorSelection.getInvulnerables();
+ expect(newInvulnerables).to.have.all.members(invulnerables);
+ });
+
+ itSub('Cannot remove a non-existent invulnerable', async ({helper}) => {
+ const [account] = await helper.arrange.createAccounts([0n], superuser);
+ await expect(helper.getSudo().collatorSelection.removeInvulnerable(superuser, account.address))
+ .to.be.rejectedWith(/collatorSelection.NotInvulnerable/);
+ });
+
+ itSub('Cannot allow invulnerables to be empty', async ({helper}) => {
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+ const lastInvulnerable = invulnerables.pop()!;
+
+ let nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all(invulnerables.map((i: any) =>
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [i], true, {nonce: nonce++})));
+
+ await expect(helper.getSudo().collatorSelection.removeInvulnerable(superuser, lastInvulnerable))
+ .to.be.rejectedWith(/collatorSelection.TooFewInvulnerables/);
+
+ const newInvulnerables = await helper.collatorSelection.getInvulnerables();
+ expect(newInvulnerables).to.be.deep.equal([lastInvulnerable]);
+
+ // restore the invulnerables to the previous state
+ nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all(invulnerables.map((i: any) =>
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [i], true, {nonce: nonce++})));
+ });
+
+ itSub('Cannot have too many invulnerables', async ({helper}) => {
+ // todo:collator make sure that there is enough session time for a set of tests
+ // 28 non-functioning collators, teehee.
+
+ const invulnerablesLength = (await helper.collatorSelection.getInvulnerables()).length;
+ const invulnerablesUntilLimit = helper.collatorSelection.maxCollators() - invulnerablesLength;
+ const newInvulnerables = await helper.arrange.createAccounts(Array(invulnerablesUntilLimit).fill(10n), superuser);
+ const [lastInvulnerable] = await helper.arrange.createAccounts([10n], superuser);
+
+ await Promise.all(newInvulnerables.map((i: IKeyringPair) =>
+ helper.session.setOwnKeysFromAddress(i)));
+ await helper.session.setOwnKeysFromAddress(lastInvulnerable);
+
+ let nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all(newInvulnerables.map((i: IKeyringPair) =>
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [i.address], true, {nonce: nonce++})));
+
+ await expect(helper.getSudo().collatorSelection.addInvulnerable(superuser, lastInvulnerable.address))
+ .to.be.rejectedWith(/collatorSelection.TooManyInvulnerables/);
+
+ // restore the invulnerables to the previous state
+ nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all(newInvulnerables.map((i: IKeyringPair) =>
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [i.address], true, {nonce: nonce++})));
+ });
+
+ itSub('Forbids a non-sudo to add an invulnerable', async ({helper}) => {
+ const [account] = await helper.arrange.createAccounts([10n], superuser);
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+
+ await helper.session.setOwnKeysFromAddress(account);
+ await expect(helper.collatorSelection.addInvulnerable(superuser, account.address))
+ .to.be.rejectedWith(/BadOrigin/);
+
+ const newInvulnerables = await helper.collatorSelection.getInvulnerables();
+ expect(newInvulnerables).to.be.members(invulnerables);
+ });
+
+ itSub('Forbids a non-sudo to remove an invulnerable', async ({helper}) => {
+ const invulnerables = await helper.collatorSelection.getInvulnerables();
+ await expect(helper.collatorSelection.removeInvulnerable(superuser, invulnerables[0]))
+ .to.be.rejectedWith(/BadOrigin/);
+ expect(await helper.collatorSelection.getInvulnerables()).to.have.all.members(invulnerables);
+ });
+ });
+ });
+
+ after(async () => {
+ // eslint-disable-next-line require-await
+ await usingPlaygrounds(async (helper) => {
+ if (helper.fetchMissingPalletNames([Pallets.CollatorSelection]).length != 0) return;
+
+ await helper.getSudo().collatorSelection.setLicenseBond(superuser, previousLicenseBond);
+
+ const candidates = await helper.collatorSelection.getCandidates();
+ let nonce = await helper.chain.getNonce(superuser.address);
+ await Promise.all(candidates.map(candidate =>
+ helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.forceReleaseLicense', [candidate], true, {nonce: nonce++})));
+ });
+ });
+});
\ No newline at end of file
tests/src/identity.seqtest.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/identity.seqtest.ts
@@ -0,0 +1,101 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network 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.
+
+// Unique Network 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 Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import {IKeyringPair} from '@polkadot/types/types';
+import {usingPlaygrounds, expect, itSub, Pallets, requirePalletsOrSkip} from './util';
+import {UniqueHelper} from './util/playgrounds/unique';
+
+async function getIdentities(helper: UniqueHelper) {
+ const identities: [string, any][] = [];
+ for(const [key, value] of await helper.getApi().query.identity.identityOf.entries())
+ identities.push([(key as any).toHuman(), (value as any).unwrap()]);
+ return identities;
+}
+
+async function getIdentityAccounts(helper: UniqueHelper) {
+ return (await getIdentities(helper)).flatMap(([key, _value]) => key);
+}
+
+describe('Integration Test: Identities Manipulation', () => {
+ let superuser: IKeyringPair;
+
+ before(async function() {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ requirePalletsOrSkip(this, helper, [Pallets.Identity]);
+ superuser = await privateKey('//Alice');
+ });
+ });
+
+ itSub('Normal calls do not work', async ({helper}) => {
+ // console.error = () => {};
+ await expect(helper.executeExtrinsic(superuser, 'api.tx.identity.setIdentity', [{info: {display: {Raw: 'Meowser'}}}]))
+ .to.be.rejectedWith(/Transaction call is not expected/);
+ });
+
+ itSub('Sets identities', async ({helper}) => {
+ const oldIdentitiesCount = (await getIdentityAccounts(helper)).length;
+
+ const crowdSize = 10;
+ const crowd = await helper.arrange.createCrowd(crowdSize, 0n, superuser);
+ const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]);
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]);
+
+ expect((await getIdentityAccounts(helper)).length).to.be.equal(oldIdentitiesCount + crowdSize);
+ });
+
+ itSub('Setting identities does not delete existing but does overwrite', async ({helper}) => {
+ const crowd = await helper.arrange.createCrowd(10, 0n, superuser);
+ const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]);
+
+ // insert a single identity
+ let singleIdentity = identities.pop()!;
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [[singleIdentity]]);
+
+ const oldIdentitiesCount = (await getIdentityAccounts(helper)).length;
+
+ // change an identity and push it with a few new others
+ singleIdentity = [singleIdentity[0], {info: {display: {Raw: 'something special'}}}];
+ identities.push(singleIdentity);
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]);
+
+ // oldIdentitiesCount + 9 because one identity is overwritten, not inserted on top
+ expect((await getIdentityAccounts(helper)).length).to.be.equal(oldIdentitiesCount + 9);
+ expect((await helper.callRpc('api.query.identity.identityOf', [singleIdentity[0]])).toHuman().info.display)
+ .to.be.deep.equal({Raw: 'something special'});
+ });
+
+ itSub('Removes identities', async ({helper}) => {
+ const crowd = await helper.arrange.createCrowd(10, 0n, superuser);
+ const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]);
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]);
+ const oldIdentities = await getIdentityAccounts(helper);
+
+ // delete a couple, check that they are no longer there
+ const scapegoats = [crowd.pop()!.address, crowd.pop()!.address];
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [scapegoats]);
+ const newIdentities = await getIdentityAccounts(helper);
+ expect(newIdentities.concat(scapegoats)).to.be.have.members(oldIdentities);
+ });
+
+ after(async function() {
+ await usingPlaygrounds(async helper => {
+ if (helper.fetchMissingPalletNames([Pallets.Identity]).length != 0) return;
+
+ const identitiesToRemove: string[] = await getIdentityAccounts(helper);
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [identitiesToRemove]);
+ });
+ });
+});
tests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-consts.ts
+++ b/tests/src/interfaces/augment-api-consts.ts
@@ -81,6 +81,9 @@
configuration: {
appPromotionDailyRate: Perbill & AugmentedConst<ApiType>;
dayRelayBlocks: u32 & AugmentedConst<ApiType>;
+ defaultCollatorSelectionKickThreshold: u32 & AugmentedConst<ApiType>;
+ defaultCollatorSelectionLicenseBond: u128 & AugmentedConst<ApiType>;
+ defaultCollatorSelectionMaxCollators: u32 & AugmentedConst<ApiType>;
defaultMinGasPrice: u64 & AugmentedConst<ApiType>;
defaultWeightToFeeCoefficient: u64 & AugmentedConst<ApiType>;
maxXcmAllowedLocations: u32 & AugmentedConst<ApiType>;
tests/src/interfaces/augment-api-events.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -194,6 +194,15 @@
**/
[key: string]: AugmentedEvent<ApiType>;
};
+ configuration: {
+ NewCollatorKickThreshold: AugmentedEvent<ApiType, [lengthInBlocks: Option<u32>], { lengthInBlocks: Option<u32> }>;
+ NewCollatorLicenseBond: AugmentedEvent<ApiType, [bondCost: Option<u128>], { bondCost: Option<u128> }>;
+ NewDesiredCollators: AugmentedEvent<ApiType, [desiredCollators: Option<u32>], { desiredCollators: Option<u32> }>;
+ /**
+ * Generic event
+ **/
+ [key: string]: AugmentedEvent<ApiType>;
+ };
cumulusXcm: {
/**
* Downward message executed with the given outcome.
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -159,6 +159,9 @@
};
configuration: {
appPromomotionConfigurationOverride: AugmentedQuery<ApiType, () => Observable<PalletConfigurationAppPromotionConfiguration>, []> & QueryableStorageEntry<ApiType, []>;
+ collatorSelectionDesiredCollatorsOverride: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
+ collatorSelectionKickThresholdOverride: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
+ collatorSelectionLicenseBondOverride: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
minGasPriceOverride: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;
weightToFeeCoefficientOverride: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;
xcmAllowedLocationsOverride: AugmentedQuery<ApiType, () => Observable<Option<Vec<XcmV1MultiLocation>>>, []> & QueryableStorageEntry<ApiType, []>;
tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -216,6 +216,9 @@
};
configuration: {
setAppPromotionConfigurationOverride: AugmentedSubmittable<(configuration: PalletConfigurationAppPromotionConfiguration | { recalculationInterval?: any; pendingInterval?: any; intervalIncome?: any; maxStakersPerCalculation?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletConfigurationAppPromotionConfiguration]>;
+ setCollatorSelectionDesiredCollators: AugmentedSubmittable<(max: Option<u32> | null | Uint8Array | u32 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
+ setCollatorSelectionKickThreshold: AugmentedSubmittable<(threshold: Option<u32> | null | Uint8Array | u32 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u32>]>;
+ setCollatorSelectionLicenseBond: AugmentedSubmittable<(amount: Option<u128> | null | Uint8Array | u128 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u128>]>;
setMinGasPriceOverride: AugmentedSubmittable<(coeff: Option<u64> | null | Uint8Array | u64 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u64>]>;
setWeightToFeeCoefficientOverride: AugmentedSubmittable<(coeff: Option<u64> | null | Uint8Array | u64 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u64>]>;
setXcmAllowedLocations: AugmentedSubmittable<(locations: Option<Vec<XcmV1MultiLocation>> | null | Uint8Array | Vec<XcmV1MultiLocation> | (XcmV1MultiLocation | { parents?: any; interior?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [Option<Vec<XcmV1MultiLocation>>]>;
tests/src/interfaces/augment-types.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -5,7 +5,7 @@
// this is required to allow for ambient/previous definitions
import '@polkadot/types/types/registry';
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensModuleCall, OrmlTokensModuleError, OrmlTokensModuleEvent, OrmlTokensReserveData, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, OrmlXtokensModuleCall, OrmlXtokensModuleError, OrmlXtokensModuleEvent, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationAppPromotionConfiguration, PalletConfigurationCall, PalletConfigurationError, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletEvmMigrationEvent, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletForeignAssetsModuleCall, PalletForeignAssetsModuleError, PalletForeignAssetsModuleEvent, PalletForeignAssetsNativeCurrency, PalletFungibleError, PalletInflationCall, PalletMaintenanceCall, PalletMaintenanceError, PalletMaintenanceEvent, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTestUtilsCall, PalletTestUtilsError, PalletTestUtilsEvent, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionValidityInvalidTransaction, SpRuntimeTransactionValidityTransactionValidityError, SpRuntimeTransactionValidityUnknownTransaction, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightV2Weight, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsRpcCollectionFlags, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, UpDataStructsTokenData, UpPovEstimateRpcPovInfo, UpPovEstimateRpcTrieKeyValue, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAsset, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls, OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensModuleCall, OrmlTokensModuleError, OrmlTokensModuleEvent, OrmlTokensReserveData, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, OrmlXtokensModuleCall, OrmlXtokensModuleError, OrmlXtokensModuleEvent, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationAppPromotionConfiguration, PalletConfigurationCall, PalletConfigurationError, PalletConfigurationEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletEvmMigrationEvent, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletForeignAssetsModuleCall, PalletForeignAssetsModuleError, PalletForeignAssetsModuleEvent, PalletForeignAssetsNativeCurrency, PalletFungibleError, PalletInflationCall, PalletMaintenanceCall, PalletMaintenanceError, PalletMaintenanceEvent, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTestUtilsCall, PalletTestUtilsError, PalletTestUtilsEvent, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionValidityInvalidTransaction, SpRuntimeTransactionValidityTransactionValidityError, SpRuntimeTransactionValidityUnknownTransaction, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightV2Weight, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsRpcCollectionFlags, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, UpDataStructsTokenData, UpPovEstimateRpcPovInfo, UpPovEstimateRpcTrieKeyValue, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAsset, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
import type { Data, StorageKey } from '@polkadot/types';
import type { BitVec, Bool, Bytes, F32, F64, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, f32, f64, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
@@ -772,6 +772,7 @@
Offender: Offender;
OldV1SessionInfo: OldV1SessionInfo;
OpalRuntimeRuntime: OpalRuntimeRuntime;
+ OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls: OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls;
OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance: OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance;
OpaqueCall: OpaqueCall;
OpaqueKeyOwnershipProof: OpaqueKeyOwnershipProof;
@@ -831,6 +832,7 @@
PalletConfigurationAppPromotionConfiguration: PalletConfigurationAppPromotionConfiguration;
PalletConfigurationCall: PalletConfigurationCall;
PalletConfigurationError: PalletConfigurationError;
+ PalletConfigurationEvent: PalletConfigurationEvent;
PalletConstantMetadataLatest: PalletConstantMetadataLatest;
PalletConstantMetadataV14: PalletConstantMetadataV14;
PalletErrorMetadataLatest: PalletErrorMetadataLatest;
tests/src/interfaces/default/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -692,6 +692,9 @@
/** @name OpalRuntimeRuntime */
export interface OpalRuntimeRuntime extends Null {}
+/** @name OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls */
+export interface OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls extends Null {}
+
/** @name OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance */
export interface OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance extends Null {}
@@ -1306,7 +1309,19 @@
readonly asSetAppPromotionConfigurationOverride: {
readonly configuration: PalletConfigurationAppPromotionConfiguration;
} & Struct;
- readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride' | 'SetXcmAllowedLocations' | 'SetAppPromotionConfigurationOverride';
+ readonly isSetCollatorSelectionDesiredCollators: boolean;
+ readonly asSetCollatorSelectionDesiredCollators: {
+ readonly max: Option<u32>;
+ } & Struct;
+ readonly isSetCollatorSelectionLicenseBond: boolean;
+ readonly asSetCollatorSelectionLicenseBond: {
+ readonly amount: Option<u128>;
+ } & Struct;
+ readonly isSetCollatorSelectionKickThreshold: boolean;
+ readonly asSetCollatorSelectionKickThreshold: {
+ readonly threshold: Option<u32>;
+ } & Struct;
+ readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride' | 'SetXcmAllowedLocations' | 'SetAppPromotionConfigurationOverride' | 'SetCollatorSelectionDesiredCollators' | 'SetCollatorSelectionLicenseBond' | 'SetCollatorSelectionKickThreshold';
}
/** @name PalletConfigurationError */
@@ -1315,6 +1330,23 @@
readonly type: 'InconsistentConfiguration';
}
+/** @name PalletConfigurationEvent */
+export interface PalletConfigurationEvent extends Enum {
+ readonly isNewDesiredCollators: boolean;
+ readonly asNewDesiredCollators: {
+ readonly desiredCollators: Option<u32>;
+ } & Struct;
+ readonly isNewCollatorLicenseBond: boolean;
+ readonly asNewCollatorLicenseBond: {
+ readonly bondCost: Option<u128>;
+ } & Struct;
+ readonly isNewCollatorKickThreshold: boolean;
+ readonly asNewCollatorKickThreshold: {
+ readonly lengthInBlocks: Option<u32>;
+ } & Struct;
+ readonly type: 'NewDesiredCollators' | 'NewCollatorLicenseBond' | 'NewCollatorKickThreshold';
+}
+
/** @name PalletEthereumCall */
export interface PalletEthereumCall extends Enum {
readonly isTransact: boolean;
tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -989,7 +989,23 @@
}
},
/**
- * Lookup89: pallet_common::pallet::Event<T>
+ * Lookup89: pallet_configuration::pallet::Event<T>
+ **/
+ PalletConfigurationEvent: {
+ _enum: {
+ NewDesiredCollators: {
+ desiredCollators: 'Option<u32>',
+ },
+ NewCollatorLicenseBond: {
+ bondCost: 'Option<u128>',
+ },
+ NewCollatorKickThreshold: {
+ lengthInBlocks: 'Option<u32>'
+ }
+ }
+ },
+ /**
+ * Lookup92: pallet_common::pallet::Event<T>
**/
PalletCommonEvent: {
_enum: {
@@ -1018,7 +1034,7 @@
}
},
/**
- * Lookup92: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
+ * Lookup95: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
**/
PalletEvmAccountBasicCrossAccountIdRepr: {
_enum: {
@@ -1027,7 +1043,7 @@
}
},
/**
- * Lookup96: pallet_structure::pallet::Event<T>
+ * Lookup99: pallet_structure::pallet::Event<T>
**/
PalletStructureEvent: {
_enum: {
@@ -1035,7 +1051,7 @@
}
},
/**
- * Lookup97: pallet_rmrk_core::pallet::Event<T>
+ * Lookup100: pallet_rmrk_core::pallet::Event<T>
**/
PalletRmrkCoreEvent: {
_enum: {
@@ -1112,7 +1128,7 @@
}
},
/**
- * Lookup98: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
+ * Lookup101: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
**/
RmrkTraitsNftAccountIdOrCollectionNftTuple: {
_enum: {
@@ -1121,7 +1137,7 @@
}
},
/**
- * Lookup102: pallet_rmrk_equip::pallet::Event<T>
+ * Lookup104: pallet_rmrk_equip::pallet::Event<T>
**/
PalletRmrkEquipEvent: {
_enum: {
@@ -1136,7 +1152,7 @@
}
},
/**
- * Lookup103: pallet_app_promotion::pallet::Event<T>
+ * Lookup105: pallet_app_promotion::pallet::Event<T>
**/
PalletAppPromotionEvent: {
_enum: {
@@ -1147,7 +1163,7 @@
}
},
/**
- * Lookup104: pallet_foreign_assets::module::Event<T>
+ * Lookup106: pallet_foreign_assets::module::Event<T>
**/
PalletForeignAssetsModuleEvent: {
_enum: {
@@ -1172,7 +1188,7 @@
}
},
/**
- * Lookup105: pallet_foreign_assets::module::AssetMetadata<Balance>
+ * Lookup107: pallet_foreign_assets::module::AssetMetadata<Balance>
**/
PalletForeignAssetsModuleAssetMetadata: {
name: 'Bytes',
@@ -1181,7 +1197,7 @@
minimalBalance: 'u128'
},
/**
- * Lookup106: pallet_evm::pallet::Event<T>
+ * Lookup108: pallet_evm::pallet::Event<T>
**/
PalletEvmEvent: {
_enum: {
@@ -1203,7 +1219,7 @@
}
},
/**
- * Lookup107: ethereum::log::Log
+ * Lookup109: ethereum::log::Log
**/
EthereumLog: {
address: 'H160',
@@ -1211,7 +1227,7 @@
data: 'Bytes'
},
/**
- * Lookup109: pallet_ethereum::pallet::Event
+ * Lookup111: pallet_ethereum::pallet::Event
**/
PalletEthereumEvent: {
_enum: {
@@ -1224,7 +1240,7 @@
}
},
/**
- * Lookup110: evm_core::error::ExitReason
+ * Lookup112: evm_core::error::ExitReason
**/
EvmCoreErrorExitReason: {
_enum: {
@@ -1235,13 +1251,13 @@
}
},
/**
- * Lookup111: evm_core::error::ExitSucceed
+ * Lookup113: evm_core::error::ExitSucceed
**/
EvmCoreErrorExitSucceed: {
_enum: ['Stopped', 'Returned', 'Suicided']
},
/**
- * Lookup112: evm_core::error::ExitError
+ * Lookup114: evm_core::error::ExitError
**/
EvmCoreErrorExitError: {
_enum: {
@@ -1263,13 +1279,13 @@
}
},
/**
- * Lookup115: evm_core::error::ExitRevert
+ * Lookup117: evm_core::error::ExitRevert
**/
EvmCoreErrorExitRevert: {
_enum: ['Reverted']
},
/**
- * Lookup116: evm_core::error::ExitFatal
+ * Lookup118: evm_core::error::ExitFatal
**/
EvmCoreErrorExitFatal: {
_enum: {
@@ -1280,7 +1296,7 @@
}
},
/**
- * Lookup117: pallet_evm_contract_helpers::pallet::Event<T>
+ * Lookup119: pallet_evm_contract_helpers::pallet::Event<T>
**/
PalletEvmContractHelpersEvent: {
_enum: {
@@ -1290,25 +1306,25 @@
}
},
/**
- * Lookup118: pallet_evm_migration::pallet::Event<T>
+ * Lookup120: pallet_evm_migration::pallet::Event<T>
**/
PalletEvmMigrationEvent: {
_enum: ['TestEvent']
},
/**
- * Lookup119: pallet_maintenance::pallet::Event<T>
+ * Lookup121: pallet_maintenance::pallet::Event<T>
**/
PalletMaintenanceEvent: {
_enum: ['MaintenanceEnabled', 'MaintenanceDisabled']
},
/**
- * Lookup120: pallet_test_utils::pallet::Event<T>
+ * Lookup122: pallet_test_utils::pallet::Event<T>
**/
PalletTestUtilsEvent: {
_enum: ['ValueIsSet', 'ShouldRollback', 'BatchCompleted']
},
/**
- * Lookup121: frame_system::Phase
+ * Lookup123: frame_system::Phase
**/
FrameSystemPhase: {
_enum: {
@@ -1318,14 +1334,14 @@
}
},
/**
- * Lookup124: frame_system::LastRuntimeUpgradeInfo
+ * Lookup126: frame_system::LastRuntimeUpgradeInfo
**/
FrameSystemLastRuntimeUpgradeInfo: {
specVersion: 'Compact<u32>',
specName: 'Text'
},
/**
- * Lookup125: frame_system::pallet::Call<T>
+ * Lookup127: frame_system::pallet::Call<T>
**/
FrameSystemCall: {
_enum: {
@@ -1360,7 +1376,7 @@
}
},
/**
- * Lookup129: frame_system::limits::BlockWeights
+ * Lookup131: frame_system::limits::BlockWeights
**/
FrameSystemLimitsBlockWeights: {
baseBlock: 'SpWeightsWeightV2Weight',
@@ -1368,7 +1384,7 @@
perClass: 'FrameSupportDispatchPerDispatchClassWeightsPerClass'
},
/**
- * Lookup130: frame_support::dispatch::PerDispatchClass<frame_system::limits::WeightsPerClass>
+ * Lookup132: frame_support::dispatch::PerDispatchClass<frame_system::limits::WeightsPerClass>
**/
FrameSupportDispatchPerDispatchClassWeightsPerClass: {
normal: 'FrameSystemLimitsWeightsPerClass',
@@ -1376,7 +1392,7 @@
mandatory: 'FrameSystemLimitsWeightsPerClass'
},
/**
- * Lookup131: frame_system::limits::WeightsPerClass
+ * Lookup133: frame_system::limits::WeightsPerClass
**/
FrameSystemLimitsWeightsPerClass: {
baseExtrinsic: 'SpWeightsWeightV2Weight',
@@ -1385,13 +1401,13 @@
reserved: 'Option<SpWeightsWeightV2Weight>'
},
/**
- * Lookup133: frame_system::limits::BlockLength
+ * Lookup135: frame_system::limits::BlockLength
**/
FrameSystemLimitsBlockLength: {
max: 'FrameSupportDispatchPerDispatchClassU32'
},
/**
- * Lookup134: frame_support::dispatch::PerDispatchClass<T>
+ * Lookup136: frame_support::dispatch::PerDispatchClass<T>
**/
FrameSupportDispatchPerDispatchClassU32: {
normal: 'u32',
@@ -1399,14 +1415,14 @@
mandatory: 'u32'
},
/**
- * Lookup135: sp_weights::RuntimeDbWeight
+ * Lookup137: sp_weights::RuntimeDbWeight
**/
SpWeightsRuntimeDbWeight: {
read: 'u64',
write: 'u64'
},
/**
- * Lookup136: sp_version::RuntimeVersion
+ * Lookup138: sp_version::RuntimeVersion
**/
SpVersionRuntimeVersion: {
specName: 'Text',
@@ -1419,13 +1435,13 @@
stateVersion: 'u8'
},
/**
- * Lookup141: frame_system::pallet::Error<T>
+ * Lookup143: frame_system::pallet::Error<T>
**/
FrameSystemError: {
_enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
},
/**
- * Lookup142: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>
+ * Lookup144: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>
**/
PolkadotPrimitivesV2PersistedValidationData: {
parentHead: 'Bytes',
@@ -1434,19 +1450,19 @@
maxPovSize: 'u32'
},
/**
- * Lookup145: polkadot_primitives::v2::UpgradeRestriction
+ * Lookup147: polkadot_primitives::v2::UpgradeRestriction
**/
PolkadotPrimitivesV2UpgradeRestriction: {
_enum: ['Present']
},
/**
- * Lookup146: sp_trie::storage_proof::StorageProof
+ * Lookup148: sp_trie::storage_proof::StorageProof
**/
SpTrieStorageProof: {
trieNodes: 'BTreeSet<Bytes>'
},
/**
- * Lookup148: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
+ * Lookup150: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
**/
CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {
dmqMqcHead: 'H256',
@@ -1455,7 +1471,7 @@
egressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>'
},
/**
- * Lookup151: polkadot_primitives::v2::AbridgedHrmpChannel
+ * Lookup153: polkadot_primitives::v2::AbridgedHrmpChannel
**/
PolkadotPrimitivesV2AbridgedHrmpChannel: {
maxCapacity: 'u32',
@@ -1466,7 +1482,7 @@
mqcHead: 'Option<H256>'
},
/**
- * Lookup152: polkadot_primitives::v2::AbridgedHostConfiguration
+ * Lookup154: polkadot_primitives::v2::AbridgedHostConfiguration
**/
PolkadotPrimitivesV2AbridgedHostConfiguration: {
maxCodeSize: 'u32',
@@ -1480,14 +1496,14 @@
validationUpgradeDelay: 'u32'
},
/**
- * Lookup158: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
+ * Lookup160: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
**/
PolkadotCorePrimitivesOutboundHrmpMessage: {
recipient: 'u32',
data: 'Bytes'
},
/**
- * Lookup159: cumulus_pallet_parachain_system::pallet::Call<T>
+ * Lookup161: cumulus_pallet_parachain_system::pallet::Call<T>
**/
CumulusPalletParachainSystemCall: {
_enum: {
@@ -1506,7 +1522,7 @@
}
},
/**
- * Lookup160: cumulus_primitives_parachain_inherent::ParachainInherentData
+ * Lookup162: cumulus_primitives_parachain_inherent::ParachainInherentData
**/
CumulusPrimitivesParachainInherentParachainInherentData: {
validationData: 'PolkadotPrimitivesV2PersistedValidationData',
@@ -1515,27 +1531,27 @@
horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'
},
/**
- * Lookup162: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
+ * Lookup164: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
**/
PolkadotCorePrimitivesInboundDownwardMessage: {
sentAt: 'u32',
msg: 'Bytes'
},
/**
- * Lookup165: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
+ * Lookup167: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
**/
PolkadotCorePrimitivesInboundHrmpMessage: {
sentAt: 'u32',
data: 'Bytes'
},
/**
- * Lookup168: cumulus_pallet_parachain_system::pallet::Error<T>
+ * Lookup170: cumulus_pallet_parachain_system::pallet::Error<T>
**/
CumulusPalletParachainSystemError: {
_enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']
},
/**
- * Lookup170: pallet_balances::BalanceLock<Balance>
+ * Lookup172: pallet_balances::BalanceLock<Balance>
**/
PalletBalancesBalanceLock: {
id: '[u8;8]',
@@ -1543,20 +1559,20 @@
reasons: 'PalletBalancesReasons'
},
/**
- * Lookup171: pallet_balances::Reasons
+ * Lookup173: pallet_balances::Reasons
**/
PalletBalancesReasons: {
_enum: ['Fee', 'Misc', 'All']
},
/**
- * Lookup174: pallet_balances::ReserveData<ReserveIdentifier, Balance>
+ * Lookup176: pallet_balances::ReserveData<ReserveIdentifier, Balance>
**/
PalletBalancesReserveData: {
id: '[u8;16]',
amount: 'u128'
},
/**
- * Lookup176: pallet_balances::pallet::Call<T, I>
+ * Lookup178: pallet_balances::pallet::Call<T, I>
**/
PalletBalancesCall: {
_enum: {
@@ -1589,13 +1605,13 @@
}
},
/**
- * Lookup179: pallet_balances::pallet::Error<T, I>
+ * Lookup181: pallet_balances::pallet::Error<T, I>
**/
PalletBalancesError: {
_enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']
},
/**
- * Lookup181: pallet_timestamp::pallet::Call<T>
+ * Lookup183: pallet_timestamp::pallet::Call<T>
**/
PalletTimestampCall: {
_enum: {
@@ -1605,13 +1621,13 @@
}
},
/**
- * Lookup183: pallet_transaction_payment::Releases
+ * Lookup185: pallet_transaction_payment::Releases
**/
PalletTransactionPaymentReleases: {
_enum: ['V1Ancient', 'V2']
},
/**
- * Lookup184: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
+ * Lookup186: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
**/
PalletTreasuryProposal: {
proposer: 'AccountId32',
@@ -1620,7 +1636,7 @@
bond: 'u128'
},
/**
- * Lookup187: pallet_treasury::pallet::Call<T, I>
+ * Lookup189: pallet_treasury::pallet::Call<T, I>
**/
PalletTreasuryCall: {
_enum: {
@@ -1644,17 +1660,17 @@
}
},
/**
- * Lookup190: frame_support::PalletId
+ * Lookup191: frame_support::PalletId
**/
FrameSupportPalletId: '[u8;8]',
/**
- * Lookup191: pallet_treasury::pallet::Error<T, I>
+ * Lookup192: pallet_treasury::pallet::Error<T, I>
**/
PalletTreasuryError: {
_enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals', 'InsufficientPermission', 'ProposalNotApproved']
},
/**
- * Lookup192: pallet_sudo::pallet::Call<T>
+ * Lookup193: pallet_sudo::pallet::Call<T>
**/
PalletSudoCall: {
_enum: {
@@ -1678,7 +1694,7 @@
}
},
/**
- * Lookup194: orml_vesting::module::Call<T>
+ * Lookup195: orml_vesting::module::Call<T>
**/
OrmlVestingModuleCall: {
_enum: {
@@ -1697,7 +1713,7 @@
}
},
/**
- * Lookup196: orml_xtokens::module::Call<T>
+ * Lookup197: orml_xtokens::module::Call<T>
**/
OrmlXtokensModuleCall: {
_enum: {
@@ -1740,7 +1756,7 @@
}
},
/**
- * Lookup197: xcm::VersionedMultiAsset
+ * Lookup198: xcm::VersionedMultiAsset
**/
XcmVersionedMultiAsset: {
_enum: {
@@ -1749,7 +1765,7 @@
}
},
/**
- * Lookup200: orml_tokens::module::Call<T>
+ * Lookup201: orml_tokens::module::Call<T>
**/
OrmlTokensModuleCall: {
_enum: {
@@ -1783,7 +1799,7 @@
}
},
/**
- * Lookup201: cumulus_pallet_xcmp_queue::pallet::Call<T>
+ * Lookup202: cumulus_pallet_xcmp_queue::pallet::Call<T>
**/
CumulusPalletXcmpQueueCall: {
_enum: {
@@ -1832,7 +1848,7 @@
}
},
/**
- * Lookup202: pallet_xcm::pallet::Call<T>
+ * Lookup203: pallet_xcm::pallet::Call<T>
**/
PalletXcmCall: {
_enum: {
@@ -1886,7 +1902,7 @@
}
},
/**
- * Lookup203: xcm::VersionedXcm<RuntimeCall>
+ * Lookup204: xcm::VersionedXcm<RuntimeCall>
**/
XcmVersionedXcm: {
_enum: {
@@ -1896,7 +1912,7 @@
}
},
/**
- * Lookup204: xcm::v0::Xcm<RuntimeCall>
+ * Lookup205: xcm::v0::Xcm<RuntimeCall>
**/
XcmV0Xcm: {
_enum: {
@@ -1950,7 +1966,7 @@
}
},
/**
- * Lookup206: xcm::v0::order::Order<RuntimeCall>
+ * Lookup207: xcm::v0::order::Order<RuntimeCall>
**/
XcmV0Order: {
_enum: {
@@ -1993,7 +2009,7 @@
}
},
/**
- * Lookup208: xcm::v0::Response
+ * Lookup209: xcm::v0::Response
**/
XcmV0Response: {
_enum: {
@@ -2001,7 +2017,7 @@
}
},
/**
- * Lookup209: xcm::v1::Xcm<RuntimeCall>
+ * Lookup210: xcm::v1::Xcm<RuntimeCall>
**/
XcmV1Xcm: {
_enum: {
@@ -2060,7 +2076,7 @@
}
},
/**
- * Lookup211: xcm::v1::order::Order<RuntimeCall>
+ * Lookup212: xcm::v1::order::Order<RuntimeCall>
**/
XcmV1Order: {
_enum: {
@@ -2105,7 +2121,7 @@
}
},
/**
- * Lookup213: xcm::v1::Response
+ * Lookup214: xcm::v1::Response
**/
XcmV1Response: {
_enum: {
@@ -2114,11 +2130,11 @@
}
},
/**
- * Lookup227: cumulus_pallet_xcm::pallet::Call<T>
+ * Lookup228: cumulus_pallet_xcm::pallet::Call<T>
**/
CumulusPalletXcmCall: 'Null',
/**
- * Lookup228: cumulus_pallet_dmp_queue::pallet::Call<T>
+ * Lookup229: cumulus_pallet_dmp_queue::pallet::Call<T>
**/
CumulusPalletDmpQueueCall: {
_enum: {
@@ -2129,7 +2145,7 @@
}
},
/**
- * Lookup229: pallet_inflation::pallet::Call<T>
+ * Lookup230: pallet_inflation::pallet::Call<T>
**/
PalletInflationCall: {
_enum: {
@@ -2139,7 +2155,7 @@
}
},
/**
- * Lookup230: pallet_unique::Call<T>
+ * Lookup231: pallet_unique::Call<T>
**/
PalletUniqueCall: {
_enum: {
@@ -2283,7 +2299,7 @@
}
},
/**
- * Lookup235: up_data_structs::CollectionMode
+ * Lookup236: up_data_structs::CollectionMode
**/
UpDataStructsCollectionMode: {
_enum: {
@@ -2293,7 +2309,7 @@
}
},
/**
- * Lookup236: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
+ * Lookup237: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
**/
UpDataStructsCreateCollectionData: {
mode: 'UpDataStructsCollectionMode',
@@ -2308,13 +2324,13 @@
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup238: up_data_structs::AccessMode
+ * Lookup239: up_data_structs::AccessMode
**/
UpDataStructsAccessMode: {
_enum: ['Normal', 'AllowList']
},
/**
- * Lookup240: up_data_structs::CollectionLimits
+ * Lookup241: up_data_structs::CollectionLimits
**/
UpDataStructsCollectionLimits: {
accountTokenOwnershipLimit: 'Option<u32>',
@@ -2328,7 +2344,7 @@
transfersEnabled: 'Option<bool>'
},
/**
- * Lookup242: up_data_structs::SponsoringRateLimit
+ * Lookup243: up_data_structs::SponsoringRateLimit
**/
UpDataStructsSponsoringRateLimit: {
_enum: {
@@ -2337,7 +2353,7 @@
}
},
/**
- * Lookup245: up_data_structs::CollectionPermissions
+ * Lookup246: up_data_structs::CollectionPermissions
**/
UpDataStructsCollectionPermissions: {
access: 'Option<UpDataStructsAccessMode>',
@@ -2345,7 +2361,7 @@
nesting: 'Option<UpDataStructsNestingPermissions>'
},
/**
- * Lookup247: up_data_structs::NestingPermissions
+ * Lookup248: up_data_structs::NestingPermissions
**/
UpDataStructsNestingPermissions: {
tokenOwner: 'bool',
@@ -2353,18 +2369,18 @@
restricted: 'Option<UpDataStructsOwnerRestrictedSet>'
},
/**
- * Lookup249: up_data_structs::OwnerRestrictedSet
+ * Lookup250: up_data_structs::OwnerRestrictedSet
**/
UpDataStructsOwnerRestrictedSet: 'BTreeSet<u32>',
/**
- * Lookup254: up_data_structs::PropertyKeyPermission
+ * Lookup255: up_data_structs::PropertyKeyPermission
**/
UpDataStructsPropertyKeyPermission: {
key: 'Bytes',
permission: 'UpDataStructsPropertyPermission'
},
/**
- * Lookup255: up_data_structs::PropertyPermission
+ * Lookup256: up_data_structs::PropertyPermission
**/
UpDataStructsPropertyPermission: {
mutable: 'bool',
@@ -2372,14 +2388,14 @@
tokenOwner: 'bool'
},
/**
- * Lookup258: up_data_structs::Property
+ * Lookup259: up_data_structs::Property
**/
UpDataStructsProperty: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup261: up_data_structs::CreateItemData
+ * Lookup262: up_data_structs::CreateItemData
**/
UpDataStructsCreateItemData: {
_enum: {
@@ -2389,26 +2405,26 @@
}
},
/**
- * Lookup262: up_data_structs::CreateNftData
+ * Lookup263: up_data_structs::CreateNftData
**/
UpDataStructsCreateNftData: {
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup263: up_data_structs::CreateFungibleData
+ * Lookup264: up_data_structs::CreateFungibleData
**/
UpDataStructsCreateFungibleData: {
value: 'u128'
},
/**
- * Lookup264: up_data_structs::CreateReFungibleData
+ * Lookup265: up_data_structs::CreateReFungibleData
**/
UpDataStructsCreateReFungibleData: {
pieces: 'u128',
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup267: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup268: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateItemExData: {
_enum: {
@@ -2419,14 +2435,14 @@
}
},
/**
- * Lookup269: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup270: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateNftExData: {
properties: 'Vec<UpDataStructsProperty>',
owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup276: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup277: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateRefungibleExSingleOwner: {
user: 'PalletEvmAccountBasicCrossAccountIdRepr',
@@ -2434,14 +2450,14 @@
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup278: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup279: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateRefungibleExMultipleOwners: {
users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup279: pallet_configuration::pallet::Call<T>
+ * Lookup280: pallet_configuration::pallet::Call<T>
**/
PalletConfigurationCall: {
_enum: {
@@ -2455,12 +2471,21 @@
locations: 'Option<Vec<XcmV1MultiLocation>>',
},
set_app_promotion_configuration_override: {
- configuration: 'PalletConfigurationAppPromotionConfiguration'
+ configuration: 'PalletConfigurationAppPromotionConfiguration',
+ },
+ set_collator_selection_desired_collators: {
+ max: 'Option<u32>',
+ },
+ set_collator_selection_license_bond: {
+ amount: 'Option<u128>',
+ },
+ set_collator_selection_kick_threshold: {
+ threshold: 'Option<u32>'
}
}
},
/**
- * Lookup284: pallet_configuration::AppPromotionConfiguration<BlockNumber>
+ * Lookup285: pallet_configuration::AppPromotionConfiguration<BlockNumber>
**/
PalletConfigurationAppPromotionConfiguration: {
recalculationInterval: 'Option<u32>',
@@ -2469,15 +2494,15 @@
maxStakersPerCalculation: 'Option<u8>'
},
/**
- * Lookup288: pallet_template_transaction_payment::Call<T>
+ * Lookup289: pallet_template_transaction_payment::Call<T>
**/
PalletTemplateTransactionPaymentCall: 'Null',
/**
- * Lookup289: pallet_structure::pallet::Call<T>
+ * Lookup290: pallet_structure::pallet::Call<T>
**/
PalletStructureCall: 'Null',
/**
- * Lookup290: pallet_rmrk_core::pallet::Call<T>
+ * Lookup291: pallet_rmrk_core::pallet::Call<T>
**/
PalletRmrkCoreCall: {
_enum: {
@@ -2568,7 +2593,7 @@
}
},
/**
- * Lookup296: rmrk_traits::resource::ResourceTypes<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup297: rmrk_traits::resource::ResourceTypes<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceResourceTypes: {
_enum: {
@@ -2578,7 +2603,7 @@
}
},
/**
- * Lookup298: rmrk_traits::resource::BasicResource<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup299: rmrk_traits::resource::BasicResource<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceBasicResource: {
src: 'Option<Bytes>',
@@ -2587,7 +2612,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup300: rmrk_traits::resource::ComposableResource<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup301: rmrk_traits::resource::ComposableResource<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceComposableResource: {
parts: 'Vec<u32>',
@@ -2598,7 +2623,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup301: rmrk_traits::resource::SlotResource<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup302: rmrk_traits::resource::SlotResource<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceSlotResource: {
base: 'u32',
@@ -2609,7 +2634,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup304: pallet_rmrk_equip::pallet::Call<T>
+ * Lookup305: pallet_rmrk_equip::pallet::Call<T>
**/
PalletRmrkEquipCall: {
_enum: {
@@ -2630,7 +2655,7 @@
}
},
/**
- * Lookup307: rmrk_traits::part::PartType<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup308: rmrk_traits::part::PartType<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartPartType: {
_enum: {
@@ -2639,7 +2664,7 @@
}
},
/**
- * Lookup309: rmrk_traits::part::FixedPart<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup310: rmrk_traits::part::FixedPart<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartFixedPart: {
id: 'u32',
@@ -2647,7 +2672,7 @@
src: 'Bytes'
},
/**
- * Lookup310: rmrk_traits::part::SlotPart<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup311: rmrk_traits::part::SlotPart<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartSlotPart: {
id: 'u32',
@@ -2656,7 +2681,7 @@
z: 'u32'
},
/**
- * Lookup311: rmrk_traits::part::EquippableList<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup312: rmrk_traits::part::EquippableList<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartEquippableList: {
_enum: {
@@ -2666,7 +2691,7 @@
}
},
/**
- * Lookup313: rmrk_traits::theme::Theme<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<rmrk_traits::theme::ThemeProperty<sp_core::bounded::bounded_vec::BoundedVec<T, S>>, S>>
+ * Lookup314: rmrk_traits::theme::Theme<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<rmrk_traits::theme::ThemeProperty<sp_core::bounded::bounded_vec::BoundedVec<T, S>>, S>>
**/
RmrkTraitsTheme: {
name: 'Bytes',
@@ -2674,14 +2699,14 @@
inherit: 'bool'
},
/**
- * Lookup315: rmrk_traits::theme::ThemeProperty<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup316: rmrk_traits::theme::ThemeProperty<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsThemeThemeProperty: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup317: pallet_app_promotion::pallet::Call<T>
+ * Lookup318: pallet_app_promotion::pallet::Call<T>
**/
PalletAppPromotionCall: {
_enum: {
@@ -2710,7 +2735,7 @@
}
},
/**
- * Lookup318: pallet_foreign_assets::module::Call<T>
+ * Lookup319: pallet_foreign_assets::module::Call<T>
**/
PalletForeignAssetsModuleCall: {
_enum: {
@@ -2727,7 +2752,7 @@
}
},
/**
- * Lookup319: pallet_evm::pallet::Call<T>
+ * Lookup320: pallet_evm::pallet::Call<T>
**/
PalletEvmCall: {
_enum: {
@@ -2770,7 +2795,7 @@
}
},
/**
- * Lookup325: pallet_ethereum::pallet::Call<T>
+ * Lookup326: pallet_ethereum::pallet::Call<T>
**/
PalletEthereumCall: {
_enum: {
@@ -2780,7 +2805,7 @@
}
},
/**
- * Lookup326: ethereum::transaction::TransactionV2
+ * Lookup327: ethereum::transaction::TransactionV2
**/
EthereumTransactionTransactionV2: {
_enum: {
@@ -2790,7 +2815,7 @@
}
},
/**
- * Lookup327: ethereum::transaction::LegacyTransaction
+ * Lookup328: ethereum::transaction::LegacyTransaction
**/
EthereumTransactionLegacyTransaction: {
nonce: 'U256',
@@ -2802,7 +2827,7 @@
signature: 'EthereumTransactionTransactionSignature'
},
/**
- * Lookup328: ethereum::transaction::TransactionAction
+ * Lookup329: ethereum::transaction::TransactionAction
**/
EthereumTransactionTransactionAction: {
_enum: {
@@ -2811,7 +2836,7 @@
}
},
/**
- * Lookup329: ethereum::transaction::TransactionSignature
+ * Lookup330: ethereum::transaction::TransactionSignature
**/
EthereumTransactionTransactionSignature: {
v: 'u64',
@@ -2819,7 +2844,7 @@
s: 'H256'
},
/**
- * Lookup331: ethereum::transaction::EIP2930Transaction
+ * Lookup332: ethereum::transaction::EIP2930Transaction
**/
EthereumTransactionEip2930Transaction: {
chainId: 'u64',
@@ -2835,14 +2860,14 @@
s: 'H256'
},
/**
- * Lookup333: ethereum::transaction::AccessListItem
+ * Lookup334: ethereum::transaction::AccessListItem
**/
EthereumTransactionAccessListItem: {
address: 'H160',
storageKeys: 'Vec<H256>'
},
/**
- * Lookup334: ethereum::transaction::EIP1559Transaction
+ * Lookup335: ethereum::transaction::EIP1559Transaction
**/
EthereumTransactionEip1559Transaction: {
chainId: 'u64',
@@ -2859,7 +2884,7 @@
s: 'H256'
},
/**
- * Lookup335: pallet_evm_migration::pallet::Call<T>
+ * Lookup336: pallet_evm_migration::pallet::Call<T>
**/
PalletEvmMigrationCall: {
_enum: {
@@ -2883,13 +2908,13 @@
}
},
/**
- * Lookup339: pallet_maintenance::pallet::Call<T>
+ * Lookup340: pallet_maintenance::pallet::Call<T>
**/
PalletMaintenanceCall: {
_enum: ['enable', 'disable']
},
/**
- * Lookup340: pallet_test_utils::pallet::Call<T>
+ * Lookup341: pallet_test_utils::pallet::Call<T>
**/
PalletTestUtilsCall: {
_enum: {
@@ -2908,32 +2933,32 @@
}
},
/**
- * Lookup342: pallet_sudo::pallet::Error<T>
+ * Lookup343: pallet_sudo::pallet::Error<T>
**/
PalletSudoError: {
_enum: ['RequireSudo']
},
/**
- * Lookup344: orml_vesting::module::Error<T>
+ * Lookup345: orml_vesting::module::Error<T>
**/
OrmlVestingModuleError: {
_enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
},
/**
- * Lookup345: orml_xtokens::module::Error<T>
+ * Lookup346: orml_xtokens::module::Error<T>
**/
OrmlXtokensModuleError: {
_enum: ['AssetHasNoReserve', 'NotCrossChainTransfer', 'InvalidDest', 'NotCrossChainTransferableCurrency', 'UnweighableMessage', 'XcmExecutionFailed', 'CannotReanchor', 'InvalidAncestry', 'InvalidAsset', 'DestinationNotInvertible', 'BadVersion', 'DistinctReserveForAssetAndFee', 'ZeroFee', 'ZeroAmount', 'TooManyAssetsBeingSent', 'AssetIndexNonExistent', 'FeeNotEnough', 'NotSupportedMultiLocation', 'MinXcmFeeNotDefined']
},
/**
- * Lookup348: orml_tokens::BalanceLock<Balance>
+ * Lookup349: orml_tokens::BalanceLock<Balance>
**/
OrmlTokensBalanceLock: {
id: '[u8;8]',
amount: 'u128'
},
/**
- * Lookup350: orml_tokens::AccountData<Balance>
+ * Lookup351: orml_tokens::AccountData<Balance>
**/
OrmlTokensAccountData: {
free: 'u128',
@@ -2941,20 +2966,20 @@
frozen: 'u128'
},
/**
- * Lookup352: orml_tokens::ReserveData<ReserveIdentifier, Balance>
+ * Lookup353: orml_tokens::ReserveData<ReserveIdentifier, Balance>
**/
OrmlTokensReserveData: {
id: 'Null',
amount: 'u128'
},
/**
- * Lookup354: orml_tokens::module::Error<T>
+ * Lookup355: orml_tokens::module::Error<T>
**/
OrmlTokensModuleError: {
_enum: ['BalanceTooLow', 'AmountIntoBalanceFailed', 'LiquidityRestrictions', 'MaxLocksExceeded', 'KeepAlive', 'ExistentialDeposit', 'DeadAccount', 'TooManyReserves']
},
/**
- * Lookup356: cumulus_pallet_xcmp_queue::InboundChannelDetails
+ * Lookup357: cumulus_pallet_xcmp_queue::InboundChannelDetails
**/
CumulusPalletXcmpQueueInboundChannelDetails: {
sender: 'u32',
@@ -2962,19 +2987,19 @@
messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
},
/**
- * Lookup357: cumulus_pallet_xcmp_queue::InboundState
+ * Lookup358: cumulus_pallet_xcmp_queue::InboundState
**/
CumulusPalletXcmpQueueInboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup360: polkadot_parachain::primitives::XcmpMessageFormat
+ * Lookup361: polkadot_parachain::primitives::XcmpMessageFormat
**/
PolkadotParachainPrimitivesXcmpMessageFormat: {
_enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
},
/**
- * Lookup363: cumulus_pallet_xcmp_queue::OutboundChannelDetails
+ * Lookup364: cumulus_pallet_xcmp_queue::OutboundChannelDetails
**/
CumulusPalletXcmpQueueOutboundChannelDetails: {
recipient: 'u32',
@@ -2984,13 +3009,13 @@
lastIndex: 'u16'
},
/**
- * Lookup364: cumulus_pallet_xcmp_queue::OutboundState
+ * Lookup365: cumulus_pallet_xcmp_queue::OutboundState
**/
CumulusPalletXcmpQueueOutboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup366: cumulus_pallet_xcmp_queue::QueueConfigData
+ * Lookup367: cumulus_pallet_xcmp_queue::QueueConfigData
**/
CumulusPalletXcmpQueueQueueConfigData: {
suspendThreshold: 'u32',
@@ -3001,29 +3026,29 @@
xcmpMaxIndividualWeight: 'SpWeightsWeightV2Weight'
},
/**
- * Lookup368: cumulus_pallet_xcmp_queue::pallet::Error<T>
+ * Lookup369: cumulus_pallet_xcmp_queue::pallet::Error<T>
**/
CumulusPalletXcmpQueueError: {
_enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
},
/**
- * Lookup369: pallet_xcm::pallet::Error<T>
+ * Lookup370: pallet_xcm::pallet::Error<T>
**/
PalletXcmError: {
_enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
},
/**
- * Lookup370: cumulus_pallet_xcm::pallet::Error<T>
+ * Lookup371: cumulus_pallet_xcm::pallet::Error<T>
**/
CumulusPalletXcmError: 'Null',
/**
- * Lookup371: cumulus_pallet_dmp_queue::ConfigData
+ * Lookup372: cumulus_pallet_dmp_queue::ConfigData
**/
CumulusPalletDmpQueueConfigData: {
maxIndividual: 'SpWeightsWeightV2Weight'
},
/**
- * Lookup372: cumulus_pallet_dmp_queue::PageIndexData
+ * Lookup373: cumulus_pallet_dmp_queue::PageIndexData
**/
CumulusPalletDmpQueuePageIndexData: {
beginUsed: 'u32',
@@ -3031,25 +3056,25 @@
overweightCount: 'u64'
},
/**
- * Lookup375: cumulus_pallet_dmp_queue::pallet::Error<T>
+ * Lookup376: cumulus_pallet_dmp_queue::pallet::Error<T>
**/
CumulusPalletDmpQueueError: {
_enum: ['Unknown', 'OverLimit']
},
/**
- * Lookup379: pallet_unique::Error<T>
+ * Lookup380: pallet_unique::Error<T>
**/
PalletUniqueError: {
_enum: ['CollectionDecimalPointLimitExceeded', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']
},
/**
- * Lookup380: pallet_configuration::pallet::Error<T>
+ * Lookup381: pallet_configuration::pallet::Error<T>
**/
PalletConfigurationError: {
_enum: ['InconsistentConfiguration']
},
/**
- * Lookup381: up_data_structs::Collection<sp_core::crypto::AccountId32>
+ * Lookup382: up_data_structs::Collection<sp_core::crypto::AccountId32>
**/
UpDataStructsCollection: {
owner: 'AccountId32',
@@ -3063,7 +3088,7 @@
flags: '[u8;1]'
},
/**
- * Lookup382: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
+ * Lookup383: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
**/
UpDataStructsSponsorshipStateAccountId32: {
_enum: {
@@ -3073,7 +3098,7 @@
}
},
/**
- * Lookup384: up_data_structs::Properties
+ * Lookup385: up_data_structs::Properties
**/
UpDataStructsProperties: {
map: 'UpDataStructsPropertiesMapBoundedVec',
@@ -3081,15 +3106,15 @@
spaceLimit: 'u32'
},
/**
- * Lookup385: up_data_structs::PropertiesMap<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup386: up_data_structs::PropertiesMap<sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
/**
- * Lookup390: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
+ * Lookup391: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
**/
UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
/**
- * Lookup397: up_data_structs::CollectionStats
+ * Lookup398: up_data_structs::CollectionStats
**/
UpDataStructsCollectionStats: {
created: 'u32',
@@ -3097,18 +3122,18 @@
alive: 'u32'
},
/**
- * Lookup398: up_data_structs::TokenChild
+ * Lookup399: up_data_structs::TokenChild
**/
UpDataStructsTokenChild: {
token: 'u32',
collection: 'u32'
},
/**
- * Lookup399: PhantomType::up_data_structs<T>
+ * Lookup400: PhantomType::up_data_structs<T>
**/
PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild,UpPovEstimateRpcPovInfo);0]',
/**
- * Lookup401: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup402: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsTokenData: {
properties: 'Vec<UpDataStructsProperty>',
@@ -3116,7 +3141,7 @@
pieces: 'u128'
},
/**
- * Lookup403: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+ * Lookup404: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
**/
UpDataStructsRpcCollection: {
owner: 'AccountId32',
@@ -3133,14 +3158,14 @@
flags: 'UpDataStructsRpcCollectionFlags'
},
/**
- * Lookup404: up_data_structs::RpcCollectionFlags
+ * Lookup405: up_data_structs::RpcCollectionFlags
**/
UpDataStructsRpcCollectionFlags: {
foreign: 'bool',
erc721metadata: 'bool'
},
/**
- * Lookup405: rmrk_traits::collection::CollectionInfo<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
+ * Lookup406: rmrk_traits::collection::CollectionInfo<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
**/
RmrkTraitsCollectionCollectionInfo: {
issuer: 'AccountId32',
@@ -3150,7 +3175,7 @@
nftsCount: 'u32'
},
/**
- * Lookup406: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup407: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsNftNftInfo: {
owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
@@ -3160,14 +3185,14 @@
pending: 'bool'
},
/**
- * Lookup408: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
+ * Lookup409: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
**/
RmrkTraitsNftRoyaltyInfo: {
recipient: 'AccountId32',
amount: 'Permill'
},
/**
- * Lookup409: rmrk_traits::resource::ResourceInfo<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup410: rmrk_traits::resource::ResourceInfo<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceResourceInfo: {
id: 'u32',
@@ -3176,14 +3201,14 @@
pendingRemoval: 'bool'
},
/**
- * Lookup410: rmrk_traits::property::PropertyInfo<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup411: rmrk_traits::property::PropertyInfo<sp_core::bounded::bounded_vec::BoundedVec<T, S>, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPropertyPropertyInfo: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup411: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup412: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_core::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsBaseBaseInfo: {
issuer: 'AccountId32',
@@ -3191,14 +3216,14 @@
symbol: 'Bytes'
},
/**
- * Lookup412: rmrk_traits::nft::NftChild
+ * Lookup413: rmrk_traits::nft::NftChild
**/
RmrkTraitsNftNftChild: {
collectionId: 'u32',
nftId: 'u32'
},
/**
- * Lookup413: up_pov_estimate_rpc::PovInfo
+ * Lookup414: up_pov_estimate_rpc::PovInfo
**/
UpPovEstimateRpcPovInfo: {
proofSize: 'u64',
@@ -3208,7 +3233,7 @@
keyValues: 'Vec<UpPovEstimateRpcTrieKeyValue>'
},
/**
- * Lookup416: sp_runtime::transaction_validity::TransactionValidityError
+ * Lookup417: sp_runtime::transaction_validity::TransactionValidityError
**/
SpRuntimeTransactionValidityTransactionValidityError: {
_enum: {
@@ -3217,7 +3242,7 @@
}
},
/**
- * Lookup417: sp_runtime::transaction_validity::InvalidTransaction
+ * Lookup418: sp_runtime::transaction_validity::InvalidTransaction
**/
SpRuntimeTransactionValidityInvalidTransaction: {
_enum: {
@@ -3235,7 +3260,7 @@
}
},
/**
- * Lookup418: sp_runtime::transaction_validity::UnknownTransaction
+ * Lookup419: sp_runtime::transaction_validity::UnknownTransaction
**/
SpRuntimeTransactionValidityUnknownTransaction: {
_enum: {
@@ -3245,86 +3270,86 @@
}
},
/**
- * Lookup420: up_pov_estimate_rpc::TrieKeyValue
+ * Lookup421: up_pov_estimate_rpc::TrieKeyValue
**/
UpPovEstimateRpcTrieKeyValue: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup422: pallet_common::pallet::Error<T>
+ * Lookup423: pallet_common::pallet::Error<T>
**/
PalletCommonError: {
_enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal', 'ConfirmSponsorshipFail', 'UserIsNotCollectionAdmin']
},
/**
- * Lookup424: pallet_fungible::pallet::Error<T>
+ * Lookup425: pallet_fungible::pallet::Error<T>
**/
PalletFungibleError: {
_enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed', 'SettingAllowanceForAllNotAllowed', 'FungibleTokensAreAlwaysValid']
},
/**
- * Lookup428: pallet_refungible::pallet::Error<T>
+ * Lookup429: pallet_refungible::pallet::Error<T>
**/
PalletRefungibleError: {
_enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
},
/**
- * Lookup429: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup430: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
PalletNonfungibleItemData: {
owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup431: up_data_structs::PropertyScope
+ * Lookup432: up_data_structs::PropertyScope
**/
UpDataStructsPropertyScope: {
_enum: ['None', 'Rmrk']
},
/**
- * Lookup434: pallet_nonfungible::pallet::Error<T>
+ * Lookup435: pallet_nonfungible::pallet::Error<T>
**/
PalletNonfungibleError: {
_enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
},
/**
- * Lookup435: pallet_structure::pallet::Error<T>
+ * Lookup436: pallet_structure::pallet::Error<T>
**/
PalletStructureError: {
_enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
},
/**
- * Lookup436: pallet_rmrk_core::pallet::Error<T>
+ * Lookup437: pallet_rmrk_core::pallet::Error<T>
**/
PalletRmrkCoreError: {
_enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
},
/**
- * Lookup438: pallet_rmrk_equip::pallet::Error<T>
+ * Lookup439: pallet_rmrk_equip::pallet::Error<T>
**/
PalletRmrkEquipError: {
_enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']
},
/**
- * Lookup444: pallet_app_promotion::pallet::Error<T>
+ * Lookup445: pallet_app_promotion::pallet::Error<T>
**/
PalletAppPromotionError: {
_enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFunds', 'PendingForBlockOverflow', 'SponsorNotSet', 'IncorrectLockedBalanceOperation']
},
/**
- * Lookup445: pallet_foreign_assets::module::Error<T>
+ * Lookup446: pallet_foreign_assets::module::Error<T>
**/
PalletForeignAssetsModuleError: {
_enum: ['BadLocation', 'MultiLocationExisted', 'AssetIdNotExists', 'AssetIdExisted']
},
/**
- * Lookup447: pallet_evm::pallet::Error<T>
+ * Lookup448: pallet_evm::pallet::Error<T>
**/
PalletEvmError: {
_enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce', 'GasLimitTooLow', 'GasLimitTooHigh', 'Undefined', 'Reentrancy', 'TransactionMustComeFromEOA']
},
/**
- * Lookup450: fp_rpc::TransactionStatus
+ * Lookup451: fp_rpc::TransactionStatus
**/
FpRpcTransactionStatus: {
transactionHash: 'H256',
@@ -3336,11 +3361,11 @@
logsBloom: 'EthbloomBloom'
},
/**
- * Lookup452: ethbloom::Bloom
+ * Lookup453: ethbloom::Bloom
**/
EthbloomBloom: '[u8;256]',
/**
- * Lookup454: ethereum::receipt::ReceiptV3
+ * Lookup455: ethereum::receipt::ReceiptV3
**/
EthereumReceiptReceiptV3: {
_enum: {
@@ -3350,7 +3375,7 @@
}
},
/**
- * Lookup455: ethereum::receipt::EIP658ReceiptData
+ * Lookup456: ethereum::receipt::EIP658ReceiptData
**/
EthereumReceiptEip658ReceiptData: {
statusCode: 'u8',
@@ -3359,7 +3384,7 @@
logs: 'Vec<EthereumLog>'
},
/**
- * Lookup456: ethereum::block::Block<ethereum::transaction::TransactionV2>
+ * Lookup457: ethereum::block::Block<ethereum::transaction::TransactionV2>
**/
EthereumBlock: {
header: 'EthereumHeader',
@@ -3367,7 +3392,7 @@
ommers: 'Vec<EthereumHeader>'
},
/**
- * Lookup457: ethereum::header::Header
+ * Lookup458: ethereum::header::Header
**/
EthereumHeader: {
parentHash: 'H256',
@@ -3387,23 +3412,23 @@
nonce: 'EthereumTypesHashH64'
},
/**
- * Lookup458: ethereum_types::hash::H64
+ * Lookup459: ethereum_types::hash::H64
**/
EthereumTypesHashH64: '[u8;8]',
/**
- * Lookup463: pallet_ethereum::pallet::Error<T>
+ * Lookup464: pallet_ethereum::pallet::Error<T>
**/
PalletEthereumError: {
_enum: ['InvalidSignature', 'PreLogExists']
},
/**
- * Lookup464: pallet_evm_coder_substrate::pallet::Error<T>
+ * Lookup465: pallet_evm_coder_substrate::pallet::Error<T>
**/
PalletEvmCoderSubstrateError: {
_enum: ['OutOfGas', 'OutOfFund']
},
/**
- * Lookup465: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup466: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: {
_enum: {
@@ -3413,35 +3438,35 @@
}
},
/**
- * Lookup466: pallet_evm_contract_helpers::SponsoringModeT
+ * Lookup467: pallet_evm_contract_helpers::SponsoringModeT
**/
PalletEvmContractHelpersSponsoringModeT: {
_enum: ['Disabled', 'Allowlisted', 'Generous']
},
/**
- * Lookup472: pallet_evm_contract_helpers::pallet::Error<T>
+ * Lookup473: pallet_evm_contract_helpers::pallet::Error<T>
**/
PalletEvmContractHelpersError: {
_enum: ['NoPermission', 'NoPendingSponsor', 'TooManyMethodsHaveSponsoredLimit']
},
/**
- * Lookup473: pallet_evm_migration::pallet::Error<T>
+ * Lookup474: pallet_evm_migration::pallet::Error<T>
**/
PalletEvmMigrationError: {
_enum: ['AccountNotEmpty', 'AccountIsNotMigrating', 'BadEvent']
},
/**
- * Lookup474: pallet_maintenance::pallet::Error<T>
+ * Lookup475: pallet_maintenance::pallet::Error<T>
**/
PalletMaintenanceError: 'Null',
/**
- * Lookup475: pallet_test_utils::pallet::Error<T>
+ * Lookup476: pallet_test_utils::pallet::Error<T>
**/
PalletTestUtilsError: {
_enum: ['TestPalletDisabled', 'TriggerRollback']
},
/**
- * Lookup477: sp_runtime::MultiSignature
+ * Lookup478: sp_runtime::MultiSignature
**/
SpRuntimeMultiSignature: {
_enum: {
@@ -3451,51 +3476,55 @@
}
},
/**
- * Lookup478: sp_core::ed25519::Signature
+ * Lookup479: sp_core::ed25519::Signature
**/
SpCoreEd25519Signature: '[u8;64]',
/**
- * Lookup480: sp_core::sr25519::Signature
+ * Lookup481: sp_core::sr25519::Signature
**/
SpCoreSr25519Signature: '[u8;64]',
/**
- * Lookup481: sp_core::ecdsa::Signature
+ * Lookup482: sp_core::ecdsa::Signature
**/
SpCoreEcdsaSignature: '[u8;65]',
/**
- * Lookup484: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+ * Lookup485: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
**/
FrameSystemExtensionsCheckSpecVersion: 'Null',
/**
- * Lookup485: frame_system::extensions::check_tx_version::CheckTxVersion<T>
+ * Lookup486: frame_system::extensions::check_tx_version::CheckTxVersion<T>
**/
FrameSystemExtensionsCheckTxVersion: 'Null',
/**
- * Lookup486: frame_system::extensions::check_genesis::CheckGenesis<T>
+ * Lookup487: frame_system::extensions::check_genesis::CheckGenesis<T>
**/
FrameSystemExtensionsCheckGenesis: 'Null',
/**
- * Lookup489: frame_system::extensions::check_nonce::CheckNonce<T>
+ * Lookup490: frame_system::extensions::check_nonce::CheckNonce<T>
**/
FrameSystemExtensionsCheckNonce: 'Compact<u32>',
/**
- * Lookup490: frame_system::extensions::check_weight::CheckWeight<T>
+ * Lookup491: frame_system::extensions::check_weight::CheckWeight<T>
**/
FrameSystemExtensionsCheckWeight: 'Null',
/**
- * Lookup491: opal_runtime::runtime_common::maintenance::CheckMaintenance
+ * Lookup492: opal_runtime::runtime_common::maintenance::CheckMaintenance
**/
OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance: 'Null',
/**
- * Lookup492: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+ * Lookup493: opal_runtime::runtime_common::identity::DisableIdentityCalls
**/
+ OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls: 'Null',
+ /**
+ * Lookup494: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+ **/
PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
/**
- * Lookup493: opal_runtime::Runtime
+ * Lookup495: opal_runtime::Runtime
**/
OpalRuntimeRuntime: 'Null',
/**
- * Lookup494: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
+ * Lookup496: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
**/
PalletEthereumFakeTransactionFinalizer: 'Null'
};
tests/src/interfaces/registry.tsdiffbeforeafterboth--- a/tests/src/interfaces/registry.ts
+++ b/tests/src/interfaces/registry.ts
@@ -5,7 +5,7 @@
// this is required to allow for ambient/previous definitions
import '@polkadot/types/types/registry';
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensModuleCall, OrmlTokensModuleError, OrmlTokensModuleEvent, OrmlTokensReserveData, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, OrmlXtokensModuleCall, OrmlXtokensModuleError, OrmlXtokensModuleEvent, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationAppPromotionConfiguration, PalletConfigurationCall, PalletConfigurationError, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletEvmMigrationEvent, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletForeignAssetsModuleCall, PalletForeignAssetsModuleError, PalletForeignAssetsModuleEvent, PalletForeignAssetsNativeCurrency, PalletFungibleError, PalletInflationCall, PalletMaintenanceCall, PalletMaintenanceError, PalletMaintenanceEvent, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTestUtilsCall, PalletTestUtilsError, PalletTestUtilsEvent, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionValidityInvalidTransaction, SpRuntimeTransactionValidityTransactionValidityError, SpRuntimeTransactionValidityUnknownTransaction, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightV2Weight, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsRpcCollectionFlags, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, UpDataStructsTokenData, UpPovEstimateRpcPovInfo, UpPovEstimateRpcTrieKeyValue, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAsset, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls, OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance, OrmlTokensAccountData, OrmlTokensBalanceLock, OrmlTokensModuleCall, OrmlTokensModuleError, OrmlTokensModuleEvent, OrmlTokensReserveData, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, OrmlXtokensModuleCall, OrmlXtokensModuleError, OrmlXtokensModuleEvent, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationAppPromotionConfiguration, PalletConfigurationCall, PalletConfigurationError, PalletConfigurationEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletEvmMigrationEvent, PalletForeignAssetsAssetIds, PalletForeignAssetsModuleAssetMetadata, PalletForeignAssetsModuleCall, PalletForeignAssetsModuleError, PalletForeignAssetsModuleEvent, PalletForeignAssetsNativeCurrency, PalletFungibleError, PalletInflationCall, PalletMaintenanceCall, PalletMaintenanceError, PalletMaintenanceEvent, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTestUtilsCall, PalletTestUtilsError, PalletTestUtilsEvent, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionValidityInvalidTransaction, SpRuntimeTransactionValidityTransactionValidityError, SpRuntimeTransactionValidityUnknownTransaction, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightV2Weight, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsRpcCollectionFlags, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, UpDataStructsTokenData, UpPovEstimateRpcPovInfo, UpPovEstimateRpcTrieKeyValue, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAsset, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
declare module '@polkadot/types/types/registry' {
interface InterfaceTypes {
@@ -74,6 +74,7 @@
FrameSystemLimitsWeightsPerClass: FrameSystemLimitsWeightsPerClass;
FrameSystemPhase: FrameSystemPhase;
OpalRuntimeRuntime: OpalRuntimeRuntime;
+ OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls: OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls;
OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance: OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance;
OrmlTokensAccountData: OrmlTokensAccountData;
OrmlTokensBalanceLock: OrmlTokensBalanceLock;
@@ -103,6 +104,7 @@
PalletConfigurationAppPromotionConfiguration: PalletConfigurationAppPromotionConfiguration;
PalletConfigurationCall: PalletConfigurationCall;
PalletConfigurationError: PalletConfigurationError;
+ PalletConfigurationEvent: PalletConfigurationEvent;
PalletEthereumCall: PalletEthereumCall;
PalletEthereumError: PalletEthereumError;
PalletEthereumEvent: PalletEthereumEvent;
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1109,7 +1109,24 @@
readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
}
- /** @name PalletCommonEvent (89) */
+ /** @name PalletConfigurationEvent (89) */
+ interface PalletConfigurationEvent extends Enum {
+ readonly isNewDesiredCollators: boolean;
+ readonly asNewDesiredCollators: {
+ readonly desiredCollators: Option<u32>;
+ } & Struct;
+ readonly isNewCollatorLicenseBond: boolean;
+ readonly asNewCollatorLicenseBond: {
+ readonly bondCost: Option<u128>;
+ } & Struct;
+ readonly isNewCollatorKickThreshold: boolean;
+ readonly asNewCollatorKickThreshold: {
+ readonly lengthInBlocks: Option<u32>;
+ } & Struct;
+ readonly type: 'NewDesiredCollators' | 'NewCollatorLicenseBond' | 'NewCollatorKickThreshold';
+ }
+
+ /** @name PalletCommonEvent (92) */
interface PalletCommonEvent extends Enum {
readonly isCollectionCreated: boolean;
readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
@@ -1158,7 +1175,7 @@
readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'ApprovedForAll' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet' | 'AllowListAddressAdded' | 'AllowListAddressRemoved' | 'CollectionAdminAdded' | 'CollectionAdminRemoved' | 'CollectionLimitSet' | 'CollectionOwnerChanged' | 'CollectionPermissionSet' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionSponsorRemoved';
}
- /** @name PalletEvmAccountBasicCrossAccountIdRepr (92) */
+ /** @name PalletEvmAccountBasicCrossAccountIdRepr (95) */
interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {
readonly isSubstrate: boolean;
readonly asSubstrate: AccountId32;
@@ -1167,14 +1184,14 @@
readonly type: 'Substrate' | 'Ethereum';
}
- /** @name PalletStructureEvent (96) */
+ /** @name PalletStructureEvent (99) */
interface PalletStructureEvent extends Enum {
readonly isExecuted: boolean;
readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
readonly type: 'Executed';
}
- /** @name PalletRmrkCoreEvent (97) */
+ /** @name PalletRmrkCoreEvent (100) */
interface PalletRmrkCoreEvent extends Enum {
readonly isCollectionCreated: boolean;
readonly asCollectionCreated: {
@@ -1264,7 +1281,7 @@
readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';
}
- /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (98) */
+ /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (101) */
interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
readonly isAccountId: boolean;
readonly asAccountId: AccountId32;
@@ -1273,7 +1290,7 @@
readonly type: 'AccountId' | 'CollectionAndNftTuple';
}
- /** @name PalletRmrkEquipEvent (102) */
+ /** @name PalletRmrkEquipEvent (104) */
interface PalletRmrkEquipEvent extends Enum {
readonly isBaseCreated: boolean;
readonly asBaseCreated: {
@@ -1288,7 +1305,7 @@
readonly type: 'BaseCreated' | 'EquippablesUpdated';
}
- /** @name PalletAppPromotionEvent (103) */
+ /** @name PalletAppPromotionEvent (105) */
interface PalletAppPromotionEvent extends Enum {
readonly isStakingRecalculation: boolean;
readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>;
@@ -1301,7 +1318,7 @@
readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin';
}
- /** @name PalletForeignAssetsModuleEvent (104) */
+ /** @name PalletForeignAssetsModuleEvent (106) */
interface PalletForeignAssetsModuleEvent extends Enum {
readonly isForeignAssetRegistered: boolean;
readonly asForeignAssetRegistered: {
@@ -1328,7 +1345,7 @@
readonly type: 'ForeignAssetRegistered' | 'ForeignAssetUpdated' | 'AssetRegistered' | 'AssetUpdated';
}
- /** @name PalletForeignAssetsModuleAssetMetadata (105) */
+ /** @name PalletForeignAssetsModuleAssetMetadata (107) */
interface PalletForeignAssetsModuleAssetMetadata extends Struct {
readonly name: Bytes;
readonly symbol: Bytes;
@@ -1336,7 +1353,7 @@
readonly minimalBalance: u128;
}
- /** @name PalletEvmEvent (106) */
+ /** @name PalletEvmEvent (108) */
interface PalletEvmEvent extends Enum {
readonly isLog: boolean;
readonly asLog: {
@@ -1361,14 +1378,14 @@
readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed';
}
- /** @name EthereumLog (107) */
+ /** @name EthereumLog (109) */
interface EthereumLog extends Struct {
readonly address: H160;
readonly topics: Vec<H256>;
readonly data: Bytes;
}
- /** @name PalletEthereumEvent (109) */
+ /** @name PalletEthereumEvent (111) */
interface PalletEthereumEvent extends Enum {
readonly isExecuted: boolean;
readonly asExecuted: {
@@ -1380,7 +1397,7 @@
readonly type: 'Executed';
}
- /** @name EvmCoreErrorExitReason (110) */
+ /** @name EvmCoreErrorExitReason (112) */
interface EvmCoreErrorExitReason extends Enum {
readonly isSucceed: boolean;
readonly asSucceed: EvmCoreErrorExitSucceed;
@@ -1393,7 +1410,7 @@
readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
}
- /** @name EvmCoreErrorExitSucceed (111) */
+ /** @name EvmCoreErrorExitSucceed (113) */
interface EvmCoreErrorExitSucceed extends Enum {
readonly isStopped: boolean;
readonly isReturned: boolean;
@@ -1401,7 +1418,7 @@
readonly type: 'Stopped' | 'Returned' | 'Suicided';
}
- /** @name EvmCoreErrorExitError (112) */
+ /** @name EvmCoreErrorExitError (114) */
interface EvmCoreErrorExitError extends Enum {
readonly isStackUnderflow: boolean;
readonly isStackOverflow: boolean;
@@ -1422,13 +1439,13 @@
readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
}
- /** @name EvmCoreErrorExitRevert (115) */
+ /** @name EvmCoreErrorExitRevert (117) */
interface EvmCoreErrorExitRevert extends Enum {
readonly isReverted: boolean;
readonly type: 'Reverted';
}
- /** @name EvmCoreErrorExitFatal (116) */
+ /** @name EvmCoreErrorExitFatal (118) */
interface EvmCoreErrorExitFatal extends Enum {
readonly isNotSupported: boolean;
readonly isUnhandledInterrupt: boolean;
@@ -1439,7 +1456,7 @@
readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
}
- /** @name PalletEvmContractHelpersEvent (117) */
+ /** @name PalletEvmContractHelpersEvent (119) */
interface PalletEvmContractHelpersEvent extends Enum {
readonly isContractSponsorSet: boolean;
readonly asContractSponsorSet: ITuple<[H160, AccountId32]>;
@@ -1450,20 +1467,20 @@
readonly type: 'ContractSponsorSet' | 'ContractSponsorshipConfirmed' | 'ContractSponsorRemoved';
}
- /** @name PalletEvmMigrationEvent (118) */
+ /** @name PalletEvmMigrationEvent (120) */
interface PalletEvmMigrationEvent extends Enum {
readonly isTestEvent: boolean;
readonly type: 'TestEvent';
}
- /** @name PalletMaintenanceEvent (119) */
+ /** @name PalletMaintenanceEvent (121) */
interface PalletMaintenanceEvent extends Enum {
readonly isMaintenanceEnabled: boolean;
readonly isMaintenanceDisabled: boolean;
readonly type: 'MaintenanceEnabled' | 'MaintenanceDisabled';
}
- /** @name PalletTestUtilsEvent (120) */
+ /** @name PalletTestUtilsEvent (122) */
interface PalletTestUtilsEvent extends Enum {
readonly isValueIsSet: boolean;
readonly isShouldRollback: boolean;
@@ -1471,7 +1488,7 @@
readonly type: 'ValueIsSet' | 'ShouldRollback' | 'BatchCompleted';
}
- /** @name FrameSystemPhase (121) */
+ /** @name FrameSystemPhase (123) */
interface FrameSystemPhase extends Enum {
readonly isApplyExtrinsic: boolean;
readonly asApplyExtrinsic: u32;
@@ -1480,13 +1497,13 @@
readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
}
- /** @name FrameSystemLastRuntimeUpgradeInfo (124) */
+ /** @name FrameSystemLastRuntimeUpgradeInfo (126) */
interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
readonly specVersion: Compact<u32>;
readonly specName: Text;
}
- /** @name FrameSystemCall (125) */
+ /** @name FrameSystemCall (127) */
interface FrameSystemCall extends Enum {
readonly isRemark: boolean;
readonly asRemark: {
@@ -1524,21 +1541,21 @@
readonly type: 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';
}
- /** @name FrameSystemLimitsBlockWeights (129) */
+ /** @name FrameSystemLimitsBlockWeights (131) */
interface FrameSystemLimitsBlockWeights extends Struct {
readonly baseBlock: SpWeightsWeightV2Weight;
readonly maxBlock: SpWeightsWeightV2Weight;
readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass;
}
- /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (130) */
+ /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (132) */
interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct {
readonly normal: FrameSystemLimitsWeightsPerClass;
readonly operational: FrameSystemLimitsWeightsPerClass;
readonly mandatory: FrameSystemLimitsWeightsPerClass;
}
- /** @name FrameSystemLimitsWeightsPerClass (131) */
+ /** @name FrameSystemLimitsWeightsPerClass (133) */
interface FrameSystemLimitsWeightsPerClass extends Struct {
readonly baseExtrinsic: SpWeightsWeightV2Weight;
readonly maxExtrinsic: Option<SpWeightsWeightV2Weight>;
@@ -1546,25 +1563,25 @@
readonly reserved: Option<SpWeightsWeightV2Weight>;
}
- /** @name FrameSystemLimitsBlockLength (133) */
+ /** @name FrameSystemLimitsBlockLength (135) */
interface FrameSystemLimitsBlockLength extends Struct {
readonly max: FrameSupportDispatchPerDispatchClassU32;
}
- /** @name FrameSupportDispatchPerDispatchClassU32 (134) */
+ /** @name FrameSupportDispatchPerDispatchClassU32 (136) */
interface FrameSupportDispatchPerDispatchClassU32 extends Struct {
readonly normal: u32;
readonly operational: u32;
readonly mandatory: u32;
}
- /** @name SpWeightsRuntimeDbWeight (135) */
+ /** @name SpWeightsRuntimeDbWeight (137) */
interface SpWeightsRuntimeDbWeight extends Struct {
readonly read: u64;
readonly write: u64;
}
- /** @name SpVersionRuntimeVersion (136) */
+ /** @name SpVersionRuntimeVersion (138) */
interface SpVersionRuntimeVersion extends Struct {
readonly specName: Text;
readonly implName: Text;
@@ -1576,7 +1593,7 @@
readonly stateVersion: u8;
}
- /** @name FrameSystemError (141) */
+ /** @name FrameSystemError (143) */
interface FrameSystemError extends Enum {
readonly isInvalidSpecName: boolean;
readonly isSpecVersionNeedsToIncrease: boolean;
@@ -1587,7 +1604,7 @@
readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
}
- /** @name PolkadotPrimitivesV2PersistedValidationData (142) */
+ /** @name PolkadotPrimitivesV2PersistedValidationData (144) */
interface PolkadotPrimitivesV2PersistedValidationData extends Struct {
readonly parentHead: Bytes;
readonly relayParentNumber: u32;
@@ -1595,18 +1612,18 @@
readonly maxPovSize: u32;
}
- /** @name PolkadotPrimitivesV2UpgradeRestriction (145) */
+ /** @name PolkadotPrimitivesV2UpgradeRestriction (147) */
interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {
readonly isPresent: boolean;
readonly type: 'Present';
}
- /** @name SpTrieStorageProof (146) */
+ /** @name SpTrieStorageProof (148) */
interface SpTrieStorageProof extends Struct {
readonly trieNodes: BTreeSet<Bytes>;
}
- /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (148) */
+ /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (150) */
interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {
readonly dmqMqcHead: H256;
readonly relayDispatchQueueSize: ITuple<[u32, u32]>;
@@ -1614,7 +1631,7 @@
readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
}
- /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (151) */
+ /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (153) */
interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {
readonly maxCapacity: u32;
readonly maxTotalSize: u32;
@@ -1624,7 +1641,7 @@
readonly mqcHead: Option<H256>;
}
- /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (152) */
+ /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (154) */
interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {
readonly maxCodeSize: u32;
readonly maxHeadDataSize: u32;
@@ -1637,13 +1654,13 @@
readonly validationUpgradeDelay: u32;
}
- /** @name PolkadotCorePrimitivesOutboundHrmpMessage (158) */
+ /** @name PolkadotCorePrimitivesOutboundHrmpMessage (160) */
interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {
readonly recipient: u32;
readonly data: Bytes;
}
- /** @name CumulusPalletParachainSystemCall (159) */
+ /** @name CumulusPalletParachainSystemCall (161) */
interface CumulusPalletParachainSystemCall extends Enum {
readonly isSetValidationData: boolean;
readonly asSetValidationData: {
@@ -1664,7 +1681,7 @@
readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';
}
- /** @name CumulusPrimitivesParachainInherentParachainInherentData (160) */
+ /** @name CumulusPrimitivesParachainInherentParachainInherentData (162) */
interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {
readonly validationData: PolkadotPrimitivesV2PersistedValidationData;
readonly relayChainState: SpTrieStorageProof;
@@ -1672,19 +1689,19 @@
readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;
}
- /** @name PolkadotCorePrimitivesInboundDownwardMessage (162) */
+ /** @name PolkadotCorePrimitivesInboundDownwardMessage (164) */
interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
readonly sentAt: u32;
readonly msg: Bytes;
}
- /** @name PolkadotCorePrimitivesInboundHrmpMessage (165) */
+ /** @name PolkadotCorePrimitivesInboundHrmpMessage (167) */
interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {
readonly sentAt: u32;
readonly data: Bytes;
}
- /** @name CumulusPalletParachainSystemError (168) */
+ /** @name CumulusPalletParachainSystemError (170) */
interface CumulusPalletParachainSystemError extends Enum {
readonly isOverlappingUpgrades: boolean;
readonly isProhibitedByPolkadot: boolean;
@@ -1697,14 +1714,14 @@
readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';
}
- /** @name PalletBalancesBalanceLock (170) */
+ /** @name PalletBalancesBalanceLock (172) */
interface PalletBalancesBalanceLock extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
readonly reasons: PalletBalancesReasons;
}
- /** @name PalletBalancesReasons (171) */
+ /** @name PalletBalancesReasons (173) */
interface PalletBalancesReasons extends Enum {
readonly isFee: boolean;
readonly isMisc: boolean;
@@ -1712,13 +1729,13 @@
readonly type: 'Fee' | 'Misc' | 'All';
}
- /** @name PalletBalancesReserveData (174) */
+ /** @name PalletBalancesReserveData (176) */
interface PalletBalancesReserveData extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
}
- /** @name PalletBalancesCall (176) */
+ /** @name PalletBalancesCall (178) */
interface PalletBalancesCall extends Enum {
readonly isTransfer: boolean;
readonly asTransfer: {
@@ -1755,7 +1772,7 @@
readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';
}
- /** @name PalletBalancesError (179) */
+ /** @name PalletBalancesError (181) */
interface PalletBalancesError extends Enum {
readonly isVestingBalance: boolean;
readonly isLiquidityRestrictions: boolean;
@@ -1768,7 +1785,7 @@
readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';
}
- /** @name PalletTimestampCall (181) */
+ /** @name PalletTimestampCall (183) */
interface PalletTimestampCall extends Enum {
readonly isSet: boolean;
readonly asSet: {
@@ -1777,14 +1794,14 @@
readonly type: 'Set';
}
- /** @name PalletTransactionPaymentReleases (183) */
+ /** @name PalletTransactionPaymentReleases (185) */
interface PalletTransactionPaymentReleases extends Enum {
readonly isV1Ancient: boolean;
readonly isV2: boolean;
readonly type: 'V1Ancient' | 'V2';
}
- /** @name PalletTreasuryProposal (184) */
+ /** @name PalletTreasuryProposal (186) */
interface PalletTreasuryProposal extends Struct {
readonly proposer: AccountId32;
readonly value: u128;
@@ -1792,7 +1809,7 @@
readonly bond: u128;
}
- /** @name PalletTreasuryCall (187) */
+ /** @name PalletTreasuryCall (189) */
interface PalletTreasuryCall extends Enum {
readonly isProposeSpend: boolean;
readonly asProposeSpend: {
@@ -1819,10 +1836,10 @@
readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';
}
- /** @name FrameSupportPalletId (190) */
+ /** @name FrameSupportPalletId (191) */
interface FrameSupportPalletId extends U8aFixed {}
- /** @name PalletTreasuryError (191) */
+ /** @name PalletTreasuryError (192) */
interface PalletTreasuryError extends Enum {
readonly isInsufficientProposersBalance: boolean;
readonly isInvalidIndex: boolean;
@@ -1832,7 +1849,7 @@
readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';
}
- /** @name PalletSudoCall (192) */
+ /** @name PalletSudoCall (193) */
interface PalletSudoCall extends Enum {
readonly isSudo: boolean;
readonly asSudo: {
@@ -1855,7 +1872,7 @@
readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';
}
- /** @name OrmlVestingModuleCall (194) */
+ /** @name OrmlVestingModuleCall (195) */
interface OrmlVestingModuleCall extends Enum {
readonly isClaim: boolean;
readonly isVestedTransfer: boolean;
@@ -1875,7 +1892,7 @@
readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';
}
- /** @name OrmlXtokensModuleCall (196) */
+ /** @name OrmlXtokensModuleCall (197) */
interface OrmlXtokensModuleCall extends Enum {
readonly isTransfer: boolean;
readonly asTransfer: {
@@ -1922,7 +1939,7 @@
readonly type: 'Transfer' | 'TransferMultiasset' | 'TransferWithFee' | 'TransferMultiassetWithFee' | 'TransferMulticurrencies' | 'TransferMultiassets';
}
- /** @name XcmVersionedMultiAsset (197) */
+ /** @name XcmVersionedMultiAsset (198) */
interface XcmVersionedMultiAsset extends Enum {
readonly isV0: boolean;
readonly asV0: XcmV0MultiAsset;
@@ -1931,7 +1948,7 @@
readonly type: 'V0' | 'V1';
}
- /** @name OrmlTokensModuleCall (200) */
+ /** @name OrmlTokensModuleCall (201) */
interface OrmlTokensModuleCall extends Enum {
readonly isTransfer: boolean;
readonly asTransfer: {
@@ -1968,7 +1985,7 @@
readonly type: 'Transfer' | 'TransferAll' | 'TransferKeepAlive' | 'ForceTransfer' | 'SetBalance';
}
- /** @name CumulusPalletXcmpQueueCall (201) */
+ /** @name CumulusPalletXcmpQueueCall (202) */
interface CumulusPalletXcmpQueueCall extends Enum {
readonly isServiceOverweight: boolean;
readonly asServiceOverweight: {
@@ -2004,7 +2021,7 @@
readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';
}
- /** @name PalletXcmCall (202) */
+ /** @name PalletXcmCall (203) */
interface PalletXcmCall extends Enum {
readonly isSend: boolean;
readonly asSend: {
@@ -2066,7 +2083,7 @@
readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';
}
- /** @name XcmVersionedXcm (203) */
+ /** @name XcmVersionedXcm (204) */
interface XcmVersionedXcm extends Enum {
readonly isV0: boolean;
readonly asV0: XcmV0Xcm;
@@ -2077,7 +2094,7 @@
readonly type: 'V0' | 'V1' | 'V2';
}
- /** @name XcmV0Xcm (204) */
+ /** @name XcmV0Xcm (205) */
interface XcmV0Xcm extends Enum {
readonly isWithdrawAsset: boolean;
readonly asWithdrawAsset: {
@@ -2140,7 +2157,7 @@
readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
}
- /** @name XcmV0Order (206) */
+ /** @name XcmV0Order (207) */
interface XcmV0Order extends Enum {
readonly isNull: boolean;
readonly isDepositAsset: boolean;
@@ -2188,14 +2205,14 @@
readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}
- /** @name XcmV0Response (208) */
+ /** @name XcmV0Response (209) */
interface XcmV0Response extends Enum {
readonly isAssets: boolean;
readonly asAssets: Vec<XcmV0MultiAsset>;
readonly type: 'Assets';
}
- /** @name XcmV1Xcm (209) */
+ /** @name XcmV1Xcm (210) */
interface XcmV1Xcm extends Enum {
readonly isWithdrawAsset: boolean;
readonly asWithdrawAsset: {
@@ -2264,7 +2281,7 @@
readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';
}
- /** @name XcmV1Order (211) */
+ /** @name XcmV1Order (212) */
interface XcmV1Order extends Enum {
readonly isNoop: boolean;
readonly isDepositAsset: boolean;
@@ -2314,7 +2331,7 @@
readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}
- /** @name XcmV1Response (213) */
+ /** @name XcmV1Response (214) */
interface XcmV1Response extends Enum {
readonly isAssets: boolean;
readonly asAssets: XcmV1MultiassetMultiAssets;
@@ -2323,10 +2340,10 @@
readonly type: 'Assets' | 'Version';
}
- /** @name CumulusPalletXcmCall (227) */
+ /** @name CumulusPalletXcmCall (228) */
type CumulusPalletXcmCall = Null;
- /** @name CumulusPalletDmpQueueCall (228) */
+ /** @name CumulusPalletDmpQueueCall (229) */
interface CumulusPalletDmpQueueCall extends Enum {
readonly isServiceOverweight: boolean;
readonly asServiceOverweight: {
@@ -2336,7 +2353,7 @@
readonly type: 'ServiceOverweight';
}
- /** @name PalletInflationCall (229) */
+ /** @name PalletInflationCall (230) */
interface PalletInflationCall extends Enum {
readonly isStartInflation: boolean;
readonly asStartInflation: {
@@ -2345,7 +2362,7 @@
readonly type: 'StartInflation';
}
- /** @name PalletUniqueCall (230) */
+ /** @name PalletUniqueCall (231) */
interface PalletUniqueCall extends Enum {
readonly isCreateCollection: boolean;
readonly asCreateCollection: {
@@ -2518,7 +2535,7 @@
readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition' | 'SetAllowanceForAll' | 'ForceRepairCollection' | 'ForceRepairItem';
}
- /** @name UpDataStructsCollectionMode (235) */
+ /** @name UpDataStructsCollectionMode (236) */
interface UpDataStructsCollectionMode extends Enum {
readonly isNft: boolean;
readonly isFungible: boolean;
@@ -2527,7 +2544,7 @@
readonly type: 'Nft' | 'Fungible' | 'ReFungible';
}
- /** @name UpDataStructsCreateCollectionData (236) */
+ /** @name UpDataStructsCreateCollectionData (237) */
interface UpDataStructsCreateCollectionData extends Struct {
readonly mode: UpDataStructsCollectionMode;
readonly access: Option<UpDataStructsAccessMode>;
@@ -2541,14 +2558,14 @@
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsAccessMode (238) */
+ /** @name UpDataStructsAccessMode (239) */
interface UpDataStructsAccessMode extends Enum {
readonly isNormal: boolean;
readonly isAllowList: boolean;
readonly type: 'Normal' | 'AllowList';
}
- /** @name UpDataStructsCollectionLimits (240) */
+ /** @name UpDataStructsCollectionLimits (241) */
interface UpDataStructsCollectionLimits extends Struct {
readonly accountTokenOwnershipLimit: Option<u32>;
readonly sponsoredDataSize: Option<u32>;
@@ -2561,7 +2578,7 @@
readonly transfersEnabled: Option<bool>;
}
- /** @name UpDataStructsSponsoringRateLimit (242) */
+ /** @name UpDataStructsSponsoringRateLimit (243) */
interface UpDataStructsSponsoringRateLimit extends Enum {
readonly isSponsoringDisabled: boolean;
readonly isBlocks: boolean;
@@ -2569,43 +2586,43 @@
readonly type: 'SponsoringDisabled' | 'Blocks';
}
- /** @name UpDataStructsCollectionPermissions (245) */
+ /** @name UpDataStructsCollectionPermissions (246) */
interface UpDataStructsCollectionPermissions extends Struct {
readonly access: Option<UpDataStructsAccessMode>;
readonly mintMode: Option<bool>;
readonly nesting: Option<UpDataStructsNestingPermissions>;
}
- /** @name UpDataStructsNestingPermissions (247) */
+ /** @name UpDataStructsNestingPermissions (248) */
interface UpDataStructsNestingPermissions extends Struct {
readonly tokenOwner: bool;
readonly collectionAdmin: bool;
readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;
}
- /** @name UpDataStructsOwnerRestrictedSet (249) */
+ /** @name UpDataStructsOwnerRestrictedSet (250) */
interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}
- /** @name UpDataStructsPropertyKeyPermission (254) */
+ /** @name UpDataStructsPropertyKeyPermission (255) */
interface UpDataStructsPropertyKeyPermission extends Struct {
readonly key: Bytes;
readonly permission: UpDataStructsPropertyPermission;
}
- /** @name UpDataStructsPropertyPermission (255) */
+ /** @name UpDataStructsPropertyPermission (256) */
interface UpDataStructsPropertyPermission extends Struct {
readonly mutable: bool;
readonly collectionAdmin: bool;
readonly tokenOwner: bool;
}
- /** @name UpDataStructsProperty (258) */
+ /** @name UpDataStructsProperty (259) */
interface UpDataStructsProperty extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name UpDataStructsCreateItemData (261) */
+ /** @name UpDataStructsCreateItemData (262) */
interface UpDataStructsCreateItemData extends Enum {
readonly isNft: boolean;
readonly asNft: UpDataStructsCreateNftData;
@@ -2616,23 +2633,23 @@
readonly type: 'Nft' | 'Fungible' | 'ReFungible';
}
- /** @name UpDataStructsCreateNftData (262) */
+ /** @name UpDataStructsCreateNftData (263) */
interface UpDataStructsCreateNftData extends Struct {
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsCreateFungibleData (263) */
+ /** @name UpDataStructsCreateFungibleData (264) */
interface UpDataStructsCreateFungibleData extends Struct {
readonly value: u128;
}
- /** @name UpDataStructsCreateReFungibleData (264) */
+ /** @name UpDataStructsCreateReFungibleData (265) */
interface UpDataStructsCreateReFungibleData extends Struct {
readonly pieces: u128;
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsCreateItemExData (267) */
+ /** @name UpDataStructsCreateItemExData (268) */
interface UpDataStructsCreateItemExData extends Enum {
readonly isNft: boolean;
readonly asNft: Vec<UpDataStructsCreateNftExData>;
@@ -2645,26 +2662,26 @@
readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';
}
- /** @name UpDataStructsCreateNftExData (269) */
+ /** @name UpDataStructsCreateNftExData (270) */
interface UpDataStructsCreateNftExData extends Struct {
readonly properties: Vec<UpDataStructsProperty>;
readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name UpDataStructsCreateRefungibleExSingleOwner (276) */
+ /** @name UpDataStructsCreateRefungibleExSingleOwner (277) */
interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {
readonly user: PalletEvmAccountBasicCrossAccountIdRepr;
readonly pieces: u128;
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsCreateRefungibleExMultipleOwners (278) */
+ /** @name UpDataStructsCreateRefungibleExMultipleOwners (279) */
interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {
readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name PalletConfigurationCall (279) */
+ /** @name PalletConfigurationCall (280) */
interface PalletConfigurationCall extends Enum {
readonly isSetWeightToFeeCoefficientOverride: boolean;
readonly asSetWeightToFeeCoefficientOverride: {
@@ -2682,10 +2699,22 @@
readonly asSetAppPromotionConfigurationOverride: {
readonly configuration: PalletConfigurationAppPromotionConfiguration;
} & Struct;
- readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride' | 'SetXcmAllowedLocations' | 'SetAppPromotionConfigurationOverride';
+ readonly isSetCollatorSelectionDesiredCollators: boolean;
+ readonly asSetCollatorSelectionDesiredCollators: {
+ readonly max: Option<u32>;
+ } & Struct;
+ readonly isSetCollatorSelectionLicenseBond: boolean;
+ readonly asSetCollatorSelectionLicenseBond: {
+ readonly amount: Option<u128>;
+ } & Struct;
+ readonly isSetCollatorSelectionKickThreshold: boolean;
+ readonly asSetCollatorSelectionKickThreshold: {
+ readonly threshold: Option<u32>;
+ } & Struct;
+ readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride' | 'SetXcmAllowedLocations' | 'SetAppPromotionConfigurationOverride' | 'SetCollatorSelectionDesiredCollators' | 'SetCollatorSelectionLicenseBond' | 'SetCollatorSelectionKickThreshold';
}
- /** @name PalletConfigurationAppPromotionConfiguration (284) */
+ /** @name PalletConfigurationAppPromotionConfiguration (285) */
interface PalletConfigurationAppPromotionConfiguration extends Struct {
readonly recalculationInterval: Option<u32>;
readonly pendingInterval: Option<u32>;
@@ -2693,13 +2722,13 @@
readonly maxStakersPerCalculation: Option<u8>;
}
- /** @name PalletTemplateTransactionPaymentCall (288) */
+ /** @name PalletTemplateTransactionPaymentCall (289) */
type PalletTemplateTransactionPaymentCall = Null;
- /** @name PalletStructureCall (289) */
+ /** @name PalletStructureCall (290) */
type PalletStructureCall = Null;
- /** @name PalletRmrkCoreCall (290) */
+ /** @name PalletRmrkCoreCall (291) */
interface PalletRmrkCoreCall extends Enum {
readonly isCreateCollection: boolean;
readonly asCreateCollection: {
@@ -2805,7 +2834,7 @@
readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';
}
- /** @name RmrkTraitsResourceResourceTypes (296) */
+ /** @name RmrkTraitsResourceResourceTypes (297) */
interface RmrkTraitsResourceResourceTypes extends Enum {
readonly isBasic: boolean;
readonly asBasic: RmrkTraitsResourceBasicResource;
@@ -2816,7 +2845,7 @@
readonly type: 'Basic' | 'Composable' | 'Slot';
}
- /** @name RmrkTraitsResourceBasicResource (298) */
+ /** @name RmrkTraitsResourceBasicResource (299) */
interface RmrkTraitsResourceBasicResource extends Struct {
readonly src: Option<Bytes>;
readonly metadata: Option<Bytes>;
@@ -2824,7 +2853,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name RmrkTraitsResourceComposableResource (300) */
+ /** @name RmrkTraitsResourceComposableResource (301) */
interface RmrkTraitsResourceComposableResource extends Struct {
readonly parts: Vec<u32>;
readonly base: u32;
@@ -2834,7 +2863,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name RmrkTraitsResourceSlotResource (301) */
+ /** @name RmrkTraitsResourceSlotResource (302) */
interface RmrkTraitsResourceSlotResource extends Struct {
readonly base: u32;
readonly src: Option<Bytes>;
@@ -2844,7 +2873,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name PalletRmrkEquipCall (304) */
+ /** @name PalletRmrkEquipCall (305) */
interface PalletRmrkEquipCall extends Enum {
readonly isCreateBase: boolean;
readonly asCreateBase: {
@@ -2866,7 +2895,7 @@
readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';
}
- /** @name RmrkTraitsPartPartType (307) */
+ /** @name RmrkTraitsPartPartType (308) */
interface RmrkTraitsPartPartType extends Enum {
readonly isFixedPart: boolean;
readonly asFixedPart: RmrkTraitsPartFixedPart;
@@ -2875,14 +2904,14 @@
readonly type: 'FixedPart' | 'SlotPart';
}
- /** @name RmrkTraitsPartFixedPart (309) */
+ /** @name RmrkTraitsPartFixedPart (310) */
interface RmrkTraitsPartFixedPart extends Struct {
readonly id: u32;
readonly z: u32;
readonly src: Bytes;
}
- /** @name RmrkTraitsPartSlotPart (310) */
+ /** @name RmrkTraitsPartSlotPart (311) */
interface RmrkTraitsPartSlotPart extends Struct {
readonly id: u32;
readonly equippable: RmrkTraitsPartEquippableList;
@@ -2890,7 +2919,7 @@
readonly z: u32;
}
- /** @name RmrkTraitsPartEquippableList (311) */
+ /** @name RmrkTraitsPartEquippableList (312) */
interface RmrkTraitsPartEquippableList extends Enum {
readonly isAll: boolean;
readonly isEmpty: boolean;
@@ -2899,20 +2928,20 @@
readonly type: 'All' | 'Empty' | 'Custom';
}
- /** @name RmrkTraitsTheme (313) */
+ /** @name RmrkTraitsTheme (314) */
interface RmrkTraitsTheme extends Struct {
readonly name: Bytes;
readonly properties: Vec<RmrkTraitsThemeThemeProperty>;
readonly inherit: bool;
}
- /** @name RmrkTraitsThemeThemeProperty (315) */
+ /** @name RmrkTraitsThemeThemeProperty (316) */
interface RmrkTraitsThemeThemeProperty extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name PalletAppPromotionCall (317) */
+ /** @name PalletAppPromotionCall (318) */
interface PalletAppPromotionCall extends Enum {
readonly isSetAdminAddress: boolean;
readonly asSetAdminAddress: {
@@ -2946,7 +2975,7 @@
readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';
}
- /** @name PalletForeignAssetsModuleCall (318) */
+ /** @name PalletForeignAssetsModuleCall (319) */
interface PalletForeignAssetsModuleCall extends Enum {
readonly isRegisterForeignAsset: boolean;
readonly asRegisterForeignAsset: {
@@ -2963,7 +2992,7 @@
readonly type: 'RegisterForeignAsset' | 'UpdateForeignAsset';
}
- /** @name PalletEvmCall (319) */
+ /** @name PalletEvmCall (320) */
interface PalletEvmCall extends Enum {
readonly isWithdraw: boolean;
readonly asWithdraw: {
@@ -3008,7 +3037,7 @@
readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
}
- /** @name PalletEthereumCall (325) */
+ /** @name PalletEthereumCall (326) */
interface PalletEthereumCall extends Enum {
readonly isTransact: boolean;
readonly asTransact: {
@@ -3017,7 +3046,7 @@
readonly type: 'Transact';
}
- /** @name EthereumTransactionTransactionV2 (326) */
+ /** @name EthereumTransactionTransactionV2 (327) */
interface EthereumTransactionTransactionV2 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumTransactionLegacyTransaction;
@@ -3028,7 +3057,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumTransactionLegacyTransaction (327) */
+ /** @name EthereumTransactionLegacyTransaction (328) */
interface EthereumTransactionLegacyTransaction extends Struct {
readonly nonce: U256;
readonly gasPrice: U256;
@@ -3039,7 +3068,7 @@
readonly signature: EthereumTransactionTransactionSignature;
}
- /** @name EthereumTransactionTransactionAction (328) */
+ /** @name EthereumTransactionTransactionAction (329) */
interface EthereumTransactionTransactionAction extends Enum {
readonly isCall: boolean;
readonly asCall: H160;
@@ -3047,14 +3076,14 @@
readonly type: 'Call' | 'Create';
}
- /** @name EthereumTransactionTransactionSignature (329) */
+ /** @name EthereumTransactionTransactionSignature (330) */
interface EthereumTransactionTransactionSignature extends Struct {
readonly v: u64;
readonly r: H256;
readonly s: H256;
}
- /** @name EthereumTransactionEip2930Transaction (331) */
+ /** @name EthereumTransactionEip2930Transaction (332) */
interface EthereumTransactionEip2930Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -3069,13 +3098,13 @@
readonly s: H256;
}
- /** @name EthereumTransactionAccessListItem (333) */
+ /** @name EthereumTransactionAccessListItem (334) */
interface EthereumTransactionAccessListItem extends Struct {
readonly address: H160;
readonly storageKeys: Vec<H256>;
}
- /** @name EthereumTransactionEip1559Transaction (334) */
+ /** @name EthereumTransactionEip1559Transaction (335) */
interface EthereumTransactionEip1559Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -3091,7 +3120,7 @@
readonly s: H256;
}
- /** @name PalletEvmMigrationCall (335) */
+ /** @name PalletEvmMigrationCall (336) */
interface PalletEvmMigrationCall extends Enum {
readonly isBegin: boolean;
readonly asBegin: {
@@ -3118,14 +3147,14 @@
readonly type: 'Begin' | 'SetData' | 'Finish' | 'InsertEthLogs' | 'InsertEvents';
}
- /** @name PalletMaintenanceCall (339) */
+ /** @name PalletMaintenanceCall (340) */
interface PalletMaintenanceCall extends Enum {
readonly isEnable: boolean;
readonly isDisable: boolean;
readonly type: 'Enable' | 'Disable';
}
- /** @name PalletTestUtilsCall (340) */
+ /** @name PalletTestUtilsCall (341) */
interface PalletTestUtilsCall extends Enum {
readonly isEnable: boolean;
readonly isSetTestValue: boolean;
@@ -3145,13 +3174,13 @@
readonly type: 'Enable' | 'SetTestValue' | 'SetTestValueAndRollback' | 'IncTestValue' | 'JustTakeFee' | 'BatchAll';
}
- /** @name PalletSudoError (342) */
+ /** @name PalletSudoError (343) */
interface PalletSudoError extends Enum {
readonly isRequireSudo: boolean;
readonly type: 'RequireSudo';
}
- /** @name OrmlVestingModuleError (344) */
+ /** @name OrmlVestingModuleError (345) */
interface OrmlVestingModuleError extends Enum {
readonly isZeroVestingPeriod: boolean;
readonly isZeroVestingPeriodCount: boolean;
@@ -3162,7 +3191,7 @@
readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
}
- /** @name OrmlXtokensModuleError (345) */
+ /** @name OrmlXtokensModuleError (346) */
interface OrmlXtokensModuleError extends Enum {
readonly isAssetHasNoReserve: boolean;
readonly isNotCrossChainTransfer: boolean;
@@ -3186,26 +3215,26 @@
readonly type: 'AssetHasNoReserve' | 'NotCrossChainTransfer' | 'InvalidDest' | 'NotCrossChainTransferableCurrency' | 'UnweighableMessage' | 'XcmExecutionFailed' | 'CannotReanchor' | 'InvalidAncestry' | 'InvalidAsset' | 'DestinationNotInvertible' | 'BadVersion' | 'DistinctReserveForAssetAndFee' | 'ZeroFee' | 'ZeroAmount' | 'TooManyAssetsBeingSent' | 'AssetIndexNonExistent' | 'FeeNotEnough' | 'NotSupportedMultiLocation' | 'MinXcmFeeNotDefined';
}
- /** @name OrmlTokensBalanceLock (348) */
+ /** @name OrmlTokensBalanceLock (349) */
interface OrmlTokensBalanceLock extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
}
- /** @name OrmlTokensAccountData (350) */
+ /** @name OrmlTokensAccountData (351) */
interface OrmlTokensAccountData extends Struct {
readonly free: u128;
readonly reserved: u128;
readonly frozen: u128;
}
- /** @name OrmlTokensReserveData (352) */
+ /** @name OrmlTokensReserveData (353) */
interface OrmlTokensReserveData extends Struct {
readonly id: Null;
readonly amount: u128;
}
- /** @name OrmlTokensModuleError (354) */
+ /** @name OrmlTokensModuleError (355) */
interface OrmlTokensModuleError extends Enum {
readonly isBalanceTooLow: boolean;
readonly isAmountIntoBalanceFailed: boolean;
@@ -3218,21 +3247,21 @@
readonly type: 'BalanceTooLow' | 'AmountIntoBalanceFailed' | 'LiquidityRestrictions' | 'MaxLocksExceeded' | 'KeepAlive' | 'ExistentialDeposit' | 'DeadAccount' | 'TooManyReserves';
}
- /** @name CumulusPalletXcmpQueueInboundChannelDetails (356) */
+ /** @name CumulusPalletXcmpQueueInboundChannelDetails (357) */
interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
readonly sender: u32;
readonly state: CumulusPalletXcmpQueueInboundState;
readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
}
- /** @name CumulusPalletXcmpQueueInboundState (357) */
+ /** @name CumulusPalletXcmpQueueInboundState (358) */
interface CumulusPalletXcmpQueueInboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name PolkadotParachainPrimitivesXcmpMessageFormat (360) */
+ /** @name PolkadotParachainPrimitivesXcmpMessageFormat (361) */
interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
readonly isConcatenatedVersionedXcm: boolean;
readonly isConcatenatedEncodedBlob: boolean;
@@ -3240,7 +3269,7 @@
readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
}
- /** @name CumulusPalletXcmpQueueOutboundChannelDetails (363) */
+ /** @name CumulusPalletXcmpQueueOutboundChannelDetails (364) */
interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
readonly recipient: u32;
readonly state: CumulusPalletXcmpQueueOutboundState;
@@ -3249,14 +3278,14 @@
readonly lastIndex: u16;
}
- /** @name CumulusPalletXcmpQueueOutboundState (364) */
+ /** @name CumulusPalletXcmpQueueOutboundState (365) */
interface CumulusPalletXcmpQueueOutboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name CumulusPalletXcmpQueueQueueConfigData (366) */
+ /** @name CumulusPalletXcmpQueueQueueConfigData (367) */
interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
readonly suspendThreshold: u32;
readonly dropThreshold: u32;
@@ -3266,7 +3295,7 @@
readonly xcmpMaxIndividualWeight: SpWeightsWeightV2Weight;
}
- /** @name CumulusPalletXcmpQueueError (368) */
+ /** @name CumulusPalletXcmpQueueError (369) */
interface CumulusPalletXcmpQueueError extends Enum {
readonly isFailedToSend: boolean;
readonly isBadXcmOrigin: boolean;
@@ -3276,7 +3305,7 @@
readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
}
- /** @name PalletXcmError (369) */
+ /** @name PalletXcmError (370) */
interface PalletXcmError extends Enum {
readonly isUnreachable: boolean;
readonly isSendFailure: boolean;
@@ -3294,29 +3323,29 @@
readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
}
- /** @name CumulusPalletXcmError (370) */
+ /** @name CumulusPalletXcmError (371) */
type CumulusPalletXcmError = Null;
- /** @name CumulusPalletDmpQueueConfigData (371) */
+ /** @name CumulusPalletDmpQueueConfigData (372) */
interface CumulusPalletDmpQueueConfigData extends Struct {
readonly maxIndividual: SpWeightsWeightV2Weight;
}
- /** @name CumulusPalletDmpQueuePageIndexData (372) */
+ /** @name CumulusPalletDmpQueuePageIndexData (373) */
interface CumulusPalletDmpQueuePageIndexData extends Struct {
readonly beginUsed: u32;
readonly endUsed: u32;
readonly overweightCount: u64;
}
- /** @name CumulusPalletDmpQueueError (375) */
+ /** @name CumulusPalletDmpQueueError (376) */
interface CumulusPalletDmpQueueError extends Enum {
readonly isUnknown: boolean;
readonly isOverLimit: boolean;
readonly type: 'Unknown' | 'OverLimit';
}
- /** @name PalletUniqueError (379) */
+ /** @name PalletUniqueError (380) */
interface PalletUniqueError extends Enum {
readonly isCollectionDecimalPointLimitExceeded: boolean;
readonly isEmptyArgument: boolean;
@@ -3324,13 +3353,13 @@
readonly type: 'CollectionDecimalPointLimitExceeded' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';
}
- /** @name PalletConfigurationError (380) */
+ /** @name PalletConfigurationError (381) */
interface PalletConfigurationError extends Enum {
readonly isInconsistentConfiguration: boolean;
readonly type: 'InconsistentConfiguration';
}
- /** @name UpDataStructsCollection (381) */
+ /** @name UpDataStructsCollection (382) */
interface UpDataStructsCollection extends Struct {
readonly owner: AccountId32;
readonly mode: UpDataStructsCollectionMode;
@@ -3343,7 +3372,7 @@
readonly flags: U8aFixed;
}
- /** @name UpDataStructsSponsorshipStateAccountId32 (382) */
+ /** @name UpDataStructsSponsorshipStateAccountId32 (383) */
interface UpDataStructsSponsorshipStateAccountId32 extends Enum {
readonly isDisabled: boolean;
readonly isUnconfirmed: boolean;
@@ -3353,43 +3382,43 @@
readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
}
- /** @name UpDataStructsProperties (384) */
+ /** @name UpDataStructsProperties (385) */
interface UpDataStructsProperties extends Struct {
readonly map: UpDataStructsPropertiesMapBoundedVec;
readonly consumedSpace: u32;
readonly spaceLimit: u32;
}
- /** @name UpDataStructsPropertiesMapBoundedVec (385) */
+ /** @name UpDataStructsPropertiesMapBoundedVec (386) */
interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
- /** @name UpDataStructsPropertiesMapPropertyPermission (390) */
+ /** @name UpDataStructsPropertiesMapPropertyPermission (391) */
interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
- /** @name UpDataStructsCollectionStats (397) */
+ /** @name UpDataStructsCollectionStats (398) */
interface UpDataStructsCollectionStats extends Struct {
readonly created: u32;
readonly destroyed: u32;
readonly alive: u32;
}
- /** @name UpDataStructsTokenChild (398) */
+ /** @name UpDataStructsTokenChild (399) */
interface UpDataStructsTokenChild extends Struct {
readonly token: u32;
readonly collection: u32;
}
- /** @name PhantomTypeUpDataStructs (399) */
+ /** @name PhantomTypeUpDataStructs (400) */
interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild, UpPovEstimateRpcPovInfo]>> {}
- /** @name UpDataStructsTokenData (401) */
+ /** @name UpDataStructsTokenData (402) */
interface UpDataStructsTokenData extends Struct {
readonly properties: Vec<UpDataStructsProperty>;
readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
readonly pieces: u128;
}
- /** @name UpDataStructsRpcCollection (403) */
+ /** @name UpDataStructsRpcCollection (404) */
interface UpDataStructsRpcCollection extends Struct {
readonly owner: AccountId32;
readonly mode: UpDataStructsCollectionMode;
@@ -3405,13 +3434,13 @@
readonly flags: UpDataStructsRpcCollectionFlags;
}
- /** @name UpDataStructsRpcCollectionFlags (404) */
+ /** @name UpDataStructsRpcCollectionFlags (405) */
interface UpDataStructsRpcCollectionFlags extends Struct {
readonly foreign: bool;
readonly erc721metadata: bool;
}
- /** @name RmrkTraitsCollectionCollectionInfo (405) */
+ /** @name RmrkTraitsCollectionCollectionInfo (406) */
interface RmrkTraitsCollectionCollectionInfo extends Struct {
readonly issuer: AccountId32;
readonly metadata: Bytes;
@@ -3420,7 +3449,7 @@
readonly nftsCount: u32;
}
- /** @name RmrkTraitsNftNftInfo (406) */
+ /** @name RmrkTraitsNftNftInfo (407) */
interface RmrkTraitsNftNftInfo extends Struct {
readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;
readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;
@@ -3429,13 +3458,13 @@
readonly pending: bool;
}
- /** @name RmrkTraitsNftRoyaltyInfo (408) */
+ /** @name RmrkTraitsNftRoyaltyInfo (409) */
interface RmrkTraitsNftRoyaltyInfo extends Struct {
readonly recipient: AccountId32;
readonly amount: Permill;
}
- /** @name RmrkTraitsResourceResourceInfo (409) */
+ /** @name RmrkTraitsResourceResourceInfo (410) */
interface RmrkTraitsResourceResourceInfo extends Struct {
readonly id: u32;
readonly resource: RmrkTraitsResourceResourceTypes;
@@ -3443,26 +3472,26 @@
readonly pendingRemoval: bool;
}
- /** @name RmrkTraitsPropertyPropertyInfo (410) */
+ /** @name RmrkTraitsPropertyPropertyInfo (411) */
interface RmrkTraitsPropertyPropertyInfo extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name RmrkTraitsBaseBaseInfo (411) */
+ /** @name RmrkTraitsBaseBaseInfo (412) */
interface RmrkTraitsBaseBaseInfo extends Struct {
readonly issuer: AccountId32;
readonly baseType: Bytes;
readonly symbol: Bytes;
}
- /** @name RmrkTraitsNftNftChild (412) */
+ /** @name RmrkTraitsNftNftChild (413) */
interface RmrkTraitsNftNftChild extends Struct {
readonly collectionId: u32;
readonly nftId: u32;
}
- /** @name UpPovEstimateRpcPovInfo (413) */
+ /** @name UpPovEstimateRpcPovInfo (414) */
interface UpPovEstimateRpcPovInfo extends Struct {
readonly proofSize: u64;
readonly compactProofSize: u64;
@@ -3471,7 +3500,7 @@
readonly keyValues: Vec<UpPovEstimateRpcTrieKeyValue>;
}
- /** @name SpRuntimeTransactionValidityTransactionValidityError (416) */
+ /** @name SpRuntimeTransactionValidityTransactionValidityError (417) */
interface SpRuntimeTransactionValidityTransactionValidityError extends Enum {
readonly isInvalid: boolean;
readonly asInvalid: SpRuntimeTransactionValidityInvalidTransaction;
@@ -3480,7 +3509,7 @@
readonly type: 'Invalid' | 'Unknown';
}
- /** @name SpRuntimeTransactionValidityInvalidTransaction (417) */
+ /** @name SpRuntimeTransactionValidityInvalidTransaction (418) */
interface SpRuntimeTransactionValidityInvalidTransaction extends Enum {
readonly isCall: boolean;
readonly isPayment: boolean;
@@ -3497,7 +3526,7 @@
readonly type: 'Call' | 'Payment' | 'Future' | 'Stale' | 'BadProof' | 'AncientBirthBlock' | 'ExhaustsResources' | 'Custom' | 'BadMandatory' | 'MandatoryValidation' | 'BadSigner';
}
- /** @name SpRuntimeTransactionValidityUnknownTransaction (418) */
+ /** @name SpRuntimeTransactionValidityUnknownTransaction (419) */
interface SpRuntimeTransactionValidityUnknownTransaction extends Enum {
readonly isCannotLookup: boolean;
readonly isNoUnsignedValidator: boolean;
@@ -3506,13 +3535,13 @@
readonly type: 'CannotLookup' | 'NoUnsignedValidator' | 'Custom';
}
- /** @name UpPovEstimateRpcTrieKeyValue (420) */
+ /** @name UpPovEstimateRpcTrieKeyValue (421) */
interface UpPovEstimateRpcTrieKeyValue extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name PalletCommonError (422) */
+ /** @name PalletCommonError (423) */
interface PalletCommonError extends Enum {
readonly isCollectionNotFound: boolean;
readonly isMustBeTokenOwner: boolean;
@@ -3553,7 +3582,7 @@
readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal' | 'ConfirmSponsorshipFail' | 'UserIsNotCollectionAdmin';
}
- /** @name PalletFungibleError (424) */
+ /** @name PalletFungibleError (425) */
interface PalletFungibleError extends Enum {
readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isFungibleItemsHaveNoId: boolean;
@@ -3565,7 +3594,7 @@
readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed' | 'SettingAllowanceForAllNotAllowed' | 'FungibleTokensAreAlwaysValid';
}
- /** @name PalletRefungibleError (428) */
+ /** @name PalletRefungibleError (429) */
interface PalletRefungibleError extends Enum {
readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isWrongRefungiblePieces: boolean;
@@ -3575,19 +3604,19 @@
readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
}
- /** @name PalletNonfungibleItemData (429) */
+ /** @name PalletNonfungibleItemData (430) */
interface PalletNonfungibleItemData extends Struct {
readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name UpDataStructsPropertyScope (431) */
+ /** @name UpDataStructsPropertyScope (432) */
interface UpDataStructsPropertyScope extends Enum {
readonly isNone: boolean;
readonly isRmrk: boolean;
readonly type: 'None' | 'Rmrk';
}
- /** @name PalletNonfungibleError (434) */
+ /** @name PalletNonfungibleError (435) */
interface PalletNonfungibleError extends Enum {
readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isNonfungibleItemsHaveNoAmount: boolean;
@@ -3595,7 +3624,7 @@
readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';
}
- /** @name PalletStructureError (435) */
+ /** @name PalletStructureError (436) */
interface PalletStructureError extends Enum {
readonly isOuroborosDetected: boolean;
readonly isDepthLimit: boolean;
@@ -3604,7 +3633,7 @@
readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';
}
- /** @name PalletRmrkCoreError (436) */
+ /** @name PalletRmrkCoreError (437) */
interface PalletRmrkCoreError extends Enum {
readonly isCorruptedCollectionType: boolean;
readonly isRmrkPropertyKeyIsTooLong: boolean;
@@ -3628,7 +3657,7 @@
readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';
}
- /** @name PalletRmrkEquipError (438) */
+ /** @name PalletRmrkEquipError (439) */
interface PalletRmrkEquipError extends Enum {
readonly isPermissionError: boolean;
readonly isNoAvailableBaseId: boolean;
@@ -3640,7 +3669,7 @@
readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';
}
- /** @name PalletAppPromotionError (444) */
+ /** @name PalletAppPromotionError (445) */
interface PalletAppPromotionError extends Enum {
readonly isAdminNotSet: boolean;
readonly isNoPermission: boolean;
@@ -3651,7 +3680,7 @@
readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';
}
- /** @name PalletForeignAssetsModuleError (445) */
+ /** @name PalletForeignAssetsModuleError (446) */
interface PalletForeignAssetsModuleError extends Enum {
readonly isBadLocation: boolean;
readonly isMultiLocationExisted: boolean;
@@ -3660,7 +3689,7 @@
readonly type: 'BadLocation' | 'MultiLocationExisted' | 'AssetIdNotExists' | 'AssetIdExisted';
}
- /** @name PalletEvmError (447) */
+ /** @name PalletEvmError (448) */
interface PalletEvmError extends Enum {
readonly isBalanceLow: boolean;
readonly isFeeOverflow: boolean;
@@ -3676,7 +3705,7 @@
readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce' | 'GasLimitTooLow' | 'GasLimitTooHigh' | 'Undefined' | 'Reentrancy' | 'TransactionMustComeFromEOA';
}
- /** @name FpRpcTransactionStatus (450) */
+ /** @name FpRpcTransactionStatus (451) */
interface FpRpcTransactionStatus extends Struct {
readonly transactionHash: H256;
readonly transactionIndex: u32;
@@ -3687,10 +3716,10 @@
readonly logsBloom: EthbloomBloom;
}
- /** @name EthbloomBloom (452) */
+ /** @name EthbloomBloom (453) */
interface EthbloomBloom extends U8aFixed {}
- /** @name EthereumReceiptReceiptV3 (454) */
+ /** @name EthereumReceiptReceiptV3 (455) */
interface EthereumReceiptReceiptV3 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumReceiptEip658ReceiptData;
@@ -3701,7 +3730,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumReceiptEip658ReceiptData (455) */
+ /** @name EthereumReceiptEip658ReceiptData (456) */
interface EthereumReceiptEip658ReceiptData extends Struct {
readonly statusCode: u8;
readonly usedGas: U256;
@@ -3709,14 +3738,14 @@
readonly logs: Vec<EthereumLog>;
}
- /** @name EthereumBlock (456) */
+ /** @name EthereumBlock (457) */
interface EthereumBlock extends Struct {
readonly header: EthereumHeader;
readonly transactions: Vec<EthereumTransactionTransactionV2>;
readonly ommers: Vec<EthereumHeader>;
}
- /** @name EthereumHeader (457) */
+ /** @name EthereumHeader (458) */
interface EthereumHeader extends Struct {
readonly parentHash: H256;
readonly ommersHash: H256;
@@ -3735,24 +3764,24 @@
readonly nonce: EthereumTypesHashH64;
}
- /** @name EthereumTypesHashH64 (458) */
+ /** @name EthereumTypesHashH64 (459) */
interface EthereumTypesHashH64 extends U8aFixed {}
- /** @name PalletEthereumError (463) */
+ /** @name PalletEthereumError (464) */
interface PalletEthereumError extends Enum {
readonly isInvalidSignature: boolean;
readonly isPreLogExists: boolean;
readonly type: 'InvalidSignature' | 'PreLogExists';
}
- /** @name PalletEvmCoderSubstrateError (464) */
+ /** @name PalletEvmCoderSubstrateError (465) */
interface PalletEvmCoderSubstrateError extends Enum {
readonly isOutOfGas: boolean;
readonly isOutOfFund: boolean;
readonly type: 'OutOfGas' | 'OutOfFund';
}
- /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (465) */
+ /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (466) */
interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {
readonly isDisabled: boolean;
readonly isUnconfirmed: boolean;
@@ -3762,7 +3791,7 @@
readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
}
- /** @name PalletEvmContractHelpersSponsoringModeT (466) */
+ /** @name PalletEvmContractHelpersSponsoringModeT (467) */
interface PalletEvmContractHelpersSponsoringModeT extends Enum {
readonly isDisabled: boolean;
readonly isAllowlisted: boolean;
@@ -3770,7 +3799,7 @@
readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
}
- /** @name PalletEvmContractHelpersError (472) */
+ /** @name PalletEvmContractHelpersError (473) */
interface PalletEvmContractHelpersError extends Enum {
readonly isNoPermission: boolean;
readonly isNoPendingSponsor: boolean;
@@ -3778,7 +3807,7 @@
readonly type: 'NoPermission' | 'NoPendingSponsor' | 'TooManyMethodsHaveSponsoredLimit';
}
- /** @name PalletEvmMigrationError (473) */
+ /** @name PalletEvmMigrationError (474) */
interface PalletEvmMigrationError extends Enum {
readonly isAccountNotEmpty: boolean;
readonly isAccountIsNotMigrating: boolean;
@@ -3786,17 +3815,17 @@
readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating' | 'BadEvent';
}
- /** @name PalletMaintenanceError (474) */
+ /** @name PalletMaintenanceError (475) */
type PalletMaintenanceError = Null;
- /** @name PalletTestUtilsError (475) */
+ /** @name PalletTestUtilsError (476) */
interface PalletTestUtilsError extends Enum {
readonly isTestPalletDisabled: boolean;
readonly isTriggerRollback: boolean;
readonly type: 'TestPalletDisabled' | 'TriggerRollback';
}
- /** @name SpRuntimeMultiSignature (477) */
+ /** @name SpRuntimeMultiSignature (478) */
interface SpRuntimeMultiSignature extends Enum {
readonly isEd25519: boolean;
readonly asEd25519: SpCoreEd25519Signature;
@@ -3807,40 +3836,43 @@
readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
}
- /** @name SpCoreEd25519Signature (478) */
+ /** @name SpCoreEd25519Signature (479) */
interface SpCoreEd25519Signature extends U8aFixed {}
- /** @name SpCoreSr25519Signature (480) */
+ /** @name SpCoreSr25519Signature (481) */
interface SpCoreSr25519Signature extends U8aFixed {}
- /** @name SpCoreEcdsaSignature (481) */
+ /** @name SpCoreEcdsaSignature (482) */
interface SpCoreEcdsaSignature extends U8aFixed {}
- /** @name FrameSystemExtensionsCheckSpecVersion (484) */
+ /** @name FrameSystemExtensionsCheckSpecVersion (485) */
type FrameSystemExtensionsCheckSpecVersion = Null;
- /** @name FrameSystemExtensionsCheckTxVersion (485) */
+ /** @name FrameSystemExtensionsCheckTxVersion (486) */
type FrameSystemExtensionsCheckTxVersion = Null;
- /** @name FrameSystemExtensionsCheckGenesis (486) */
+ /** @name FrameSystemExtensionsCheckGenesis (487) */
type FrameSystemExtensionsCheckGenesis = Null;
- /** @name FrameSystemExtensionsCheckNonce (489) */
+ /** @name FrameSystemExtensionsCheckNonce (490) */
interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
- /** @name FrameSystemExtensionsCheckWeight (490) */
+ /** @name FrameSystemExtensionsCheckWeight (491) */
type FrameSystemExtensionsCheckWeight = Null;
- /** @name OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance (491) */
+ /** @name OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance (492) */
type OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance = Null;
- /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (492) */
+ /** @name OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls (493) */
+ type OpalRuntimeRuntimeCommonIdentityDisableIdentityCalls = Null;
+
+ /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (494) */
interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
- /** @name OpalRuntimeRuntime (493) */
+ /** @name OpalRuntimeRuntime (495) */
type OpalRuntimeRuntime = Null;
- /** @name PalletEthereumFakeTransactionFinalizer (494) */
+ /** @name PalletEthereumFakeTransactionFinalizer (496) */
type PalletEthereumFakeTransactionFinalizer = Null;
} // declare module
tests/src/pallet-presence.test.tsdiffbeforeafterboth--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -66,6 +66,7 @@
const foreignAssets = 'foreignassets';
const rmrkPallets = ['rmrkcore', 'rmrkequip'];
const appPromotion = 'apppromotion';
+ const collatorSelection = ['authorship', 'session', 'collatorselection', 'identity'];
const testUtils = 'testutils';
if (chain.eq('OPAL by UNIQUE')) {
@@ -81,6 +82,7 @@
refungible,
appPromotion,
foreignAssets,
+ ...collatorSelection,
);
} else if (chain.eq('UNIQUE')) {
// Insert Unique additional pallets here
tests/src/util/identitySetter.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/util/identitySetter.ts
@@ -0,0 +1,86 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+import {encodeAddress} from '@polkadot/keyring';
+import {usingPlaygrounds, Pallets} from './index';
+import {ChainHelperBase} from './playgrounds/unique';
+
+const relayUrl = process.argv[2] ?? 'ws://localhost:9844';
+const paraUrl = process.argv[3] ?? 'ws://localhost:9944';
+const key = process.argv.length > 4 ? process.argv.slice(4).join(' ') : '//Alice';
+
+function extractIdentity(key: any, value: any): [string, any] {
+ return [(key as any).toHuman()[0], (value as any).unwrap()];
+}
+
+async function getIdentities(helper: ChainHelperBase) {
+ const identities: [string, any][] = [];
+ for(const [key, value] of await helper.getApi().query.identity.identityOf.entries())
+ identities.push(extractIdentity(key, value));
+ return identities;
+}
+
+// This is a utility for pulling
+const forceInsertIdentities = async (): Promise<void> => {
+ const identitiesOnRelay: any[] = [];
+ const identitiesToRemove: string[] = [];
+ await usingPlaygrounds(async helper => {
+ try {
+ // iterate over every identity
+ for(const [key, v] of await helper.getApi().query.identity.identityOf.entries()) {
+ const value = v as any;
+ if (value.isNone) {
+ // in the nigh-impossible case that storage map would actually give None for a value, might as well delete it
+ identitiesToRemove.push((key as any).toHuman()[0]);
+ continue;
+ }
+
+ // if any of the judgements resulted in a good confirmed outcome, keep this identity
+ if (value.unwrap().toHuman().judgements.filter((x: any) => x[1] == 'Reasonable' || x[1] == 'KnownGood').length == 0) continue;
+ identitiesOnRelay.push(extractIdentity(key, value));
+ }
+ } catch (error) {
+ console.error(error);
+ throw Error('Error during fetching identities');
+ }
+ }, relayUrl);
+
+ await usingPlaygrounds(async (helper, privateKey) => {
+ if (helper.fetchMissingPalletNames([Pallets.Identity]).length != 0) console.error('pallet-identity is not included in parachain.');
+ try {
+ const superuser = await privateKey(key);
+ const ss58Format = helper.chain.getChainProperties().ss58Format;
+ const paraIdentities = await getIdentities(helper);
+ const identitiesToAdd: any[] = [];
+
+ // cross-reference every account for changes
+ for (const [key, value] of identitiesOnRelay) {
+ const encodedKey = encodeAddress(key, ss58Format);
+
+ const identity = paraIdentities.find(i => i[0] === encodedKey);
+ if (identity) {
+ // only update if the identity info does not exist or is changed
+ if (value.toString() === identity[1].toString()) {
+ continue;
+ }
+ }
+ identitiesToAdd.push([key, value]);
+ // exercise caution - in case we have an identity and the realy doesn't, it might mean one of two things:
+ // 1) it was deleted on the relay;
+ // 2) it is our own identity, we don't want to delete it.
+ // identitiesToRemove.push((key as any).toHuman()[0]);
+ }
+
+ // await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [identitiesToRemove]);
+ await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identitiesToAdd]);
+ console.log(`Tried to upload ${identitiesToAdd.length} identities `
+ + `and found ${identitiesToRemove.length} identities for potential removal. `
+ + `Now there are ${(await helper.getApi().query.identity.identityOf.keys()).length}.`);
+ } catch (error) {
+ console.error(error);
+ throw Error('Error during setting identities');
+ }
+ }, paraUrl);
+};
+
+forceInsertIdentities().catch(() => process.exit(1));
\ No newline at end of file
tests/src/util/index.tsdiffbeforeafterboth--- a/tests/src/util/index.ts
+++ b/tests/src/util/index.ts
@@ -110,6 +110,9 @@
NFT = 'nonfungible',
Scheduler = 'scheduler',
AppPromotion = 'apppromotion',
+ CollatorSelection = 'collatorselection',
+ Session = 'session',
+ Identity = 'identity',
TestUtils = 'testutils',
}
tests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/unique.dev.ts
+++ b/tests/src/util/playgrounds/unique.dev.ts
@@ -66,6 +66,7 @@
arrange: ArrangeGroup;
wait: WaitGroup;
admin: AdminGroup;
+ session: SessionGroup;
testUtils: TestUtilGroup;
constructor(logger: { log: (msg: any, level: any) => void, level: any }, options: {[key: string]: any} = {}) {
@@ -76,6 +77,7 @@
this.wait = new WaitGroup(this);
this.admin = new AdminGroup(this);
this.testUtils = new TestUtilGroup(this);
+ this.session = new SessionGroup(this);
}
async connect(wsEndpoint: string, _listeners?: any): Promise<void> {
@@ -91,6 +93,10 @@
extrinsic: {},
payload: {},
},
+ DisableIdentityCalls: {
+ extrinsic: {},
+ payload: {},
+ },
FakeTransactionFinalizer: {
extrinsic: {},
payload: {},
@@ -251,16 +257,17 @@
const accounts: IKeyringPair[] = [];
let nonce = await this.helper.chain.getNonce(donor.address);
const tokenNominal = this.helper.balance.getOneTokenNominal();
+ const ss58Format = this.helper.chain.getChainProperties().ss58Format;
for (let i = 0; i < accountsToCreate; i++) {
if (i === 500) { // if there are too many accounts to create
await Promise.allSettled(transactions); // wait while first 500 (should be 100 for devnode) tx will be settled
transactions = []; //
nonce = await this.helper.chain.getNonce(donor.address); // update nonce
}
- const recepient = this.helper.util.fromSeed(mnemonicGenerate());
- accounts.push(recepient);
+ const recipient = this.helper.util.fromSeed(mnemonicGenerate(), ss58Format);
+ accounts.push(recipient);
if (withBalance !== 0n) {
- const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recepient.address}, withBalance * tokenNominal]);
+ const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recipient.address}, withBalance * tokenNominal]);
transactions.push(this.helper.signTransaction(donor, tx, {nonce}, 'account generation'));
nonce++;
}
@@ -337,7 +344,7 @@
const kvStr = JSON.stringify(kvJson);
const chainql = spawnSync(
- 'chainql',
+ 'chainql',
[
`--tla-code=data=${kvStr}`,
'-e', `function(data) cql.dump(cql.chain("${this.helper.getEndpoint()}").latest._meta, data, {omit_empty:true})`,
@@ -457,6 +464,27 @@
}
/**
+ * Launch some async operation, or throw an error after some time. Note that it will still continue executing after the timeout.
+ * @param promise async operation to race against the timeout
+ * @param timeoutMS time after which to time out
+ * @param timeoutError error message to throw
+ * @returns promise of the same type the operation had
+ */
+ withTimeout<T>(
+ promise: Promise<T>,
+ timeoutMS = 30000,
+ timeoutError = 'The operation has timed out!',
+ ): Promise<T> {
+ const timeout = new Promise<never>((_, reject) => {
+ setTimeout(() => {
+ reject(new Error(timeoutError));
+ }, timeoutMS);
+ });
+
+ return Promise.race<T>([promise, timeout]).catch(e => {throw new Error(e);});
+ }
+
+ /**
* Wait for specified number of blocks
* @param blocksCount number of blocks to wait
* @returns
@@ -478,6 +506,30 @@
return promise;
}
+ /**
+ * Wait for the specified number of sessions to pass.
+ * Only applicable if the Session pallet is turned on.
+ * @param sessionCount number of sessions to wait
+ * @param blockTimeout time in ms until panicking that the chain has stopped producing blocks
+ * @returns
+ */
+ async newSessions(sessionCount = 1, blockTimeout = 60000): Promise<void> {
+ console.log(`Waiting for ${sessionCount} new session${sessionCount > 1 ? 's' : ''}.`
+ + ' This might take a while -- check SessionPeriod in pallet_session::Config for session time.');
+
+ const expectedSessionIndex = await (this.helper as DevUniqueHelper).session.getIndex() + sessionCount;
+ let currentSessionIndex = -1;
+
+ while (currentSessionIndex < expectedSessionIndex) {
+ // eslint-disable-next-line no-async-promise-executor
+ currentSessionIndex = await this.withTimeout(new Promise(async (resolve) => {
+ await this.newBlocks(1);
+ const res = await (this.helper as DevUniqueHelper).session.getIndex();
+ resolve(res);
+ }), blockTimeout, 'The chain has stopped producing blocks!');
+ }
+ }
+
async forParachainBlockNumber(blockNumber: bigint | number, timeout?: number) {
timeout = timeout ?? 30 * 60 * 1000;
// eslint-disable-next-line no-async-promise-executor
@@ -561,6 +613,36 @@
}
}
+class SessionGroup {
+ helper: ChainHelperBase;
+
+ constructor(helper: ChainHelperBase) {
+ this.helper = helper;
+ }
+
+ //todo:collator documentation
+ async getIndex(): Promise<number> {
+ return (await this.helper.callRpc('api.query.session.currentIndex')).toNumber();
+ }
+
+ newSessions(sessionCount = 1, blockTimeout = 24000): Promise<void> {
+ return (this.helper as DevUniqueHelper).wait.newSessions(sessionCount, blockTimeout);
+ }
+
+ setOwnKeys(signer: TSigner, key: string) {
+ return this.helper.executeExtrinsic(
+ signer,
+ 'api.tx.session.setKeys',
+ [key, '0x0'],
+ true,
+ );
+ }
+
+ setOwnKeysFromAddress(signer: TSigner) {
+ return this.setOwnKeys(signer, '0x' + Buffer.from(signer.addressRaw).toString('hex'));
+ }
+}
+
class TestUtilGroup {
helper: DevUniqueHelper;
tests/src/util/playgrounds/unique.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/unique.ts
+++ b/tests/src/util/playgrounds/unique.ts
@@ -2733,6 +2733,66 @@
}
}
+class CollatorSelectionGroup extends HelperGroup<UniqueHelper> {
+ //todo:collator documentation
+ addInvulnerable(signer: TSigner, address: string) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.collatorSelection.addInvulnerable', [address]);
+ }
+
+ removeInvulnerable(signer: TSigner, address: string) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.collatorSelection.removeInvulnerable', [address]);
+ }
+
+ async getInvulnerables(): Promise<string[]> {
+ return (await this.helper.callRpc('api.query.collatorSelection.invulnerables')).map((x: any) => x.toHuman());
+ }
+
+ /** and also total max invulnerables */
+ maxCollators(): number {
+ return (this.helper.getApi().consts.configuration.defaultCollatorSelectionMaxCollators.toJSON() as number);
+ }
+
+ async getDesiredCollators(): Promise<number> {
+ return (await this.helper.callRpc('api.query.configuration.collatorSelectionDesiredCollatorsOverride')).toNumber();
+ }
+
+ setLicenseBond(signer: TSigner, amount: bigint) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.configuration.setCollatorSelectionLicenseBond', [amount]);
+ }
+
+ async getLicenseBond(): Promise<bigint> {
+ return (await this.helper.callRpc('api.query.configuration.collatorSelectionLicenseBondOverride')).toBigInt();
+ }
+
+ obtainLicense(signer: TSigner) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.collatorSelection.getLicense', []);
+ }
+
+ releaseLicense(signer: TSigner) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.collatorSelection.releaseLicense', []);
+ }
+
+ forceReleaseLicense(signer: TSigner, released: string) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.collatorSelection.forceReleaseLicense', [released]);
+ }
+
+ async hasLicense(address: string): Promise<bigint> {
+ return (await this.helper.callRpc('api.query.collatorSelection.licenseDepositOf', [address])).toBigInt();
+ }
+
+ onboard(signer: TSigner) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.collatorSelection.onboard', []);
+ }
+
+ offboard(signer: TSigner) {
+ return this.helper.executeExtrinsic(signer, 'api.tx.collatorSelection.offboard', []);
+ }
+
+ async getCandidates(): Promise<string[]> {
+ return (await this.helper.callRpc('api.query.collatorSelection.candidates')).map((x: any) => x.toHuman());
+ }
+}
+
class ForeignAssetsGroup extends HelperGroup<UniqueHelper> {
async register(signer: TSigner, ownerAddress: TSubstrateAccount, location: any, metadata: IForeignAssetMetadata) {
await this.helper.executeExtrinsic(
@@ -2957,6 +3017,7 @@
ft: FTGroup;
staking: StakingGroup;
scheduler: SchedulerGroup;
+ collatorSelection: CollatorSelectionGroup;
foreignAssets: ForeignAssetsGroup;
xcm: XcmGroup<UniqueHelper>;
xTokens: XTokensGroup<UniqueHelper>;
@@ -2972,6 +3033,7 @@
this.ft = new FTGroup(this);
this.staking = new StakingGroup(this);
this.scheduler = new SchedulerGroup(this);
+ this.collatorSelection = new CollatorSelectionGroup(this);
this.foreignAssets = new ForeignAssetsGroup(this);
this.xcm = new XcmGroup(this, 'polkadotXcm');
this.xTokens = new XTokensGroup(this);
@@ -3139,19 +3201,35 @@
super(...args);
}
- executeExtrinsic (
+ async executeExtrinsic(
sender: IKeyringPair,
extrinsic: string,
params: any[],
expectSuccess?: boolean,
+ options: Partial<SignerOptions>|null = null,
): Promise<ITransactionResult> {
const call = this.constructApiCall(extrinsic, params);
- return super.executeExtrinsic(
+ const result = await super.executeExtrinsic(
sender,
'api.tx.sudo.sudo',
[call],
expectSuccess,
+ options,
);
+
+ if (result.status === 'Fail') return result;
+
+ const data = (result.result.events.find(x => x.event.section == 'sudo' && x.event.method == 'Sudid')?.event.data as any).sudoResult;
+ if (data.isErr) {
+ if (data.asErr.isModule) {
+ const error = (result.result.events[1].event.data as any).sudoResult.asErr.asModule;
+ const metaError = super.getApi()?.registry.findMetaError(error);
+ throw new Error(`${metaError.section}.${metaError.name}`);
+ } else {
+ throw new Error(data.asErr.toHuman());
+ }
+ }
+ return result;
}
};
}