difftreelog
Merge commit '30c3834e43186270fad5abf1ab4654465073a23f' into feature/evm-coder-weights
in: master
135 files changed
.envdiffbeforeafterboth--- a/.env
+++ b/.env
@@ -1,6 +1,6 @@
RUST_TOOLCHAIN=nightly-2021-11-11
RUST_C=1.55.0-nightly
POLKA_VERSION=v0.9.12
-NFT_BRANCH=develop
+UNIQUE_BRANCH=develop
USER=***
PASS=***
Cargo.lockdiffbeforeafterboth937 packageslockfile v3
Might be heavy and slow!
addr2line
0.16.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacddepends onused byaddr2line
0.17.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816bdepends 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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47used byaho-corasick
0.7.18crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656fdepends onused byalways-assert
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbf688625d06217d5b1bb0ea9d9c44a1635fd0ee3534466388d18203174f4d11ansi_term
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979bdepends onused byansi_term
0.12.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.44crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1approx
0.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum072df7202e63b127ab55acfe16ce97013d5b97bf160489336d3f1840fd78e99edepends onarrayref
0.3.6crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544arrayvec
0.4.12crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9depends onused byarrayvec
0.5.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068barrayvec
0.7.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6used byasn1_der
0.7.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21used byassert_matches
1.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9used byasync-attributes
1.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5depends onused byasync-channel
1.6.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319async-executor
1.4.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965depends onused byasync-global-executor
2.0.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6depends onused byasync-io
1.6.0crates.io↘ 11↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607bdepends onasync-lock
2.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798bdepends onused byasync-mutex
1.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156edepends onused byasync-process
1.2.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb21b63ab5a0db0369deb913540af2892750e42d949faacc7a61495ac418a1692depends onasync-std
1.10.0crates.io↘ 21↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952depends on- async-attributes
1.1.2 - async-channel
1.6.1 - async-global-executor
2.0.2 - async-io
1.6.0 - async-lock
2.4.0 - async-process
1.2.0 - crossbeam-utils
0.8.5 - futures-channel
0.3.17 - futures-core
0.3.17 - futures-io
0.3.17 - futures-lite
1.12.0 - gloo-timers
0.2.1 - kv-log-macro
1.0.7 - log
0.4.14 - memchr
2.4.1 - num_cpus
1.13.0 - once_cell
1.8.0 - pin-project-lite
0.2.7 - pin-utils
0.1.0 - slab
0.4.5 - wasm-bindgen-futures
0.4.28
- async-attributes
async-std-resolver
0.20.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed4e2c3da14d8ad45acb1e3191db7a918e9505b6f155b218e70a7c9a1a48c638depends onused byasync-task
4.0.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0async-trait
0.1.51crates.io↘ 3↖ 34sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5edepends onused by- async-std-resolver
0.20.3 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - fc-consensus
2.0.0-dev - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - libp2p-request-response
0.12.0 - polkadot-network-bridge
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - 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-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-service
0.10.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.10.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-test-client
2.0.1 - trust-dns-proto
0.20.3
- async-std-resolver
asynchronous-codec
0.5.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6asynchronous-codec
0.6.0crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690atomic
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281depends onused byatomic-waker
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2aused byatty
0.2.14crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onautocfg
1.0.1crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464abacktrace
0.3.63crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6depends onbae
0.1.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec107f431ee3d8a8e45e6dd117adab769556ef463959e77bf6a4888d5fd500cfused bybase-x
0.2.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28bused bybase58
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581used bybase64
0.12.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ffbase64
0.13.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fdbeef
0.5.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736depends onused bybeefy-gadget
4.0.0-devgithub.com/paritytech/substrate.git↘ 21↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- beefy-primitives
4.0.0-dev - fnv
1.0.7 - futures
0.3.17 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sc-client-api
4.0.0-dev - sc-keystore
4.0.0-dev - sc-network
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
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30 - wasm-timer
0.2.5
- beefy-primitives
beefy-gadget-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bybeefy-merkle-tree
4.0.0-devgithub.com/paritytech/substrate.git↘ 0↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bybeefy-primitives
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onbincode
1.3.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcaddepends onbindgen
0.59.1crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum453c49e5950bb0eb63bb3df640e31618846c89d5b7faa54040d76e98e0134375depends onused bybitflags
1.3.2crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718abitvec
0.19.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321depends onused bybitvec
0.20.4crates.io↘ 4↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848depends onused by- bp-messages
0.1.0 - kusama-runtime
0.9.12 - pallet-bridge-messages
0.1.0 - parity-scale-codec
2.3.1 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - scale-info
1.0.0 - westend-runtime
0.9.12
- bp-messages
blake2
0.9.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174used byblake2-rfc
0.2.18crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400depends onblake2b_simd
0.5.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587used byblake2s_simd
0.5.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2used byblake3
0.3.8crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3depends onused byblock-buffer
0.7.3crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bused byblock-buffer
0.9.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused byblock-padding
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2caeused byblocking
1.0.2crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9depends onbounded-vec
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafdd1dffefe5fc66262a524b91087c43b16e478b2e3dc49eb11b0e2fd6b6ec90depends onbp-header-chain
0.1.0github.com/paritytech/polkadot↘ 9↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-message-dispatch
0.1.0github.com/paritytech/polkadot↘ 5↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-messages
0.1.0github.com/paritytech/polkadot↘ 9↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-polkadot-core
0.1.0github.com/paritytech/polkadot↘ 11↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybp-rialto
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybp-rococo
0.1.0github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-runtime
0.1.0github.com/paritytech/polkadot↘ 11↖ 11sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-test-utils
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybp-wococo
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybridge-runtime-common
0.1.0github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-runtime
0.1.0 - frame-support
4.0.0-dev - hash-db
0.15.2 - pallet-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-transaction-payment
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev
used by- bp-message-dispatch
bs58
0.4.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
0.2.17crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223depends onused bybuild-helper
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5fdepends onbumpalo
3.8.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6cused bybyte-slice-cast
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698used bybyte-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
0.4.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81cdepends onused bybytes
0.5.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38used bybytes
1.1.0crates.io↘ 0↖ 28sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8used by- asynchronous-codec
0.5.0 - asynchronous-codec
0.6.0 - ethereum
0.9.0 - ethereum
0.9.0 - http
0.2.5 - http-body
0.4.4 - hyper
0.14.14 - jsonrpc-server-utils
18.0.0 - libp2p
0.39.1 - libp2p-gossipsub
0.32.0 - libp2p-kad
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-plaintext
0.29.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - multistream-select
0.10.4 - prost
0.8.0 - prost-build
0.8.0 - prost-types
0.8.0 - rlp
0.5.1 - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - soketto
0.6.0 - tokio
1.13.0 - tokio-util
0.6.9 - unsigned-varint
0.6.0 - unsigned-varint
0.7.0
- asynchronous-codec
cache-padded
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dbaused bycamino
1.0.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52d74260d9bf6944e2208aa46841b4b8f0d7ffc0849a06837b2f510337f86b2bdepends onused bycargo_metadata
0.13.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8cargo-platform
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27depends onused bycc
1.0.71crates.io↘ 1↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedddepends oncexpr
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb507a7679252d2276ed0dd8113c6875ec56d3089f9225b2b42c30cc1f8e5c89depends onused bycfg_aliases
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89ecfg-if
0.1.10crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822cfg-if
1.0.0crates.io↘ 0↖ 39sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- aes
0.7.5 - async-process
1.2.0 - backtrace
0.3.63 - chacha20
0.7.1 - cpp_demangle
0.3.3 - crc32fast
1.2.1 - crossbeam-channel
0.5.1 - crossbeam-deque
0.8.1 - crossbeam-epoch
0.9.5 - crossbeam-utils
0.8.5 - directories-next
2.0.0 - flate2
1.0.22 - frame-metadata
14.0.0 - getrandom
0.1.16 - getrandom
0.2.3 - instant
0.1.12 - libloading
0.7.1 - log
0.4.14 - parity-util-mem
0.10.2 - parking_lot_core
0.8.5 - polling
2.1.0 - polyval
0.5.3 - prometheus
0.12.0 - sc-executor-wasmtime
0.10.0-dev - scale-info
1.0.0 - sha-1
0.9.8 - sha2
0.9.8 - socket2
0.3.19 - tempfile
3.2.0 - tracing
0.1.29 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - twox-hash
1.6.1 - wasm-bindgen
0.2.78 - wasm-bindgen-futures
0.4.28 - wasmtime
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0
- aes
chacha20
0.7.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412used bychacha20poly1305
0.8.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5used bychrono
0.4.19crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73cid
0.6.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768used bycipher
0.3.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7depends onckb-merkle-mountain-range
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f061f97d64fd1822664bdfb722f7ae5469a97b77567390f7442be5b5dc82a5bdepends onused byclang-sys
1.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa66045b9cb23c2e9c1520732030608b02ee07e5cfaa5a521ec15ded7fa24c90depends onused byclap
2.33.3crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002depends onused bycloudabi
0.0.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4fdepends onused byconcurrent-queue
1.2.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3depends onconstant_time_eq
0.1.5crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbcconvert_case
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0eused bycore-foundation
0.9.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3depends onused bycore-foundation-sys
0.8.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dccpp_demangle
0.3.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ea47428dc9d2237f3c6bc134472edfd63ebba0af932e783506dcfd66f10d18adepends onused bycpufeatures
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71efdepends onused bycpufeatures
0.2.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469depends oncranelift-bforest
0.77.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum15013642ddda44eebcf61365b2052a23fd8b7314f90ba44aa059ec02643c5139depends onused bycranelift-codegen
0.77.0crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum298f2a7ed5fdcb062d8e78b7496b0f4b95265d20245f2d0ca88f846dd192a3a3depends oncranelift-codegen-meta
0.77.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5cf504261ac62dfaf4ffb3f41d88fd885e81aba947c1241275043885bc5f0bacused bycranelift-entity
0.77.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48868faa07cacf948dc4a1773648813c0e453ff9467e800ff10f6a78c021b546depends oncranelift-frontend
0.77.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum351c9d13b4ecd1a536215ec2fd1c3ee9ee8bc31af172abf1e45ed0adb7a931dfcranelift-native
0.77.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6df8b556663d7611b137b24db7f6c8d9a8a27d7f29c7ea7835795152c94c1b75used bycranelift-wasm
0.77.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a69816d90db694fa79aa39b89dda7208a4ac74b6f2b8f3c4da26ee1c8bdfc5edepends onused bycrc32fast
1.2.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1adepends oncrossbeam-channel
0.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4depends onused bycrossbeam-deque
0.8.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1eused bycrossbeam-epoch
0.9.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fdused bycrossbeam-utils
0.8.5crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4dbdepends oncrunchy
0.2.2crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-mac
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5depends onused bycrypto-mac
0.8.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends oncrypto-mac
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714depends onused byct-logs
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8depends onused byctor
0.1.21crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aadepends onused byctr
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761eadepends onused bycuckoofilter
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb810a8449931679f64cd7eef1bbd0fa315801b6d5d9cdc1ace2804d6529eee18depends onused bycumulus-client-cli
0.1.0github.com/paritytech/cumulus.git↘ 3↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffused bycumulus-client-collator
0.1.0github.com/paritytech/cumulus.git↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.17 - parity-scale-codec
2.3.1 - parking_lot
0.10.2 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
- cumulus-client-consensus-common
cumulus-client-consensus-aura
0.1.0github.com/paritytech/cumulus.git↘ 23↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- async-trait
0.1.51 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.17 - parity-scale-codec
2.3.1 - polkadot-client
0.9.12 - 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
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
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - tracing
0.1.29
used by- async-trait
cumulus-client-consensus-common
0.1.0github.com/paritytech/cumulus.git↘ 13↖ 4sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends oncumulus-client-network
0.1.0github.com/paritytech/cumulus.git↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - parity-scale-codec
2.3.1 - parking_lot
0.10.2 - polkadot-client
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - sc-client-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
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
- derive_more
cumulus-client-pov-recovery
0.1.0github.com/paritytech/cumulus.git↘ 16↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- cumulus-primitives-core
0.1.0 - futures
0.3.17 - futures-timer
3.0.2 - parity-scale-codec
2.3.1 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - rand
0.8.4 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-maybe-compressed-blob
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
used by- cumulus-primitives-core
cumulus-client-service
0.1.0github.com/paritytech/cumulus.git↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- 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 - parity-scale-codec
2.3.1 - parking_lot
0.10.2 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
used by- cumulus-client-collator
cumulus-pallet-aura-ext
0.1.0github.com/paritytech/cumulus.git↘ 11↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-pallet-dmp-queue
0.1.0github.com/paritytech/cumulus.git↘ 11↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-pallet-parachain-system
0.1.0github.com/paritytech/cumulus.git↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- 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.3 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-balances
4.0.0-dev - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - xcm
0.9.12
used by- cumulus-pallet-parachain-system-proc-macro
cumulus-pallet-parachain-system-proc-macro
0.1.0github.com/paritytech/cumulus.git↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffcumulus-pallet-xcm
0.1.0github.com/paritytech/cumulus.git↘ 10↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-pallet-xcmp-queue
0.1.0github.com/paritytech/cumulus.git↘ 11↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-primitives-core
0.1.0github.com/paritytech/cumulus.git↘ 10↖ 15sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
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-test-relay-sproof-builder
0.1.0 - nft
0.9.12 - nft-runtime
0.9.12 - parachain-info
0.1.0
- cumulus-client-collator
cumulus-primitives-parachain-inherent
0.1.0github.com/paritytech/cumulus.git↘ 15↖ 2sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- async-trait
0.1.51 - cumulus-primitives-core
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - parity-scale-codec
2.3.1 - polkadot-client
0.9.12 - sc-client-api
4.0.0-dev - scale-info
1.0.0 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev - tracing
0.1.29
- async-trait
cumulus-primitives-timestamp
0.1.0github.com/paritytech/cumulus.git↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffused bycumulus-primitives-utility
0.1.0github.com/paritytech/cumulus.git↘ 10↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-test-relay-sproof-builder
0.1.0github.com/paritytech/cumulus.git↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends oncurve25519-dalek
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216used bycurve25519-dalek
3.2.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61darling
0.13.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum757c0ded2af11d8e739c4daea1ac623dd1624b06c844cf3f5a39f1bdbd99bb12depends onused bydarling_core
0.13.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c34d8efb62d0c2d7f60ece80f75e5c63c1588ba68032740494b0b9a996466e3darling_macro
0.13.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumade7bff147130fe5e6d39f089c6bd49ec0250f35d70b2eebf72afdfc919f15ccdepends onused bydata-encoding
2.3.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57data-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 byderivative
2.2.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770bdepends onderive_more
0.99.16crates.io↘ 5↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38dfused by- cumulus-client-network
0.1.0 - fc-consensus
2.0.0-dev - jsonrpc-client-transports
18.0.0 - metered-channel
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - reed-solomon-novelpoly
1.0.0 - sc-authority-discovery
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-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-transaction-pool-api
4.0.0-dev - scale-info
1.0.0 - sp-keystore
0.10.0-dev - substrate-prometheus-endpoint
0.9.0
- cumulus-client-network
digest
0.8.1crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondirectories
3.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume69600ff1703123957937708eb27f7a564e48885c537782722ed0ba3189ce1d7depends onused bydirectories-next
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbcdepends onused bydirs-sys
0.3.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780depends 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-rs
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650used bydyn-clonable
0.9.0crates.io↘ 2↖ 1sourceregistry+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.4crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcfed25519
1.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efcdepends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9deither
1.6.1crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457enum-as-inner
0.3.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595used byenumflags2
0.6.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0depends onused byenumflags2_derive
0.6.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46ccedepends onused byenumn
0.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e58b112d5099aa0857c5d05f0eacab86406dd8c0f85fe5d320a13256d29ecf4depends onused byenv_logger
0.7.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36used byenv_logger
0.9.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3environmental
1.1.3crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797errno
0.2.8crates.io↘ 3↖ 1sourceregistry+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.11.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8depends onused byethereum
0.9.0crates.io↘ 10↖ 0sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a67be3eaf296ef668733f54c637e84d0ca34eaf194f0077455135981ad464c3ethereum
0.9.0github.com/purestake/ethereum↘ 11↖ 11sourcegit+https://github.com/purestake/ethereum?branch=joshy-scale-info#2b98173bd88c05bfeefad421d260101b9008497bdepends onethereum-types
0.12.1crates.io↘ 8↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdafdepends onevent-listener
2.5.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59evm
0.30.0github.com/uniquenetwork/evm.git↘ 12↖ 4sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2depends onevm-coder
0.1.0workspace↘ 7↖ 6evm-coder-macros
0.1.0workspace↘ 7↖ 1evm-core
0.30.0github.com/uniquenetwork/evm.git↘ 5↖ 4sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2evm-gasometer
0.30.0github.com/uniquenetwork/evm.git↘ 4↖ 2sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2used byevm-runtime
0.30.0github.com/uniquenetwork/evm.git↘ 4↖ 3sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2exit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byfake-simd
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deedused byfallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392edepends onfc-consensus
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 20↖ 3sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- async-trait
0.1.51 - derive_more
0.99.16 - fc-db
2.0.0-dev - fp-consensus
2.0.0-dev - fp-rpc
3.0.0-dev - futures
0.3.17 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-consensus
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-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
fc-db
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 9↖ 5sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfc-mapping-sync
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 11↖ 2sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onused byfc-rpc
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 37↖ 2sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- ethereum
0.9.0 - ethereum-types
0.12.1 - evm
0.30.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.17 - futures-util
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - libsecp256k1
0.3.5 - log
0.4.14 - lru
0.6.6 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.7.3 - rlp
0.5.1 - rustc-hex
2.1.0 - sc-client-api
4.0.0-dev - sc-network
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 - sha3
0.8.2 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-storage
4.0.0-dev - sp-transaction-pool
4.0.0-dev
used by- ethereum
fc-rpc-core
1.1.0-devgithub.com/uniquenetwork/frontier.git↘ 8↖ 3sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byfile-per-thread-logger
0.1.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126depends onused byfinality-grandpa
0.14.4crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5adepends onfixed-hash
0.7.0crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493cfixedbitset
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04dused byflate2
1.0.22crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53fflexi_logger
0.15.12crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaab3caedb4149800f91e8e4899f29cd9ddf3b569b04c365ca9334f92f7542bfdepends onused byfnv
1.0.7crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
3.0.0github.com/paritytech/substrate.git↘ 1↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onform_urlencoded
1.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191depends onused byfp-consensus
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 7↖ 4sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-evm
3.0.0-devgithub.com/uniquenetwork/frontier.git↘ 7↖ 7sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-rpc
3.0.0-devgithub.com/uniquenetwork/frontier.git↘ 10↖ 7sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-self-contained
1.0.0-devgithub.com/uniquenetwork/frontier.git↘ 10↖ 2sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-storage
2.0.0github.com/uniquenetwork/frontier.git↘ 0↖ 3sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560ddframe-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 51sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- frame-benchmarking-cli
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.12 - nft
0.9.12 - nft-runtime
0.9.12 - 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-collective
4.0.0-dev - pallet-contracts
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-coder-substrate
0.1.0 - pallet-evm-migration
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nonfungible
0.1.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-refungible
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - 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-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm-benchmarks
0.9.8 - polkadot-client
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-executor
0.9.12
- frame-benchmarking-cli
frame-benchmarking-cli
4.0.0-devgithub.com/paritytech/substrate.git↘ 19↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- Inflector
0.11.4 - chrono
0.4.19 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - handlebars
3.5.5 - linked-hash-map
0.5.4 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-cli
0.10.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.130 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - structopt
0.3.25
used by- Inflector
frame-election-provider-support
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 9sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-executive
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-metadata
14.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96616f82e069102b95a72c87de4c84d2f87ef7f0f20630e78ce3824436483110used byframe-support
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 99sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- bitflags
1.3.2 - frame-metadata
14.0.0 - frame-support-procedural
4.0.0-dev - impl-trait-for-tuples
0.2.1 - log
0.4.14 - once_cell
1.8.0 - parity-scale-codec
2.3.1 - paste
1.0.5 - scale-info
1.0.0 - serde
1.0.130 - smallvec
1.7.0 - sp-arithmetic
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-tracing
4.0.0-dev
used by- bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
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-utility
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.12 - nft-data-structs
0.9.0 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-parachain
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - up-evm-mapping
0.1.0 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- bitflags
frame-support-procedural
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused byframe-support-procedural-tools
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-support-procedural-tools-derive
3.0.0github.com/paritytech/substrate.git↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-system
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 87sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
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 - frame-benchmarking
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.12 - nft-data-structs
0.9.0 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12
- bp-messages
frame-system-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-system-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 9sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-try-runtime
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044fs-err
2.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ebd3504ad6116843b8375ad70df74e7bfe83cac77a1f3fe73200c844d43bfe0used byfs-swap
0.2.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03d47dad3685eceed8488986cad3d5027165ea5edb164331770e2059555f10a5used byfs2
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213depends onused byfuchsia-zircon
0.3.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82depends onused byfuchsia-zircon-sys
0.3.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7used byfunty
1.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7futures
0.1.31crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678futures
0.3.17crates.io↘ 7↖ 121sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66cadepends 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 - exit-future
0.2.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.14.4 - if-watch
0.2.2 - intervalier
0.4.0 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - jsonrpc-ws-server
18.0.0 - jsonrpsee-ws-client
0.3.1 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-deflate
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-wasm-ext
0.29.0 - libp2p-websocket
0.30.0 - libp2p-yamux
0.33.0 - metered-channel
0.9.12 - mick-jaeger
0.1.4 - multistream-select
0.10.4 - nft
0.9.12 - nft-rpc
3.3.1 - parity-tokio-ipc
0.9.0 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-cli
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-metrics
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12 - rw-stream-sink
0.2.1 - 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-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-gossip
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-service
0.10.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.4.2 - soketto
0.6.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - substrate-test-utils
4.0.0-dev - wasm-timer
0.2.5 - yamux
0.9.0
- beefy-gadget
futures-channel
0.3.17crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888depends onfutures-core
0.3.17crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53dfutures-executor
0.3.17crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745cfutures-io
0.3.17crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377futures-lite
1.12.0crates.io↘ 7↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48depends onfutures-macro
0.3.17crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bbused byfutures-rustls
0.21.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8bdepends onused byfutures-sink
0.3.17crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11futures-task
0.3.17crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99futures-timer
2.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6used byfutures-timer
3.0.2crates.io↘ 0↖ 32sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cused by- cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.14.4 - libp2p-core
0.29.0 - libp2p-relay
0.3.0 - libp2p-tcp
0.29.0 - metered-channel
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-metrics
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - 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-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-utils
4.0.0-dev - sp-consensus
0.10.0-dev - sp-timestamp
4.0.0-dev
- cumulus-client-network
futures-util
0.3.17crates.io↘ 14↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481depends onused by- async-std-resolver
0.20.3 - asynchronous-codec
0.5.0 - asynchronous-codec
0.6.0 - fc-rpc
2.0.0-dev - futures
0.3.17 - futures-executor
0.3.17 - hyper
0.14.14 - hyper-rustls
0.22.1 - jsonrpc-core
18.0.0 - jsonrpsee-types
0.3.1 - substrate-prometheus-endpoint
0.9.0 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - unsigned-varint
0.6.0 - unsigned-varint
0.7.0
- async-std-resolver
generic-array
0.12.4crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bddepends ongeneric-array
0.14.4crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817depends ongetrandom
0.1.16crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.3crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753ghash
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99depends onused bygimli
0.25.0crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7gimli
0.26.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4used byglob
0.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.8crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbdused bygloo-timers
0.2.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891fused byhandlebars
3.5.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4498fc115fa7d34de968184e473529abb40eeb6be8bc5f7faba3d08c316cb3e3hash-db
0.15.2crates.io↘ 0↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364aused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - ethereum
0.9.0 - ethereum
0.9.0 - memory-db
0.27.0 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-light
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-trie
4.0.0-dev - trie-db
0.22.6 - trie-root
0.16.0 - triehash
0.8.4
- bp-runtime
hash256-std-hasher
0.15.2crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2depends onhashbrown
0.11.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726edepends onheck
0.3.3crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132cdepends onhermit-abi
0.1.19crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhex
0.4.3crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70hex_fmt
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336fused byhex-literal
0.3.3crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21e4590e13640f19f249fe3e4eca5113bc4289f2497710378190e7f4bd96f45bhmac
0.7.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695depends onused byhmac
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-drbg
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7bdepends onused byhmac-drbg
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1depends onhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhttp
0.2.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186bdepends onused byhttp-body
0.4.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6depends onused byhttparse
1.5.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumacd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503httpdate
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440used byhumantime
1.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4fdepends onused byhumantime
2.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4used byhyper
0.14.14crates.io↘ 15↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2b91bb1f221b6ea1f1e4371216b70f40748774c2fb5971b450c07773fb92d26bdepends onhyper-rustls
0.22.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64depends onused byident_case
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39used byidna
0.1.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844eused byidna
0.2.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8if-addrs
0.6.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9a83ec4af652890ac713ffd8dc859e650420a5ef47f7b9be29b6664ab50fbc8depends onused byif-addrs-sys
0.3.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79eadepends onused byif-watch
0.2.2crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179depends onimpl-codec
0.5.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443depends onimpl-rlp
0.3.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808depends onimpl-serde
0.3.1crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6fdepends onimpl-trait-for-tuples
0.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9ddepends onused byimpl-trait-for-tuples
0.2.1crates.io↘ 3↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031eedepends onused by- bp-messages
0.1.0 - cumulus-primitives-core
0.1.0 - evm-coder
0.1.0 - frame-support
4.0.0-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-util-mem
0.10.2 - polkadot-runtime-common
0.9.12 - sc-chain-spec
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-runtime-interface
4.0.0-dev - sp-wasm-interface
4.0.0-dev - up-sponsorship
0.1.0 - xcm
0.9.12 - xcm-executor
0.9.12
- bp-messages
indexmap
1.7.0crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5depends onInflector
0.11.4crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.12crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends oninteger-encoding
1.1.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48dc51180a9b377fd75814d0cc02199c20f8e99433d6762f650d39cdbbd3b56fused byinteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byintervalier
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275depends onused byiovec
0.1.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075edepends onused byip_network
0.4.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09b746553d2f4a1ca26fab939943ddfb217a091f34f53571620a8e3d30691303ipconfig
0.2.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7used byipnet
2.3.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9itertools
0.10.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eafdepends onitoa
0.4.8crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4jobserver
0.1.24crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fadepends onused byjs-sys
0.3.55crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84depends onjsonrpc-client-transports
18.0.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3adepends onused byjsonrpc-core
18.0.0crates.io↘ 7↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965ebdepends onused by- beefy-gadget-rpc
4.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - jsonrpc-client-transports
18.0.0 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - jsonrpc-ws-server
18.0.0 - nft
0.9.12 - nft-rpc
3.3.1 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-rpc
0.9.12 - sc-consensus-babe-rpc
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-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.0
- beefy-gadget-rpc
jsonrpc-core-client
18.0.0crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0jsonrpc-derive
18.0.0crates.io↘ 4↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2jsonrpc-http-server
18.0.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ffdepends onused byjsonrpc-ipc-server
18.0.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845depends onused byjsonrpc-pubsub
18.0.0crates.io↘ 7↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011depends onjsonrpc-server-utils
18.0.0crates.io↘ 10↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4depends onjsonrpc-ws-server
18.0.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946depends onused byjsonrpsee-proc-macros
0.3.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8edb341d35279b59c79d7fe9e060a51aec29d45af99cc7c72ea7caa350fa71a4jsonrpsee-types
0.3.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4cc738fd55b676ada3271ef7c383a14a0867a2a88b0fa941311bf5fc0a29d498depends onused byjsonrpsee-ws-client
0.3.1crates.io↘ 16↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9841352dbecf4c2ed5dc71698df9f1660262ae4e0b610e968602529bdbcf7b30depends onkeccak
0.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7kernel32-sys
0.2.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098ddepends onkusama-runtime
0.9.12github.com/paritytech/polkadot↘ 79↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.3 - log
0.4.14 - 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-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-gilt
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-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
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-fn
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.12 - parity-scale-codec
2.3.1 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
kv-log-macro
1.0.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977fdepends onused bykvdb
0.10.0crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45a3f58dc069ec0e205a27f5b45920722a46faed802a0541538241af6228f512depends onkvdb-memorydb
0.10.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5used bykvdb-rocksdb
0.14.0crates.io↘ 10↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b1b6ea8f2536f504b645ad78419c8246550e19d2c3419a167080ce08edee35adepends onlazy_static
1.4.0crates.io↘ 0↖ 33sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.59.1 - crossbeam-epoch
0.9.5 - crossbeam-utils
0.8.5 - flexi_logger
0.15.12 - fs-swap
0.2.6 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-mdns
0.31.0 - libp2p-noise
0.32.0 - polkadot-node-jaeger
0.9.12 - prometheus
0.12.0 - rayon-core
1.9.1 - sc-executor
0.10.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - schannel
0.1.19 - sharded-slab
0.1.4 - sp-core
4.0.0-dev - sp-keyring
4.0.0-dev - statrs
0.15.0 - structopt
0.3.25 - tracing-core
0.1.21 - tracing-log
0.1.2 - tracing-subscriber
0.2.25 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - wasm-bindgen-backend
0.2.78 - wasmtime
0.30.0 - wasmtime-runtime
0.30.0 - which
4.2.2
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used bylibc
0.2.106crates.io↘ 0↖ 68sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma60553f9a9e039a333b4e9b20573b9e9b9c0bb3a11e201ccc48ef4283456d673used by- async-io
1.6.0 - async-process
1.2.0 - atty
0.2.14 - backtrace
0.3.63 - chrono
0.4.19 - clang-sys
1.3.0 - core-foundation
0.9.2 - cpufeatures
0.1.5 - cpufeatures
0.2.1 - cranelift-native
0.77.0 - dirs-sys
0.3.6 - dirs-sys-next
0.1.2 - errno
0.2.8 - errno-dragonfly
0.1.2 - fdlimit
0.2.1 - flate2
1.0.22 - fs-swap
0.2.6 - fs2
0.4.3 - getrandom
0.1.16 - getrandom
0.2.3 - hermit-abi
0.1.19 - hostname
0.3.1 - if-addrs
0.6.6 - if-addrs-sys
0.3.2 - if-watch
0.2.2 - iovec
0.1.4 - jobserver
0.1.24 - libp2p-tcp
0.29.0 - librocksdb-sys
6.20.3 - lz4
1.23.2 - lz4-sys
1.9.2 - mach
0.3.2 - memmap2
0.2.3 - mio
0.6.23 - mio
0.7.14 - net2
0.2.37 - num_cpus
1.13.0 - parity-db
0.3.3 - parity-tokio-ipc
0.9.0 - parking_lot_core
0.7.2 - parking_lot_core
0.8.5 - polkadot-node-core-pvf
0.9.12 - polling
2.1.0 - rand
0.7.3 - rand
0.8.4 - region
2.2.0 - ring
0.16.20 - rocksdb
0.17.0 - rpassword
5.0.1 - sc-executor-wasmtime
0.10.0-dev - security-framework
2.4.2 - security-framework-sys
2.4.2 - signal-hook
0.3.10 - signal-hook-registry
1.4.0 - socket2
0.3.19 - socket2
0.4.2 - static_init
0.5.2 - tempfile
3.2.0 - time
0.1.44 - tokio
1.13.0 - wasmi
0.9.1 - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - which
4.2.2 - zstd-safe
4.1.1+zstd.1.5.0 - zstd-sys
1.6.1+zstd.1.5.0
- async-io
libloading
0.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753depends onused bylibloading
0.7.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0cf036d15402bea3c5d4de17b3fce76b3e4a56ebc1f577be0e7a72f7c607cf0depends onused bylibm
0.2.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702aused bylibp2p
0.39.1crates.io↘ 31↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9004c06878ef8f3b4b4067e69a140d87ed20bf777287f82223e49713b36ee433depends on- atomic
0.5.0 - bytes
1.1.0 - futures
0.3.17 - lazy_static
1.4.0 - libp2p-core
0.29.0 - libp2p-deflate
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-swarm-derive
0.24.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-wasm-ext
0.29.0 - libp2p-websocket
0.30.0 - libp2p-yamux
0.33.0 - multiaddr
0.13.0 - parking_lot
0.11.2 - pin-project
1.0.8 - smallvec
1.7.0 - wasm-timer
0.2.5
- atomic
libp2p-core
0.29.0crates.io↘ 26↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf9b4abdeaa420593a297c8592f63fad4234f4b88dc9343b8fd8e736c35faa59depends on- asn1_der
0.7.5 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.6.1 - fnv
1.0.7 - futures
0.3.17 - futures-timer
3.0.2 - lazy_static
1.4.0 - libsecp256k1
0.5.0 - log
0.4.14 - multiaddr
0.13.0 - multihash
0.14.0 - multistream-select
0.10.4 - parking_lot
0.11.2 - pin-project
1.0.8 - prost
0.8.0 - prost-build
0.8.0 - rand
0.7.3 - ring
0.16.20 - rw-stream-sink
0.2.1 - sha2
0.9.8 - smallvec
1.7.0 - thiserror
1.0.30 - unsigned-varint
0.7.0 - void
1.0.2 - zeroize
1.4.2
used by- libp2p
0.39.1 - libp2p-deflate
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-wasm-ext
0.29.0 - libp2p-websocket
0.30.0 - libp2p-yamux
0.33.0
- asn1_der
libp2p-deflate
0.29.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66097fccc0b7f8579f90a03ea76ba6196332ea049fd07fd969490a06819dcdc8used bylibp2p-dns
0.29.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58ff08b3196b85a17f202d80589e93b1660a574af67275706657fdc762e42c32depends onused bylibp2p-floodsub
0.30.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum404eca8720967179dac7a5b4275eb91f904a53859c69ca8d018560ad6beb214fdepends onused bylibp2p-gossipsub
0.32.0crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1cc48709bcbc3a3321f08a73560b4bbb4166a7d56f6fdb615bc775f4f91058edepends onused bylibp2p-identify
0.30.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7b61f6cf07664fb97016c318c4d4512b3dd4cc07238607f3f0163245f99008edepends onused bylibp2p-kad
0.31.0crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50ed78489c87924235665a0ab345b298ee34dff0f7ad62c0ba6608b2144fb75edepends onused bylibp2p-mdns
0.31.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma29e6cbc2a24b8471b6567e580a0e8e7b70a6d0f0ea2be0844d1e842d7d4fa33depends onused bylibp2p-mplex
0.29.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum313d9ea526c68df4425f580024e67a9d3ffd49f2c33de5154b1f5019816f7a99depends onused bylibp2p-noise
0.32.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f1db7212f342b6ba7c981cc40e31f76e9e56cb48e65fa4c142ecaca5839523edepends onused bylibp2p-ping
0.30.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2482cfd9eb0b7a0baaf3e7b329dc4f2785181a161b1a47b7192f8d758f54a439depends onused bylibp2p-plaintext
0.29.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum13b4783e5423870b9a5c199f65a7a3bc66d86ab56b2b9beebf3c338d889cf8e4depends onused bylibp2p-pnet
0.21.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07cb4dd4b917e5b40ddefe49b96b07adcd8d342e0317011d175b7b2bb1dcc974used bylibp2p-relay
0.3.0crates.io↘ 15↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0133f6cfd81cdc16e716de2982e012c62e6b9d4f12e41967b3ee361051c622aadepends onused bylibp2p-request-response
0.12.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06cdae44b6821466123af93cbcdec7c9e6ba9534a8af9cdc296446d39416d241depends onused bylibp2p-swarm
0.30.0crates.io↘ 8↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7083861341e1555467863b4cd802bea1e8c4787c0f7b5110097d0f1f3248f9a9depends onlibp2p-swarm-derive
0.24.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab8cb308d4fc854869f5abb54fdab0833d2cf670d407c745849dc47e6e08d79cdepends onused bylibp2p-tcp
0.29.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79edd26b6b4bb5feee210dcda562dca186940dfecb0024b979c3f50824b3bf28depends onused bylibp2p-uds
0.29.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum280e793440dd4e9f273d714f4497325c72cddb0fe85a49f9a03c88f41dd20182used bylibp2p-wasm-ext
0.29.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf553b7140fad3d7a76f50497b0ea591e26737d9607428a75509fc191e4d1b1f6depends onused bylibp2p-websocket
0.30.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddf99dcbf5063e9d59087f61b1e85c686ceab2f5abedb472d32288065c0e5e27depends onused bylibp2p-yamux
0.33.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum214cc0dd9c37cbed27f0bb1eba0c41bbafdb93a8be5e9d6ae1e6b4b42cd044bfused bylibrocksdb-sys
6.20.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc309a9d2470844aceb9a4a098cf5286154d20596868b75a6b36357d2bb9ca25dused bylibsecp256k1
0.3.5crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962depends onused bylibsecp256k1
0.5.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7depends onused bylibsecp256k1
0.6.0crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73depends onlibsecp256k1
0.7.0crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37depends onlibsecp256k1-core
0.2.2crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80depends onlibsecp256k1-core
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451depends onlibsecp256k1-gen-ecmult
0.2.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3depends onlibsecp256k1-gen-ecmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809depends onused bylibsecp256k1-gen-genmult
0.2.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5ddepends onlibsecp256k1-gen-genmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7cdepends onused bylibz-sys
1.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66depends onused bylinked_hash_set
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onused bylinked-hash-map
0.5.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3linregress
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8depends onused bylock_api
0.3.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75depends onused bylock_api
0.4.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109depends onused bylog
0.4.14crates.io↘ 2↖ 173sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710depends onused by- async-io
1.6.0 - async-std
1.10.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cranelift-codegen
0.77.0 - cranelift-frontend
0.77.0 - cranelift-wasm
0.77.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - env_logger
0.7.1 - env_logger
0.9.0 - evm
0.30.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - file-per-thread-logger
0.1.4 - finality-grandpa
0.14.4 - flexi_logger
0.15.12 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - globset
0.4.8 - handlebars
3.5.5 - hyper-rustls
0.22.1 - if-watch
0.2.2 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - jsonrpc-ws-server
18.0.0 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - kusama-runtime
0.9.12 - kv-log-macro
1.0.7 - kvdb-rocksdb
0.14.0 - libp2p-core
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-websocket
0.30.0 - mio
0.6.23 - mio
0.7.14 - mio-extras
2.0.6 - multistream-select
0.10.4 - nft
0.9.12 - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-contracts
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.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-offences
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-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-unq-scheduler
3.0.0 - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parity-db
0.3.3 - parity-tokio-ipc
0.9.0 - parity-ws
0.11.1 - polkadot-cli
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - polling
2.1.0 - prost-build
0.8.0 - pwasm-utils
0.18.2 - regalloc
0.0.31 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - rustls
0.19.1 - sc-allocator
4.0.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-slots
0.10.0-dev - sc-executor
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-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-proposer-metrics
0.9.0 - 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-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 - soketto
0.4.2 - soketto
0.6.0 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-state-machine
0.10.0-dev - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thrift
0.13.0 - tokio-util
0.6.9 - tracing-log
0.1.2 - trie-db
0.22.6 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - try-runtime-cli
0.10.0-dev - want
0.3.0 - wasm-bindgen-backend
0.2.78 - wasm-gc-api
0.1.11 - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - westend-runtime
0.9.12 - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12 - yamux
0.9.0
- async-io
lru
0.6.6crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91depends onlru
0.7.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c748cfe47cb8da225c37595b3108bea1c198c84aaae8ea0ba76d01dda9fc803depends onlru-cache
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1cdepends onused bylz4
1.23.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaac20ed6991e01bf6a2e68cc73df2b389707403662a8ba89f68511fb340f724cdepends onused bylz4-sys
1.9.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdca79aa95d8b3226213ad454d328369853be3a1382d89532a854f4d69640acaedepends onused bymach
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onmaplit
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651dused 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.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a8a15b776d9dfaecd44b03c5828c2199cddff5247215858aac14624f8d6b741depends onused bymemchr
2.4.1crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86amemmap2
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4depends onused bymemoffset
0.6.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9depends onmemory_units
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882used bymemory-db
0.27.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde006e09d04fc301a5f7e817b75aa49801c4479a8af753764416b085337ddcc5used bymemory-lru
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbeeb98b3d1ed2c0054bd81b5ba949a0243c3ccad751d45ea898fa8059fa2860adepends onmerlin
2.0.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42metered-channel
0.9.12github.com/paritytech/polkadot↘ 5↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003emick-jaeger
0.1.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc023c3f16109e7f33aa451f773fd61070e265b4977d0b6e344a51049296dd7dfdepends onused byminicbor
0.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51aa5bb0ca22415daca596a227b507f880ad1b2318a87fa9325312a5d285ca0ddepends onminicbor-derive
0.6.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54999f917cd092b13904737e26631aa2b2b88d625db68e4bab461dcd8006c788depends onused byminiz_oxide
0.4.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4bdepends onused bymio
0.6.23crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4depends onmio
0.7.14crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205ccused bymio-extras
2.0.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19depends onused bymiow
0.2.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944dused bymiow
0.3.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21depends onused bymore-asserts
0.2.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238multiaddr
0.13.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499depends onmultibase
0.8.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb78c60039650ff12e140ae867ef5299a58e19dded4d334c849dc7177083667e2used bymultihash
0.13.2crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cabdepends onused bymultihash
0.14.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8multihash-derive
0.7.2crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99depends onmultimap
0.8.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6aused bymultistream-select
0.10.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0abused 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.12.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775depends onused bynet2
0.2.37crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568aedepends onnft
0.9.12workspace↘ 70↖ 0depends on- 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 - 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.15.12 - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - nft-data-structs
0.9.0 - nft-rpc
3.3.1 - nft-runtime
0.9.12 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - polkadot-cli
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-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-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - 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
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
4.0.0-dev - structopt
0.3.25 - substrate-build-script-utils
3.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- cumulus-client-cli
nft-data-structs
0.9.0workspace↘ 9↖ 9depends onnft-rpc
3.3.1workspace↘ 39↖ 1depends on- 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 - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - nft-runtime
0.9.12 - pallet-ethereum
4.0.0-dev - pallet-nft
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - 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 - 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
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-storage
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - tokio
0.2.25 - uc-rpc
0.1.0 - up-rpc
0.1.0
used by- fc-db
nft-runtime
0.9.12workspace↘ 68↖ 2depends on- 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 - 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 - hex-literal
0.3.3 - nft-data-structs
0.9.0 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-inflation
3.0.0 - pallet-nft
3.0.0 - pallet-nonfungible
0.1.0 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.1.0 - 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-unq-scheduler
3.0.0 - pallet-xcm
0.9.12 - parachain-info
0.1.0 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - up-evm-mapping
0.1.0 - up-rpc
0.1.0 - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- cumulus-pallet-aura-ext
nodrop
0.1.14crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bbused bynohash-hasher
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451used bynom
6.1.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2used byntapi
0.3.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44depends onused bynum_cpus
1.13.0crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3depends onnum-bigint
0.2.6crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304num-complex
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085depends onused bynum-integer
0.1.44crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801dbdepends onnum-rational
0.2.4crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aefnum-rational
0.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6aused bynum-traits
0.2.14crates.io↘ 2↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290depends onused by- approx
0.5.0 - bp-runtime
0.1.0 - chrono
0.4.19 - finality-grandpa
0.14.4 - integer-sqrt
0.1.5 - nalgebra
0.27.1 - num-bigint
0.2.6 - num-complex
0.4.0 - num-integer
0.1.44 - num-rational
0.2.4 - num-rational
0.4.0 - ordered-float
1.1.1 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - rand_distr
0.4.2 - sc-consensus-babe
0.10.0-dev - simba
0.5.1 - sp-arithmetic
4.0.0-dev - sp-core
4.0.0-dev - sp-state-machine
0.10.0-dev - statrs
0.15.0 - wasmi
0.9.1
- approx
object
0.26.2crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2depends onobject
0.27.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9depends onused byonce_cell
1.8.0crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56opaque-debug
0.2.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529cused byopaque-debug
0.3.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssl-probe
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95aused byordered-float
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7depends onused byorml-vesting
0.4.1-devgithub.com/UniqueNetwork/open-runtime-module-library↘ 8↖ 1sourcegit+https://github.com/UniqueNetwork/open-runtime-module-library#d69f226e332ae29b7b33d53d2f06f309d2986ea0depends onused byowning_ref
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52cedepends onused bypallet-aura
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-authority-discovery
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-authorship
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-babe
4.0.0-devgithub.com/paritytech/substrate.git↘ 17↖ 8sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - sp-application-crypto
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
- frame-benchmarking
pallet-bags-list
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-balances
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 19sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- cumulus-pallet-parachain-system
0.1.0 - kusama-runtime
0.9.12 - nft-runtime
0.9.12 - pallet-bags-list
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
3.0.0 - pallet-nft
3.0.0 - 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.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12
- cumulus-pallet-parachain-system
pallet-beefy
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-beefy-mmr
4.0.0-devgithub.com/paritytech/substrate.git↘ 18↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- beefy-merkle-tree
4.0.0-dev - beefy-primitives
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex
0.4.3 - libsecp256k1
0.7.0 - log
0.4.14 - pallet-beefy
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - serde
1.0.130 - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev
- beefy-merkle-tree
pallet-bounties
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-bridge-dispatch
0.1.0github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-bridge-grandpa
0.1.0github.com/paritytech/polkadot↘ 15↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-bridge-messages
0.1.0github.com/paritytech/polkadot↘ 15↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-collective
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-common
0.1.0workspace↘ 13↖ 7depends onpallet-contract-helpers
0.1.0workspace↘ 8↖ 0pallet-contracts
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- bitflags
1.3.2 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - libsecp256k1
0.6.0 - log
0.4.14 - pallet-contracts-primitives
4.0.0-dev - pallet-contracts-proc-macro
4.0.0-dev - parity-scale-codec
2.3.1 - pwasm-utils
0.18.2 - rand
0.7.3 - scale-info
1.0.0 - serde
1.0.130 - smallvec
1.7.0 - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-std
4.0.0-dev - wasmi-validation
0.4.1
used by- bitflags
pallet-contracts-primitives
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-contracts-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-democracy
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-election-provider-multi-phase
4.0.0-devgithub.com/paritytech/substrate.git↘ 17↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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.14 - parity-scale-codec
2.3.1 - rand
0.7.3 - scale-info
1.0.0 - sp-arithmetic
4.0.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev - static_assertions
1.1.0 - strum
0.21.0 - strum_macros
0.21.1
- frame-benchmarking
pallet-elections-phragmen
5.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-ethereum
4.0.0-devgithub.com/uniquenetwork/frontier.git↘ 22↖ 8sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- ethereum
0.9.0 - ethereum-types
0.12.1 - evm
0.30.0 - fp-consensus
2.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-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
2.3.1 - rlp
0.5.1 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - sha3
0.8.2 - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev
- ethereum
pallet-evm
6.0.0-devgithub.com/uniquenetwork/frontier.git↘ 22↖ 9sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- evm
0.30.0 - evm-gasometer
0.30.0 - evm-runtime
0.30.0 - fp-evm
3.0.0-dev - 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.1 - log
0.4.14 - pallet-balances
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
2.3.1 - primitive-types
0.9.1 - rlp
0.5.1 - scale-info
1.0.0 - serde
1.0.130 - sha3
0.8.2 - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev
- evm
pallet-evm-coder-substrate
0.1.0workspace↘ 11↖ 6depends onpallet-evm-contract-helpers
0.1.0workspace↘ 12↖ 1pallet-evm-migration
0.1.0workspace↘ 11↖ 1pallet-evm-transaction-payment
0.1.0workspace↘ 13↖ 1pallet-fungible
0.1.0workspace↘ 13↖ 2depends onpallet-gilt
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-grandpa
4.0.0-devgithub.com/paritytech/substrate.git↘ 16↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - sp-application-crypto
4.0.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
- frame-benchmarking
pallet-identity
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-im-online
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-indices
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-inflation
3.0.0workspace↘ 13↖ 1depends onused bypallet-membership
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-mmr
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-mmr-primitives
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-mmr-rpc
3.0.0github.com/paritytech/substrate.git↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-multisig
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-nft
3.0.0workspace↘ 31↖ 2depends on- ethereum
0.9.0 - evm-coder
0.1.0 - fp-evm
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex-literal
0.3.3 - nft-data-structs
0.9.0 - pallet-balances
4.0.0-dev - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-fungible
0.1.0 - pallet-nonfungible
0.1.0 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - parity-scale-codec
2.3.1 - primitive-types
0.10.1 - rlp
0.5.1 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev - up-evm-mapping
0.1.0 - up-sponsorship
0.1.0
- ethereum
pallet-nicks
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-nonfungible
0.1.0workspace↘ 13↖ 2depends onpallet-offences
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-offences-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 16↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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
2.3.1 - scale-info
1.0.0 - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
- frame-benchmarking
pallet-proxy
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-randomness-collective-flip
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-recovery
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-scheduler
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-session
4.0.0-devgithub.com/paritytech/substrate.git↘ 14↖ 15sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - 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-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.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12
- kusama-runtime
pallet-session-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-society
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-staking
4.0.0-devgithub.com/paritytech/substrate.git↘ 16↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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.14 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
2.3.1 - rand_chacha
0.2.2 - scale-info
1.0.0 - serde
1.0.130 - sp-application-crypto
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
used by- frame-benchmarking
pallet-staking-reward-curve
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044pallet-staking-reward-fn
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-sudo
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-template-transaction-payment
3.0.0github.com/UniqueNetwork/pallet-sponsoring↘ 13↖ 1sourcegit+https://github.com/UniqueNetwork/pallet-sponsoring#ab8b91e9350a31133f3a3e4f52a84c6de4108e95depends onused bypallet-timestamp
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 15sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - nft-runtime
0.9.12 - pallet-aura
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
3.0.0 - pallet-nft
3.0.0 - pallet-session
4.0.0-dev - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12
- kusama-runtime
pallet-tips
4.0.0-devgithub.com/paritytech/substrate.git↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-transaction-payment
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 13sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bridge-runtime-common
0.1.0 - kusama-runtime
0.9.12 - nft-runtime
0.9.12 - pallet-nft
3.0.0 - pallet-template-transaction-payment
3.0.0 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12
- bridge-runtime-common
pallet-transaction-payment-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-transaction-payment-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-treasury
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-unq-scheduler
3.0.0workspace↘ 13↖ 1pallet-utility
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-vesting
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-xcm
0.9.12github.com/paritytech/polkadot↘ 11↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-xcm-benchmarks
0.9.8github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused byparachain-info
0.1.0github.com/paritytech/cumulus.git↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused byparity-db
0.3.3crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7ccc4a8687027deb53d45c5434a1f1b330c9d1069a59cfe80a62aa9a1da25aedepends onused byparity-scale-codec
2.3.1crates.io↘ 6↖ 217sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
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-test-relay-sproof-builder
0.1.0 - ethereum
0.9.0 - ethereum
0.9.0 - evm
0.30.0 - evm-core
0.30.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.14.4 - fork-tree
3.0.0 - fp-consensus
2.0.0-dev - fp-evm
3.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-metadata
14.0.0 - 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 - impl-codec
0.5.1 - kusama-runtime
0.9.12 - nft
0.9.12 - nft-data-structs
0.9.0 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-core-primitives
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-statement-table
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-executor-common
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-light
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-sync-state-rpc
0.10.0-dev - sc-transaction-pool
4.0.0-dev - scale-info
1.0.0 - slot-range-helper
0.9.12 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-runtime-interface
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - sp-wasm-interface
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-gadget
parity-scale-codec-derive
2.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27used byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-tokio-ipc
0.9.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6used byparity-util-mem
0.10.2crates.io↘ 10↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770depends onused by- fp-self-contained
1.0.0-dev - kvdb
0.10.0 - kvdb-memorydb
0.10.0 - kvdb-rocksdb
0.14.0 - memory-db
0.27.0 - polkadot-core-primitives
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-overseer
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - sc-informant
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev
- fp-self-contained
parity-util-mem-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2parity-wasm
0.32.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512acdepends onused byparity-wasm
0.42.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92parity-ws
0.11.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5983d3929ad50f12c3eb9a6743f19d691866ecd44da74c0a3308c3f8a56df0c6depends onused byparking
2.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72parking_lot
0.10.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505edepends onparking_lot
0.11.2crates.io↘ 3↖ 48sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99used by- beefy-gadget
4.0.0-dev - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.14.4 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-ws-server
18.0.0 - kvdb-memorydb
0.10.0 - kvdb-rocksdb
0.14.0 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-mplex
0.29.0 - libp2p-yamux
0.33.0 - nft
0.9.12 - parity-db
0.3.3 - parity-util-mem
0.10.2 - polkadot-network-bridge
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-overseer
0.9.12 - prometheus
0.12.0 - 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-light
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 - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-database
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-state-machine
0.10.0-dev - static_init
0.5.2 - trust-dns-resolver
0.20.3 - wasm-timer
0.2.5 - yamux
0.9.0
- beefy-gadget
parking_lot_core
0.7.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3used byparking_lot_core
0.8.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216used bypaste
1.0.5crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumacbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58pbkdf2
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
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831used bypercent-encoding
2.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32epest
2.1.3crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53depends onpest_derive
2.1.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0depends onused bypest_generator
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55used bypest_meta
2.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11ddepends onused bypetgraph
0.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7depends onused bypin-project
0.4.28crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum918192b5c59119d51e0cd221f4d49dde9112824ba717369e903c97d076083d0fdepends onused bypin-project
1.0.8crates.io↘ 1↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08depends onpin-project-internal
0.4.28crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3be26700300be6d9d23264c73211d8190e755b6b5ca7a1b28230025511b52a5edepends onused bypin-project-internal
1.0.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389depends onused bypin-project-lite
0.1.12crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777used bypin-project-lite
0.2.7crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443pin-utils
0.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkg-config
0.3.22crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1fused byplatforms
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325polkadot-approval-distribution
0.9.12github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-availability-bitfield-distribution
0.9.12github.com/paritytech/polkadot↘ 6↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-availability-distribution
0.9.12github.com/paritytech/polkadot↘ 15↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- derive_more
0.99.16 - futures
0.3.17 - lru
0.7.0 - parity-scale-codec
2.3.1 - polkadot-erasure-coding
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - rand
0.8.4 - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- derive_more
polkadot-availability-recovery
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-cli
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-client
0.9.12github.com/paritytech/polkadot↘ 23↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - frame-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - 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-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-finality-grandpa
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-storage
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- beefy-primitives
polkadot-collator-protocol
0.9.12github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- always-assert
0.1.2 - derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- always-assert
polkadot-core-primitives
0.9.12github.com/paritytech/polkadot↘ 6↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-dispute-distribution
0.9.12github.com/paritytech/polkadot↘ 15↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- derive_more
0.99.16 - futures
0.3.17 - lru
0.7.0 - parity-scale-codec
2.3.1 - polkadot-erasure-coding
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - sc-network
0.10.0-dev - sp-application-crypto
4.0.0-dev - sp-keystore
0.10.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- derive_more
polkadot-erasure-coding
0.9.12github.com/paritytech/polkadot↘ 7↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-gossip-support
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-network-bridge
0.9.12github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-collation-generation
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-approval-voting
0.9.12github.com/paritytech/polkadot↘ 21↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bitvec
0.20.4 - derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - kvdb
0.10.0 - lru
0.7.0 - merlin
2.0.1 - parity-scale-codec
2.3.1 - polkadot-node-jaeger
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - sc-keystore
4.0.0-dev - schnorrkel
0.9.1 - sp-application-crypto
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
used by- bitvec
polkadot-node-core-av-store
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-backing
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-bitfield-signing
0.9.12github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-candidate-validation
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-chain-api
0.9.12github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-chain-selection
0.9.12github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-dispute-coordinator
0.9.12github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-dispute-participation
0.9.12github.com/paritytech/polkadot↘ 6↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-parachains-inherent
0.9.12github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-provisioner
0.9.12github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-pvf
0.9.12github.com/paritytech/polkadot↘ 24↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- always-assert
0.1.2 - assert_matches
1.5.0 - async-process
1.2.0 - async-std
1.10.0 - futures
0.3.17 - futures-timer
3.0.2 - libc
0.2.106 - parity-scale-codec
2.3.1 - pin-project
1.0.8 - polkadot-core-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - rand
0.8.4 - 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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-io
4.0.0-dev - sp-maybe-compressed-blob
4.0.0-dev - sp-tracing
4.0.0-dev - sp-wasm-interface
4.0.0-dev - tracing
0.1.29
- always-assert
polkadot-node-core-runtime-api
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-jaeger
0.9.12github.com/paritytech/polkadot↘ 11↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-node-metrics
0.9.12github.com/paritytech/polkadot↘ 4↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003epolkadot-node-network-protocol
0.9.12github.com/paritytech/polkadot↘ 11↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused by- polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12
- polkadot-approval-distribution
polkadot-node-primitives
0.9.12github.com/paritytech/polkadot↘ 15↖ 25sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bounded-vec
0.4.0 - futures
0.3.17 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - schnorrkel
0.9.1 - serde
1.0.130 - sp-application-crypto
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-maybe-compressed-blob
4.0.0-dev - thiserror
1.0.30 - zstd
0.9.0+zstd.1.5.0
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.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12
- bounded-vec
polkadot-node-subsystem
0.9.12github.com/paritytech/polkadot↘ 3↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003eused by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12
- cumulus-client-collator
polkadot-node-subsystem-types
0.9.12github.com/paritytech/polkadot↘ 12↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-node-subsystem-util
0.9.12github.com/paritytech/polkadot↘ 20↖ 22sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- async-trait
0.1.51 - derive_more
0.99.16 - futures
0.3.17 - itertools
0.10.1 - lru
0.7.0 - metered-channel
0.9.12 - parity-scale-codec
2.3.1 - pin-project
1.0.8 - polkadot-node-jaeger
0.9.12 - polkadot-node-metrics
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - rand
0.8.4 - sp-application-crypto
4.0.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12
- async-trait
polkadot-overseer
0.9.12github.com/paritytech/polkadot↘ 14↖ 10sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- futures
0.3.17 - futures-timer
3.0.2 - lru
0.7.0 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - polkadot-node-metrics
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-primitives
0.9.12 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - tracing
0.1.29
used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - polkadot-network-bridge
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12
- futures
polkadot-overseer-gen
0.9.12github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-overseer-gen-proc-macro
0.9.12github.com/paritytech/polkadot↘ 4↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003eused bypolkadot-parachain
0.9.12github.com/paritytech/polkadot↘ 10↖ 16sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - nft
0.9.12 - nft-runtime
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12
- cumulus-client-network
polkadot-primitives
0.9.12github.com/paritytech/polkadot↘ 23↖ 50sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bitvec
0.20.4 - frame-system
4.0.0-dev - hex-literal
0.3.3 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - polkadot-core-primitives
0.9.12 - polkadot-parachain
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev
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-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - kusama-runtime
0.9.12 - nft
0.9.12 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-client
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-statement-table
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12
- bitvec
polkadot-rpc
0.9.12github.com/paritytech/polkadot↘ 24↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - jsonrpc-core
18.0.0 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-primitives
0.9.12 - 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.10.0-dev - sp-runtime
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev
- beefy-gadget
polkadot-runtime
0.9.12github.com/paritytech/polkadot↘ 70↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.3 - log
0.4.14 - 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-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-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-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
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 - parity-scale-codec
2.3.1 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev
- beefy-primitives
polkadot-runtime-common
0.9.12github.com/paritytech/polkadot↘ 40↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.1 - libsecp256k1
0.7.0 - log
0.4.14 - 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-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
2.3.1 - polkadot-primitives
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - slot-range-helper
0.9.12 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - static_assertions
1.1.0 - xcm
0.9.12
- beefy-primitives
polkadot-runtime-parachains
0.9.12github.com/paritytech/polkadot↘ 32↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bitflags
1.3.2 - bitvec
0.20.4 - derive_more
0.99.16 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
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
2.3.1 - polkadot-primitives
0.9.12 - rand
0.8.4 - rand_chacha
0.3.1 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - xcm
0.9.12 - xcm-executor
0.9.12
- bitflags
polkadot-service
0.9.12github.com/paritytech/polkadot↘ 91↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- async-trait
0.1.51 - beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.17 - hex-literal
0.3.3 - kusama-runtime
0.9.12 - kvdb
0.10.0 - kvdb-rocksdb
0.14.0 - lru
0.7.0 - pallet-babe
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-client
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - rococo-runtime
0.9.12 - 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-consensus-uncles
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-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-authority-discovery
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
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30 - tracing
0.1.29 - westend-runtime
0.9.12
- async-trait
polkadot-statement-distribution
0.9.12github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- arrayvec
0.5.2 - derive_more
0.99.16 - futures
0.3.17 - indexmap
1.7.0 - parity-scale-codec
2.3.1 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - sp-keystore
0.10.0-dev - sp-staking
4.0.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- arrayvec
polkadot-statement-table
0.9.12github.com/paritytech/polkadot↘ 3↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003epolkadot-test-runtime
0.9.12github.com/paritytech/polkadot↘ 54↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.14 - 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-mmr-primitives
4.0.0-dev - pallet-nicks
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.12 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
polkadot-test-service
0.9.12github.com/paritytech/polkadot↘ 46↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- frame-benchmarking
4.0.0-dev - frame-system
4.0.0-dev - futures
0.1.31 - futures
0.3.17 - 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.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rand
0.8.4 - 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-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-arithmetic
4.0.0-dev - 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
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - substrate-test-client
2.0.1 - tempfile
3.2.0 - tokio
1.13.0 - tracing
0.1.29
used by- frame-benchmarking
polling
2.1.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25used 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.15crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535baprimitive-types
0.9.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06345ee39fbccfb06ab45f3a1a5798d9dafa04cb8921a76d227040003a234b0eused byprimitive-types
0.10.1crates.io↘ 6↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373proc-macro-crate
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785depends onused byproc-macro-crate
1.1.0crates.io↘ 2↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83depends onused by- cumulus-pallet-parachain-system-proc-macro
0.1.0 - frame-support-procedural-tools
4.0.0-dev - jsonrpsee-proc-macros
0.3.1 - multihash-derive
0.7.2 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - polkadot-overseer-gen-proc-macro
0.9.12 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - sp-api-proc-macro
4.0.0-dev - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - substrate-test-utils-derive
0.10.0-dev
- cumulus-pallet-parachain-system-proc-macro
proc-macro-error
0.4.12crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18f33027081eba0a6d8aba6d1b1c3a3be58cbb12106341c2d5759fcd9b5277e7used byproc-macro-error
1.0.4crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
0.4.12crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69deused byproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro-hack
0.5.19crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5proc-macro-nested
0.1.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086used byproc-macro2
1.0.32crates.io↘ 1↖ 66sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43depends onused by- async-trait
0.1.51 - bae
0.1.6 - bindgen
0.59.1 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.0 - derivative
2.2.0 - derive_more
0.99.16 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.3.3 - enumflags2_derive
0.6.4 - enumn
0.1.3 - evm-coder-macros
0.1.0 - 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.17 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
18.0.0 - jsonrpsee-proc-macros
0.3.1 - minicbor-derive
0.6.4 - multihash-derive
0.7.2 - nalgebra-macros
0.1.0 - pallet-contracts-proc-macro
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.28 - pin-project-internal
1.0.8 - polkadot-overseer-gen-proc-macro
0.9.12 - proc-macro-error
0.4.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
0.4.12 - proc-macro-error-attr
1.0.4 - prost-derive
0.8.0 - quote
1.0.10 - ref-cast-impl
1.0.6 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - serde_derive
1.0.130 - sp-api-proc-macro
4.0.0-dev - sp-debug-derive
3.0.0 - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.2.0 - static_init_macro
0.5.0 - structopt-derive
0.4.18 - strum_macros
0.20.1 - strum_macros
0.21.1 - strum_macros
0.22.0 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.81 - syn-mid
0.5.3 - synstructure
0.12.6 - thiserror-impl
1.0.30 - tokio-macros
0.2.6 - tokio-macros
1.5.1 - tracing-attributes
0.1.18 - wasm-bindgen-backend
0.2.78 - wasm-bindgen-macro-support
0.2.78 - xcm-procedural
0.1.0 - zeroize_derive
1.2.0
- async-trait
prometheus
0.12.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99cprost
0.8.0crates.io↘ 2↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020depends onprost-build
0.8.0crates.io↘ 10↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603depends onprost-derive
0.8.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efbaused byprost-types
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771bdepends onused bypsm
0.1.16crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd136ff4382c4753fc061cb9e4712ab2af263376b95bbd5bd8cd50c020b78e69depends onused bypwasm-utils
0.18.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum880b3384fb00b8f6ecccd5d358b93bd2201900ae3daad213791d1864f6441f5cdepends onquick-error
1.2.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quick-error
2.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3used byquicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
1.0.10crates.io↘ 1↖ 69sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05depends onused by- async-attributes
1.1.2 - async-trait
0.1.51 - bae
0.1.6 - bindgen
0.59.1 - ctor
0.1.21 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.0 - darling_macro
0.13.0 - derivative
2.2.0 - derive_more
0.99.16 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.3.3 - enumflags2_derive
0.6.4 - enumn
0.1.3 - evm-coder-macros
0.1.0 - 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.17 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
18.0.0 - jsonrpsee-proc-macros
0.3.1 - libp2p-swarm-derive
0.24.0 - minicbor-derive
0.6.4 - multihash-derive
0.7.2 - nalgebra-macros
0.1.0 - pallet-contracts-proc-macro
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - pest_generator
2.1.3 - pin-project-internal
0.4.28 - pin-project-internal
1.0.8 - polkadot-overseer-gen-proc-macro
0.9.12 - proc-macro-error
0.4.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
0.4.12 - proc-macro-error-attr
1.0.4 - prost-derive
0.8.0 - ref-cast-impl
1.0.6 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - serde_derive
1.0.130 - sp-api-proc-macro
4.0.0-dev - sp-debug-derive
3.0.0 - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.2.0 - static_init_macro
0.5.0 - structopt-derive
0.4.18 - strum_macros
0.20.1 - strum_macros
0.21.1 - strum_macros
0.22.0 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.81 - syn-mid
0.5.3 - synstructure
0.12.6 - thiserror-impl
1.0.30 - tokio-macros
0.2.6 - tokio-macros
1.5.1 - tracing-attributes
0.1.18 - wasm-bindgen-backend
0.2.78 - wasm-bindgen-macro
0.2.78 - wasm-bindgen-macro-support
0.2.78 - xcm-procedural
0.1.0 - zeroize_derive
1.2.0
- async-attributes
radium
0.5.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8used byradium
0.6.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fbused byrand
0.7.3crates.io↘ 6↖ 36sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- cuckoofilter
0.5.0 - ed25519-dalek
1.0.1 - fc-rpc
2.0.0-dev - jsonrpc-pubsub
18.0.0 - libp2p-core
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-kad
0.31.0 - libp2p-mplex
0.29.0 - libp2p-ping
0.30.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libsecp256k1
0.3.5 - libsecp256k1
0.5.0 - libsecp256k1
0.6.0 - mick-jaeger
0.1.4 - pallet-contracts
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - parity-tokio-ipc
0.9.0 - parity-ws
0.11.1 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - soketto
0.4.2 - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - tiny-bip39
0.8.2
- cuckoofilter
rand
0.8.4crates.io↘ 4↖ 25sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8used by- cumulus-client-pov-recovery
0.1.0 - fixed-hash
0.7.0 - libp2p-mdns
0.31.0 - libp2p-noise
0.32.0 - libsecp256k1
0.7.0 - nalgebra
0.27.1 - names
0.12.0 - parity-db
0.3.3 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-service
0.9.12 - rand_distr
0.4.2 - sc-finality-grandpa
0.10.0-dev - snow
0.8.0 - soketto
0.6.0 - statrs
0.15.0 - tempfile
3.2.0 - trust-dns-proto
0.20.3 - twox-hash
1.6.1 - wasmtime-runtime
0.30.0 - yamux
0.9.0
- 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.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7depends onrand_distr
0.4.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum964d548f8e7d12e102ef183a0de7e98180c9f8729f555897a857b96e48122d2fdepends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_hc
0.3.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7depends onused byrand_pcg
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90used byrayon-core
1.9.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8edepends onused byredox_syscall
0.1.57crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ceused byredox_syscall
0.2.10crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ffdepends onredox_users
0.4.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64depends onreed-solomon-novelpoly
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221ref-cast
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541dadepends onused byref-cast-impl
1.0.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2depends onused byregalloc
0.0.31crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5depends onused byregex
1.5.4crates.io↘ 3↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461regex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-syntax
0.6.25crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89bregion
2.2.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0remote-externalities
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused byremove_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 byretain_mut
0.1.4crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum448296241d034b96c11173591deaa1302f2c17b56092106c1f92c1bc0183a8c9ring
0.16.20crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcrlp
0.5.1crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5depends onrlp-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672adepends onused byrocksdb
0.17.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a62eca5cacf2c8261128631bed9f045598d40bfbe4b29f5163f0f802f8f44a7depends onused byrococo-runtime
0.9.12github.com/paritytech/polkadot↘ 67↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bp-messages
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
0.1.0 - 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-rpc-runtime-api
4.0.0-dev - hex-literal
0.3.3 - log
0.4.14 - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-grandpa
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-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
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-utility
4.0.0-dev - pallet-xcm
0.9.12 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
rpassword
5.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efbdepends onused byrustc_version
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onused byrustc_version
0.3.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155eedepends onused byrustc-demangle
0.1.21crates.io↘ 0↖ 3sourceregistry+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↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rustls
0.19.1crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7rustls-native-certs
0.5.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092rw-stream-sink
0.2.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020ryu
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86eused bysafe-mix
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215cdepends onsalsa20
0.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0depends onused bysame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused bysc-allocator
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sc-authority-discovery
0.10.0-devgithub.com/paritytech/substrate.git↘ 20↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - ip_network
0.4.0 - libp2p
0.39.1 - log
0.4.14 - parity-scale-codec
2.3.1 - prost
0.8.0 - prost-build
0.8.0 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
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
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-basic-authorship
0.10.0-devgithub.com/paritytech/substrate.git↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-proposer-metrics
0.9.0 - 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
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- futures
sc-block-builder
0.10.0-devgithub.com/paritytech/substrate.git↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-chain-spec
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-chain-spec-derive
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-cli
0.10.0-devgithub.com/paritytech/substrate.git↘ 31↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- chrono
0.4.19 - fdlimit
0.2.1 - futures
0.3.17 - hex
0.4.3 - libp2p
0.39.1 - log
0.4.14 - names
0.12.0 - parity-scale-codec
2.3.1 - rand
0.7.3 - regex
1.5.4 - rpassword
5.0.1 - sc-client-api
4.0.0-dev - sc-keystore
4.0.0-dev - sc-network
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.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-keyring
4.0.0-dev - sp-keystore
0.10.0-dev - sp-panic-handler
3.0.0 - sp-runtime
4.0.0-dev - sp-version
4.0.0-dev - structopt
0.3.25 - thiserror
1.0.30 - tiny-bip39
0.8.2 - tokio
1.13.0
- chrono
sc-client-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 21↖ 44sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- fnv
1.0.7 - futures
0.3.17 - hash-db
0.15.2 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - 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
4.0.0-dev - sp-database
4.0.0-dev - sp-externalities
0.10.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-trie
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
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 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - nft
0.9.12 - nft-rpc
3.3.1 - polkadot-client
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-overseer
0.9.12 - polkadot-rpc
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-slots
0.10.0-dev - sc-consensus-uncles
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-light
4.0.0-dev - sc-network
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-test-client
2.0.1
- fnv
sc-client-db
0.10.0-devgithub.com/paritytech/substrate.git↘ 18↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- hash-db
0.15.2 - kvdb
0.10.0 - kvdb-memorydb
0.10.0 - kvdb-rocksdb
0.14.0 - linked-hash-map
0.5.4 - log
0.4.14 - parity-db
0.3.3 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sc-client-api
4.0.0-dev - sc-state-db
0.10.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-database
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-trie
4.0.0-dev
- hash-db
sc-consensus
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 17sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - futures
0.3.17 - futures-timer
3.0.2 - libp2p
0.39.1 - log
0.4.14 - parking_lot
0.11.2 - sc-client-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30
used by- 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 - fc-consensus
2.0.0-dev - nft
0.9.12 - polkadot-client
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
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-service
0.10.0-dev - substrate-test-client
2.0.1
- async-trait
sc-consensus-aura
0.10.0-devgithub.com/paritytech/substrate.git↘ 22↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - futures
0.3.17 - log
0.4.14 - parity-scale-codec
2.3.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
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-slots
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-consensus-babe
0.10.0-devgithub.com/paritytech/substrate.git↘ 36↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - fork-tree
3.0.0 - futures
0.3.17 - log
0.4.14 - merlin
2.0.1 - num-bigint
0.2.6 - num-rational
0.2.4 - num-traits
0.2.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.7.3 - retain_mut
0.1.4 - 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.130 - sp-api
4.0.0-dev - sp-application-crypto
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-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-version
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-consensus-babe-rpc
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- derive_more
0.99.16 - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-rpc-api
0.10.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-application-crypto
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
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev
used by- derive_more
sc-consensus-epochs
0.10.0-devgithub.com/paritytech/substrate.git↘ 6↖ 5sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-consensus-slots
0.10.0-devgithub.com/paritytech/substrate.git↘ 19↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - futures
0.3.17 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-timestamp
4.0.0-dev - thiserror
1.0.30
- async-trait
sc-consensus-uncles
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-executor
0.10.0-devgithub.com/paritytech/substrate.git↘ 19↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- lazy_static
1.4.0 - libsecp256k1
0.6.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - 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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-io
4.0.0-dev - sp-panic-handler
3.0.0 - sp-runtime-interface
4.0.0-dev - sp-tasks
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - sp-wasm-interface
4.0.0-dev - wasmi
0.9.1
- lazy_static
sc-executor-common
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-executor-wasmi
0.10.0-devgithub.com/paritytech/substrate.git↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysc-executor-wasmtime
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-finality-grandpa
0.10.0-devgithub.com/paritytech/substrate.git↘ 30↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - dyn-clone
1.0.4 - finality-grandpa
0.14.4 - fork-tree
3.0.0 - futures
0.3.17 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.8.4 - sc-block-builder
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-gossip
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.68 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-finality-grandpa-rpc
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- derive_more
0.99.16 - finality-grandpa
0.14.4 - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-finality-grandpa
0.10.0-dev - sc-rpc
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev
- derive_more
sc-informant
0.10.0-devgithub.com/paritytech/substrate.git↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysc-keystore
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-light
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-network
0.10.0-devgithub.com/paritytech/substrate.git↘ 44↖ 21sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-std
1.10.0 - async-trait
0.1.51 - asynchronous-codec
0.5.0 - bitflags
1.3.2 - bytes
1.1.0 - cid
0.6.1 - derive_more
0.99.16 - either
1.6.1 - fnv
1.0.7 - fork-tree
3.0.0 - futures
0.3.17 - futures-timer
3.0.2 - hex
0.4.3 - ip_network
0.4.0 - libp2p
0.39.1 - linked-hash-map
0.5.4 - linked_hash_set
0.1.4 - log
0.4.14 - lru
0.6.6 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - pin-project
1.0.8 - prost
0.8.0 - prost-build
0.8.0 - 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-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - smallvec
1.7.0 - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30 - unsigned-varint
0.6.0 - void
1.0.2 - zeroize
1.4.2
used by- beefy-gadget
4.0.0-dev - fc-rpc
2.0.0-dev - nft
0.9.12 - nft-rpc
3.3.1 - polkadot-availability-recovery
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev
- async-std
sc-network-gossip
0.10.0-devgithub.com/paritytech/substrate.git↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-offchain
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- bytes
1.1.0 - fnv
1.0.7 - futures
0.3.17 - futures-timer
3.0.2 - hex
0.4.3 - hyper
0.14.14 - hyper-rustls
0.22.1 - log
0.4.14 - num_cpus
1.13.0 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - threadpool
1.8.1
- bytes
sc-peerset
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-proposer-metrics
0.9.0github.com/paritytech/substrate.git↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sc-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 24↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - hash-db
0.15.2 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - 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.68 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-offchain
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-version
4.0.0-dev
- futures
sc-rpc-api
0.10.0-devgithub.com/paritytech/substrate.git↘ 18↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sc-chain-spec
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-core
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-tracing
4.0.0-dev - sp-version
4.0.0-dev - thiserror
1.0.30
- futures
sc-rpc-server
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-service
0.10.0-devgithub.com/paritytech/substrate.git↘ 58↖ 13sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - directories
3.0.2 - exit-future
0.2.0 - futures
0.3.17 - futures-timer
3.0.2 - hash-db
0.15.2 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - pin-project
1.0.8 - 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-light
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.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.130 - serde_json
1.0.68 - sp-api
4.0.0-dev - sp-application-crypto
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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - tempfile
3.2.0 - thiserror
1.0.30 - tokio
1.13.0 - tracing
0.1.29 - tracing-futures
0.2.5
- async-trait
sc-state-db
0.10.0-devgithub.com/paritytech/substrate.git↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysc-sync-state-rpc
0.10.0-devgithub.com/paritytech/substrate.git↘ 15↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - parity-scale-codec
2.3.1 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-rpc-api
0.10.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-runtime
4.0.0-dev - thiserror
1.0.30
- jsonrpc-core
sc-telemetry
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-tracing
4.0.0-devgithub.com/paritytech/substrate.git↘ 23↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.19 - lazy_static
1.4.0 - log
0.4.14 - once_cell
1.8.0 - parking_lot
0.11.2 - regex
1.5.4 - 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.130 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-tracing
4.0.0-dev - thiserror
1.0.30 - tracing
0.1.29 - tracing-log
0.1.2 - tracing-subscriber
0.2.25
- ansi_term
sc-tracing-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-transaction-pool
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - intervalier
0.4.0 - linked-hash-map
0.5.4 - log
0.4.14 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - retain_mut
0.1.4 - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30
- futures
sc-transaction-pool-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-utils
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044scale-info
1.0.0crates.io↘ 6↖ 121sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782fdepends onused by- beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
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-parachain-inherent
0.1.0 - ethbloom
0.11.1 - ethereum
0.9.0 - ethereum-types
0.12.1 - evm
0.30.0 - evm-core
0.30.0 - finality-grandpa
0.14.4 - fp-evm
3.0.0-dev - 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
14.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.12 - nft-data-structs
0.9.0 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-core-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - primitive-types
0.10.1 - rococo-runtime
0.9.12 - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
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-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - westend-runtime
0.9.12 - xcm
0.9.12 - xcm-builder
0.9.12
- beefy-primitives
scale-info-derive
1.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcdused byschannel
0.1.19crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscoped-tls
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2used byscopeguard
1.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdsct
0.6.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228cedepends onused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused bysecurity-framework
2.4.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87depends onused bysecurity-framework-sys
2.4.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7edepends 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
0.11.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6depends onsemver-parser
0.7.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used bysemver-parser
0.10.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7depends onserde
1.0.130crates.io↘ 1↖ 116sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913depends onused by- beef
0.5.1 - beefy-gadget-rpc
4.0.0-dev - bincode
1.3.3 - bp-header-chain
0.1.0 - bp-messages
0.1.0 - camino
1.0.5 - cargo-platform
0.1.2 - cargo_metadata
0.13.1 - cranelift-entity
0.77.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - ed25519-dalek
1.0.1 - ethereum
0.9.0 - ethereum
0.9.0 - evm
0.30.0 - evm-core
0.30.0 - fc-rpc-core
1.1.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-metadata
14.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
3.5.5 - impl-serde
0.3.1 - indexmap
1.7.0 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - kusama-runtime
0.9.12 - libsecp256k1
0.5.0 - libsecp256k1
0.6.0 - libsecp256k1
0.7.0 - multiaddr
0.13.0 - nft
0.9.12 - nft-data-structs
0.9.0 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-common
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
3.0.0 - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-nft
3.0.0 - pallet-offences
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-unq-scheduler
3.0.0 - pallet-xcm
0.9.12 - parachain-info
0.1.0 - parity-scale-codec
2.3.1 - polkadot-node-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-rpc-api
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 - scale-info
1.0.0 - semver
0.11.0 - serde_json
1.0.68 - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-serializer
3.0.0 - sp-storage
4.0.0-dev - sp-version
4.0.0-dev - ss58-registry
1.2.0 - substrate-test-client
2.0.1 - toml
0.5.8 - tracing-serde
0.1.2 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-types
0.30.0 - westend-runtime
0.9.12
- beef
serde_derive
1.0.130crates.io↘ 3↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508bdepends onserde_json
1.0.68crates.io↘ 3↖ 26sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8depends onused by- cargo_metadata
0.13.1 - fc-rpc-core
1.1.0-dev - handlebars
3.5.5 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - nft
0.9.12 - remote-externalities
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-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-telemetry
4.0.0-dev - sp-serializer
3.0.0 - ss58-registry
1.2.0 - substrate-test-client
2.0.1 - tracing-subscriber
0.2.25
- cargo_metadata
sha-1
0.8.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163dfsha-1
0.9.8crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6used bysha2
0.8.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69sha2
0.9.8crates.io↘ 5↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fasha3
0.8.2crates.io↘ 5↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecfsha3
0.9.1crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809sharded-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.10crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c98891d737e271a2954825ef19e46bd16bdb98e2746f2eec4f7a4ef7946efd1depends onused bysignal-hook-registry
1.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0depends onused bysignature
1.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788used bysimba
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5cused byslab
0.4.5crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5slot-range-helper
0.9.12github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003eslotmap
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342depends onused bysmallvec
1.7.0crates.io↘ 0↖ 39sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309used by- bp-rococo
0.1.0 - cranelift-codegen
0.77.0 - cranelift-frontend
0.77.0 - cranelift-wasm
0.77.0 - frame-support
4.0.0-dev - kusama-runtime
0.9.12 - kvdb
0.10.0 - kvdb-rocksdb
0.14.0 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - multistream-select
0.10.4 - nft-runtime
0.9.12 - pallet-contracts
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - parity-util-mem
0.10.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.5 - polkadot-node-subsystem-types
0.9.12 - polkadot-runtime
0.9.12 - polkadot-test-runtime
0.9.12 - regalloc
0.0.31 - rococo-runtime
0.9.12 - sc-network
0.10.0-dev - sp-state-machine
0.10.0-dev - tracing-subscriber
0.2.25 - trie-db
0.22.6 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - westend-runtime
0.9.12
- bp-rococo
snap
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451used bysnow
0.8.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7depends onused bysocket2
0.3.19crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6edepends onused bysocket2
0.4.2crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516depends onsoketto
0.4.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88used bysoketto
0.6.0crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma74e48087dbeed4833785c2f3352b59140095dc192dce966a3bfc155020a439fsp-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 72sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-wococo
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-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
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-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.12 - nft
0.9.12 - nft-rpc
3.3.1 - nft-runtime
0.9.12 - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-nft
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - 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-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-light
4.0.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.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-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-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 - uc-rpc
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12
- beefy-gadget
sp-api-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysp-application-crypto
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 28sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-test-utils
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - 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.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - 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-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
4.0.0-dev
- beefy-gadget
sp-arithmetic
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 19sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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.12 - nft-runtime
0.9.12 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-gilt
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - polkadot-primitives
0.9.12 - polkadot-test-service
0.9.12 - 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 - sp-consensus-slots
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-gadget
sp-authority-discovery
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - pallet-authority-discovery
4.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - sc-authority-discovery
0.10.0-dev - westend-runtime
0.9.12
- kusama-runtime
sp-authorship
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-block-builder
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 18sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - kusama-runtime
0.9.12 - nft
0.9.12 - nft-rpc
3.3.1 - nft-runtime
0.9.12 - polkadot-client
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - 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 - westend-runtime
0.9.12
- cumulus-client-consensus-aura
sp-blockchain
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 44sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - nft
0.9.12 - nft-rpc
3.3.1 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-rpc
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-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-light
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.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.0
- beefy-gadget
sp-consensus
0.10.0-devgithub.com/paritytech/substrate.git↘ 12↖ 29sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused 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-client-service
0.1.0 - fc-consensus
2.0.0-dev - nft
0.9.12 - nft-rpc
3.3.1 - polkadot-client
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-rpc
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
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
- cumulus-client-collator
sp-consensus-aura
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-consensus-babe
0.10.0-devgithub.com/paritytech/substrate.git↘ 16↖ 14sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - merlin
2.0.1 - parity-scale-codec
2.3.1 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev - sp-timestamp
4.0.0-dev
used by- kusama-runtime
0.9.12 - pallet-babe
4.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - westend-runtime
0.9.12
- async-trait
sp-consensus-slots
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-consensus-vrf
0.10.0-devgithub.com/paritytech/substrate.git↘ 5↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-core
4.0.0-devgithub.com/paritytech/substrate.git↘ 39↖ 146sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- base58
0.2.0 - blake2-rfc
0.2.18 - byteorder
1.4.3 - dyn-clonable
0.9.0 - ed25519-dalek
1.0.1 - futures
0.3.17 - hash-db
0.15.2 - hash256-std-hasher
0.15.2 - hex
0.4.3 - impl-serde
0.3.1 - lazy_static
1.4.0 - libsecp256k1
0.6.0 - log
0.4.14 - merlin
2.0.1 - num-traits
0.2.14 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - primitive-types
0.10.1 - rand
0.7.3 - regex
1.5.4 - scale-info
1.0.0 - schnorrkel
0.9.1 - secrecy
0.8.0 - serde
1.0.130 - sha2
0.9.8 - sp-debug-derive
3.0.0 - sp-externalities
0.10.0-dev - sp-runtime-interface
4.0.0-dev - sp-std
4.0.0-dev - sp-storage
4.0.0-dev - ss58-registry
1.2.0 - substrate-bip39
0.4.4 - thiserror
1.0.30 - tiny-bip39
0.8.2 - tiny-keccak
2.0.2 - twox-hash
1.6.1 - wasmi
0.9.1 - zeroize
1.4.2
used by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
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 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking-cli
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 - kusama-runtime
0.9.12 - nft
0.9.12 - nft-data-structs
0.9.0 - nft-rpc
3.3.1 - nft-runtime
0.9.12 - pallet-bags-list
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-bridge-dispatch
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-nft
3.0.0 - pallet-nonfungible
0.1.0 - pallet-refungible
0.1.0 - pallet-session
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-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-cli
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-core-primitives
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-table
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - sc-allocator
4.0.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-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-executor-common
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-keystore
4.0.0-dev - sc-light
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-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
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
4.0.0-dev - sp-keyring
4.0.0-dev - sp-keystore
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-tasks
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - up-evm-mapping
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm-executor
0.9.12
- base58
sp-database
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-debug-derive
3.0.0github.com/paritytech/substrate.git↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-externalities
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 14sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used by- cumulus-pallet-parachain-system
0.1.0 - frame-benchmarking-cli
4.0.0-dev - polkadot-node-core-pvf
0.9.12 - sc-client-api
4.0.0-dev - sc-executor
0.10.0-dev - sc-light
4.0.0-dev - sc-service
0.10.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime-interface
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-tasks
4.0.0-dev - try-runtime-cli
0.10.0-dev
- cumulus-pallet-parachain-system
sp-finality-grandpa
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-inherents
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 33sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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 - fc-consensus
2.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.12 - nft
0.9.12 - nft-runtime
0.9.12 - pallet-timestamp
4.0.0-dev - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - 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-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 - westend-runtime
0.9.12
- cumulus-client-consensus-aura
sp-io
4.0.0-devgithub.com/paritytech/substrate.git↘ 17↖ 68sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - hash-db
0.15.2 - libsecp256k1
0.6.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-keystore
0.10.0-dev - sp-runtime-interface
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-tracing
4.0.0-dev - sp-trie
4.0.0-dev - sp-wasm-interface
4.0.0-dev - tracing
0.1.29 - tracing-core
0.1.21
used by- bp-runtime
0.1.0 - 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 - 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 - kusama-runtime
0.9.12 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-collective
4.0.0-dev - pallet-contracts
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.0 - pallet-evm-transaction-payment
0.1.0 - 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
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nicks
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-staking
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-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - polkadot-node-core-pvf
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sp-application-crypto
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-tasks
4.0.0-dev - try-runtime-cli
0.10.0-dev - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- futures
sp-keyring
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-keystore
0.10.0-devgithub.com/paritytech/substrate.git↘ 10↖ 32sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - frame-benchmarking-cli
4.0.0-dev - nft
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - 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-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
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev
- beefy-gadget
sp-maybe-compressed-blob
4.0.0-devgithub.com/paritytech/substrate.git↘ 1↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-npos-elections
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-npos-elections-solution-type
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysp-offchain
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-panic-handler
3.0.0github.com/paritytech/substrate.git↘ 1↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-runtime
4.0.0-devgithub.com/paritytech/substrate.git↘ 15↖ 184sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
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-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-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.12 - nft
0.9.12 - nft-data-structs
0.9.0 - nft-rpc
3.3.1 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - polkadot-client
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-core-primitives
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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-slots
0.10.0-dev - sc-consensus-uncles
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-light
4.0.0-dev - sc-network
0.10.0-dev - sc-network-gossip
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-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.12 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
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
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
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-gadget
sp-runtime-interface
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-runtime-interface-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-sandbox
0.10.0-devgithub.com/paritytech/substrate.git↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-serializer
3.0.0github.com/paritytech/substrate.git↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-session
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 18sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - nft
0.9.12 - nft-rpc
3.3.1 - nft-runtime
0.9.12 - 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.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - westend-runtime
0.9.12
- kusama-runtime
sp-staking
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 18sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used by- frame-support
4.0.0-dev - kusama-runtime
0.9.12 - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - 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.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - sp-session
4.0.0-dev - westend-runtime
0.9.12
- frame-support
sp-state-machine
0.10.0-devgithub.com/paritytech/substrate.git↘ 16↖ 22sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
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.12 - polkadot-test-service
0.9.12 - 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-light
4.0.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
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev
- bp-runtime
sp-std
4.0.0-devgithub.com/paritytech/substrate.git↘ 0↖ 140sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used by- beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
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 - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - 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-try-runtime
0.10.0-dev - kusama-runtime
0.9.12 - nft-data-structs
0.9.0 - nft-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
3.0.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nft
3.0.0 - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unq-scheduler
3.0.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - polkadot-core-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - slot-range-helper
0.9.12 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.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-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-runtime-interface
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - sp-wasm-interface
4.0.0-dev - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-primitives
sp-storage
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-tasks
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-timestamp
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 8sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-tracing
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-transaction-pool
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 13sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-transaction-storage-proof
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-trie
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 21sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - 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 - cumulus-primitives-utility
0.1.0 - nft
0.9.12 - pallet-bridge-grandpa
0.1.0 - pallet-session
4.0.0-dev - polkadot-cli
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - 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-io
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-transaction-storage-proof
4.0.0-dev
- bp-runtime
sp-version
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 21sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - frame-system
4.0.0-dev - kusama-runtime
0.9.12 - nft-runtime
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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 - westend-runtime
0.9.12
- bp-polkadot-core
sp-version-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysp-wasm-interface
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 9sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044spin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byss58-registry
1.2.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb102b328df61c67f8ccf8471b29c31c7d6da646a867aff95fe8bff386fe7c4dused bystable_deref_trait
1.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fstatic_init
0.5.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369cused bystatic_init_macro
0.5.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbfused bystatrs
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05bdbb8e4e78216a85785a85d3ec3183144f98d0097b9281802c019bb07a6f05used bystrsim
0.8.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6aused bystrsim
0.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623used bystructopt
0.3.25crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum40b9788f4202aa75c240ecc9c15c65185e6a39ccdeb0fd5d008b98825464c87cstructopt-derive
0.4.18crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0used bystrum
0.20.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5cdepends onused bystrum
0.21.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2strum
0.22.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729edepends onstrum_macros
0.20.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149used bystrum_macros
0.21.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ecstrum_macros
0.22.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fbused bysubstrate-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.git↘ 1↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysubstrate-frame-rpc-system
4.0.0-devgithub.com/paritytech/substrate.git↘ 15↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-rpc-api
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-core
4.0.0-dev - sp-runtime
4.0.0-dev
- frame-system-rpc-runtime-api
substrate-prometheus-endpoint
0.9.0github.com/paritytech/substrate.git↘ 7↖ 20sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - nft
0.9.12 - polkadot-node-metrics
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-service
0.9.12 - 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-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-proposer-metrics
0.9.0 - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev
- beefy-gadget
substrate-test-client
2.0.1github.com/paritytech/substrate.git↘ 20↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - futures
0.3.17 - hex
0.4.3 - parity-scale-codec
2.3.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-light
4.0.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-keyring
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev
used by- async-trait
substrate-test-utils
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysubstrate-test-utils-derive
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044substrate-wasm-builder
5.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsubtle
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8eeused bysubtle
2.4.1crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601syn
1.0.81crates.io↘ 3↖ 66sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966used by- async-attributes
1.1.2 - async-trait
0.1.51 - bae
0.1.6 - ctor
0.1.21 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.0 - darling_macro
0.13.0 - data-encoding-macro-internal
0.1.10 - derivative
2.2.0 - derive_more
0.99.16 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.3.3 - enumflags2_derive
0.6.4 - enumn
0.1.3 - evm-coder-macros
0.1.0 - 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.17 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
18.0.0 - jsonrpsee-proc-macros
0.3.1 - libp2p-swarm-derive
0.24.0 - minicbor-derive
0.6.4 - multihash-derive
0.7.2 - nalgebra-macros
0.1.0 - pallet-contracts-proc-macro
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.28 - pin-project-internal
1.0.8 - polkadot-overseer-gen-proc-macro
0.9.12 - proc-macro-error
0.4.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
0.4.12 - prost-derive
0.8.0 - ref-cast-impl
1.0.6 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - serde_derive
1.0.130 - sp-api-proc-macro
4.0.0-dev - sp-debug-derive
3.0.0 - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - static_init_macro
0.5.0 - structopt-derive
0.4.18 - strum_macros
0.20.1 - strum_macros
0.21.1 - strum_macros
0.22.0 - substrate-test-utils-derive
0.10.0-dev - syn-mid
0.5.3 - synstructure
0.12.6 - thiserror-impl
1.0.30 - tokio-macros
0.2.6 - tokio-macros
1.5.1 - tracing-attributes
0.1.18 - wasm-bindgen-backend
0.2.78 - wasm-bindgen-macro-support
0.2.78 - xcm-procedural
0.1.0 - zeroize_derive
1.2.0
- async-attributes
syn-mid
0.5.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaa8e7560a164edb1621a55d18a0c59abf49d360f47aa7b821061dd7eea7fac9depends onused bysynstructure
0.12.6crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210ftap
1.0.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369used bytarget-lexicon
0.12.2crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9bffcddbc2458fa3e6058414599e3c838a022abae82e5c67b4f7f80298d5bfftempfile
3.2.0crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22termcolor
1.1.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4depends ontextwrap
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060depends onused bythiserror
1.0.30crates.io↘ 1↖ 64sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417depends onused by- beefy-gadget
4.0.0-dev - bounded-vec
0.4.0 - flexi_logger
0.15.12 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - libp2p-core
0.29.0 - libp2p-yamux
0.33.0 - metered-channel
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-cli
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - proc-macro-crate
1.1.0 - prometheus
0.12.0 - reed-solomon-novelpoly
1.0.0 - sc-allocator
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-network
0.10.0-dev - sc-rpc-api
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
4.0.0-dev - sp-inherents
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-timestamp
4.0.0-dev - sp-version
4.0.0-dev - tiny-bip39
0.8.2 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - wasmtime-cranelift
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - wasmtime-types
0.30.0
- beefy-gadget
thiserror-impl
1.0.30crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714bdepends onused bythread_local
1.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbddepends onused bythreadpool
1.8.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onthrift
0.13.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c6d965454947cc7266d22716ebfd07b18d84ebaf35eec558586bbb2a8cb6b5bused bytime
0.1.44crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255used bytiny-bip39
0.8.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839ddepends ontiny-keccak
2.0.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends ontinyvec
1.5.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf83b2a3d4d9091d0abd7eba4dc2710b1718583bd4d8992e2190720ea38f391f7depends ontinyvec_macros
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5cused bytokio
0.2.25crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092used bytokio
1.13.0crates.io↘ 11↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum588b2d10a336da58d877567cd8fb8a14b463e2104910f8132cd054b4b96e29eedepends onused bytokio-macros
0.2.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265adepends onused bytokio-macros
1.5.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum114383b041aa6212c579467afa0075fbbdd0718de036100bc0ba7961d8cb9095depends onused bytokio-rustls
0.22.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6depends ontokio-stream
0.1.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3used bytokio-util
0.6.9crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0depends ontoml
0.5.8crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaadepends ontower-service
0.3.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6tracing
0.1.29crates.io↘ 4↖ 45sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105used 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-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - hyper
0.14.14 - metered-channel
0.9.12 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12 - sc-network-gossip
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sp-io
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-tracing
4.0.0-dev - tracing-futures
0.2.5 - tracing-subscriber
0.2.25
- cumulus-client-collator
tracing-attributes
0.1.18crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8edepends onused bytracing-core
0.1.21crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4depends ontracing-futures
0.2.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2depends onused bytracing-log
0.1.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3tracing-serde
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28bdepends onused bytracing-subscriber
0.2.25crates.io↘ 14↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71depends ontrie-db
0.22.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9eac131e334e81b6b3be07399482042838adcd7957aa0010231d0813e39e02fatrie-root
0.16.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cddepends ontriehash
0.8.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5cdepends onused bytrust-dns-proto
0.20.3crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad0d7f5db438199a6e2609debe3f69f808d074e0a2888ee0bccb45fe234d03f4depends onused bytrust-dns-resolver
0.20.3crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6ad17b608a64bd0735e67bde16b0636f8aa8591f831a25d18443ed00a699770depends ontry-runtime-cli
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- jsonrpsee-ws-client
0.3.1 - log
0.4.14 - parity-scale-codec
2.3.1 - remote-externalities
0.10.0-dev - 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.130 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-version
4.0.0-dev - structopt
0.3.25
used by- jsonrpsee-ws-client
twox-hash
1.6.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78eused bytypenum
1.14.0crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ecuint
0.9.1crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5funicase
2.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6depends onunicode-bidi
0.3.7crates.io↘ 0↖ 2unicode-normalization
0.1.19crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9depends onunicode-segmentation
1.8.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385bused byunicode-width
0.1.9crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973used byunicode-xid
0.2.2crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3universal-hash
0.4.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05depends onused byunsigned-varint
0.5.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35used byunsigned-varint
0.6.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2used byunsigned-varint
0.7.0crates.io↘ 4↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7funtrusted
0.7.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aup-evm-mapping
0.1.0workspace↘ 2↖ 4up-rpc
0.1.0workspace↘ 7↖ 3up-sponsorship
0.1.0github.com/UniqueNetwork/pallet-sponsoring↘ 1↖ 6sourcegit+https://github.com/UniqueNetwork/pallet-sponsoring#ab8b91e9350a31133f3a3e4f52a84c6de4108e95depends onurl
1.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355aurl
2.2.2crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578cvalue-bag
1.0.0-alpha.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263fdepends onused byvcpkg
0.2.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaccd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426used byvec_map
0.8.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191used byversion_check
0.9.3crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fevoid
1.0.2crates.io↘ 0↖ 8sourceregistry+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↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasm-bindgen
0.2.78crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fcedepends onwasm-bindgen-backend
0.2.78crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837bdepends onwasm-bindgen-futures
0.4.28crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39wasm-bindgen-macro
0.2.78crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9used bywasm-bindgen-macro-support
0.2.78crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5abused bywasm-gc-api
0.1.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9wasm-timer
0.2.5crates.io↘ 7↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onwasmi
0.9.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795ddepends onwasmi-validation
0.4.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum165343ecd6c018fc09ebcae280752702c9a2ef3e6f8d02f1cfcbdb53ef6d7937depends onwasmparser
0.80.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6bwasmtime
0.30.0crates.io↘ 24↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum899b1e5261e3d3420860dacfb952871ace9d7ba9f953b314f67aaf9f8e2a4d89depends on- anyhow
1.0.44 - backtrace
0.3.63 - bincode
1.3.3 - cfg-if
1.0.0 - cpp_demangle
0.3.3 - indexmap
1.7.0 - lazy_static
1.4.0 - libc
0.2.106 - log
0.4.14 - object
0.26.2 - paste
1.0.5 - psm
0.1.16 - rayon
1.5.1 - region
2.2.0 - rustc-demangle
0.1.21 - serde
1.0.130 - target-lexicon
0.12.2 - wasmparser
0.80.2 - wasmtime-cache
0.30.0 - wasmtime-cranelift
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - winapi
0.3.9
- anyhow
wasmtime-cache
0.30.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2493b81d7a9935f7af15e06beec806f256bc974a90a843685f3d61f2fc97058depends onused bywasmtime-cranelift
0.30.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99706bacdf5143f7f967d417f0437cce83a724cf4518cb1a3ff40e519d793021depends onused bywasmtime-environ
0.30.0crates.io↘ 13↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac42cb562a2f98163857605f02581d719a410c5abe93606128c59a10e84de85bdepends onwasmtime-jit
0.30.0crates.io↘ 17↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24f46dd757225f29a419be415ea6fb8558df9b0194f07e3a6a9c99d0e14dd534depends onused bywasmtime-runtime
0.30.0crates.io↘ 16↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0122215a44923f395487048cb0a1d60b5b32c73aab15cf9364b798dbaff0996fdepends onwasmtime-types
0.30.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf9b01caf8a204ef634ebac99700e77ba716d3ebbb68a1abbc2ceb6b16dbec9e4web-sys
0.3.55crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fbdepends onwebpki
0.21.4crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4eadepends onwebpki-roots
0.21.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940depends onused bywepoll-ffi
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fbdepends onused bywestend-runtime
0.9.12github.com/paritytech/polkadot↘ 77↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.3 - log
0.4.14 - 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-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-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
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.12 - pallet-xcm-benchmarks
0.9.8 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
which
4.2.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9depends onused bywidestring
0.4.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7cused bywinapi
0.2.8crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087awinapi
0.3.9crates.io↘ 2↖ 43sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.11.0 - ansi_term
0.12.1 - async-io
1.6.0 - async-process
1.2.0 - atty
0.2.14 - chrono
0.4.19 - dirs-sys
0.3.6 - dirs-sys-next
0.1.2 - errno
0.2.8 - fs-swap
0.2.6 - fs2
0.4.3 - hostname
0.3.1 - if-addrs
0.6.6 - if-watch
0.2.2 - ipconfig
0.2.2 - libloading
0.5.2 - libloading
0.7.1 - mio
0.7.14 - miow
0.3.7 - net2
0.2.37 - ntapi
0.3.6 - parity-tokio-ipc
0.9.0 - parity-util-mem
0.10.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.5 - polling
2.1.0 - region
2.2.0 - remove_dir_all
0.5.3 - ring
0.16.20 - rpassword
5.0.1 - schannel
0.1.19 - socket2
0.3.19 - socket2
0.4.2 - tempfile
3.2.0 - time
0.1.44 - tokio
1.13.0 - walkdir
2.3.2 - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - winapi-util
0.1.5 - winreg
0.6.2
- ansi_term
winapi-build
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bcwinapi-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 bywinreg
0.6.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9depends onused byws2_32-sys
0.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5edepends onused bywyz
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214used byx25519-dalek
1.1.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byxcm
0.9.12github.com/paritytech/polkadot↘ 6↖ 16sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused by- 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 - kusama-runtime
0.9.12 - nft-runtime
0.9.12 - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- cumulus-pallet-dmp-queue
xcm-builder
0.9.12github.com/paritytech/polkadot↘ 13↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onxcm-executor
0.9.12github.com/paritytech/polkadot↘ 11↖ 11sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onxcm-procedural
0.1.0github.com/paritytech/polkadot↘ 3↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused byyamux
0.9.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107used byyansi
0.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71used byzeroize
1.4.2crates.io↘ 1↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf68b08513768deaa790264a7fac27a58cbf2705cfcdc9448362229217d7e970depends onzeroize_derive
1.2.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdff2024a851a322b08f179173ae2ba620445aef1e838f0c196820eade4ae0c7used byzstd
0.9.0+zstd.1.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07749a5dc2cb6b36661290245e350f15ec3bbb304e493db54a1d354480522ccddepends onzstd-safe
4.1.1+zstd.1.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc91c90f2c593b003603e5e0493c837088df4469da25aafff8bce42ba48caf079depends onused byzstd-sys
1.6.1+zstd.1.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum615120c7a2431d16cf1cf979e7fc31ba7a5b5e5707b29c8a99e5dbf8a8392a33depends onused by
937 packageslockfile v3
Might be heavy and slow!
addr2line
0.16.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacddepends onused byaddr2line
0.17.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816bdepends 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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47used byaho-corasick
0.7.18crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656fdepends onused byalways-assert
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbf688625d06217d5b1bb0ea9d9c44a1635fd0ee3534466388d18203174f4d11ansi_term
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979bdepends onused byansi_term
0.12.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.44crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1approx
0.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum072df7202e63b127ab55acfe16ce97013d5b97bf160489336d3f1840fd78e99edepends onarrayref
0.3.6crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544arrayvec
0.4.12crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9depends onused byarrayvec
0.5.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068barrayvec
0.7.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6used byasn1_der
0.7.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21used byassert_matches
1.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9used byasync-attributes
1.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5depends onused byasync-channel
1.6.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319async-executor
1.4.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965depends onused byasync-global-executor
2.0.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6depends onused byasync-io
1.6.0crates.io↘ 11↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607bdepends onasync-lock
2.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798bdepends onused byasync-mutex
1.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156edepends onused byasync-process
1.2.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb21b63ab5a0db0369deb913540af2892750e42d949faacc7a61495ac418a1692depends onasync-std
1.10.0crates.io↘ 21↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952depends on- async-attributes
1.1.2 - async-channel
1.6.1 - async-global-executor
2.0.2 - async-io
1.6.0 - async-lock
2.4.0 - async-process
1.2.0 - crossbeam-utils
0.8.5 - futures-channel
0.3.17 - futures-core
0.3.17 - futures-io
0.3.17 - futures-lite
1.12.0 - gloo-timers
0.2.1 - kv-log-macro
1.0.7 - log
0.4.14 - memchr
2.4.1 - num_cpus
1.13.0 - once_cell
1.8.0 - pin-project-lite
0.2.7 - pin-utils
0.1.0 - slab
0.4.5 - wasm-bindgen-futures
0.4.28
- async-attributes
async-std-resolver
0.20.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed4e2c3da14d8ad45acb1e3191db7a918e9505b6f155b218e70a7c9a1a48c638depends onused byasync-task
4.0.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0async-trait
0.1.51crates.io↘ 3↖ 34sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5edepends onused by- async-std-resolver
0.20.3 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - fc-consensus
2.0.0-dev - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - libp2p-request-response
0.12.0 - polkadot-network-bridge
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - 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-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-service
0.10.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.10.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-test-client
2.0.1 - trust-dns-proto
0.20.3
- async-std-resolver
asynchronous-codec
0.5.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6asynchronous-codec
0.6.0crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690atomic
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281depends onused byatomic-waker
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2aused byatty
0.2.14crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onautocfg
1.0.1crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464abacktrace
0.3.63crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6depends onbae
0.1.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec107f431ee3d8a8e45e6dd117adab769556ef463959e77bf6a4888d5fd500cfused bybase-x
0.2.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28bused bybase58
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581used bybase64
0.12.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ffbase64
0.13.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fdbeef
0.5.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736depends onused bybeefy-gadget
4.0.0-devgithub.com/paritytech/substrate.git↘ 21↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- beefy-primitives
4.0.0-dev - fnv
1.0.7 - futures
0.3.17 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sc-client-api
4.0.0-dev - sc-keystore
4.0.0-dev - sc-network
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
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30 - wasm-timer
0.2.5
- beefy-primitives
beefy-gadget-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bybeefy-merkle-tree
4.0.0-devgithub.com/paritytech/substrate.git↘ 0↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bybeefy-primitives
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onbincode
1.3.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcaddepends onbindgen
0.59.1crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum453c49e5950bb0eb63bb3df640e31618846c89d5b7faa54040d76e98e0134375depends onused bybitflags
1.3.2crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718abitvec
0.19.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321depends onused bybitvec
0.20.4crates.io↘ 4↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848depends onused by- bp-messages
0.1.0 - kusama-runtime
0.9.12 - pallet-bridge-messages
0.1.0 - parity-scale-codec
2.3.1 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - scale-info
1.0.0 - westend-runtime
0.9.12
- bp-messages
blake2
0.9.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174used byblake2-rfc
0.2.18crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400depends onblake2b_simd
0.5.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587used byblake2s_simd
0.5.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2used byblake3
0.3.8crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3depends onused byblock-buffer
0.7.3crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bused byblock-buffer
0.9.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused byblock-padding
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2caeused byblocking
1.0.2crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9depends onbounded-vec
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafdd1dffefe5fc66262a524b91087c43b16e478b2e3dc49eb11b0e2fd6b6ec90depends onbp-header-chain
0.1.0github.com/paritytech/polkadot↘ 9↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-message-dispatch
0.1.0github.com/paritytech/polkadot↘ 5↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-messages
0.1.0github.com/paritytech/polkadot↘ 9↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-polkadot-core
0.1.0github.com/paritytech/polkadot↘ 11↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybp-rialto
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybp-rococo
0.1.0github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-runtime
0.1.0github.com/paritytech/polkadot↘ 11↖ 11sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onbp-test-utils
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybp-wococo
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bybridge-runtime-common
0.1.0github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-runtime
0.1.0 - frame-support
4.0.0-dev - hash-db
0.15.2 - pallet-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-transaction-payment
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev
used by- bp-message-dispatch
bs58
0.4.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
0.2.17crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223depends onused bybuild-helper
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5fdepends onbumpalo
3.8.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6cused bybyte-slice-cast
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698used bybyte-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
0.4.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81cdepends onused bybytes
0.5.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38used bybytes
1.1.0crates.io↘ 0↖ 28sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8used by- asynchronous-codec
0.5.0 - asynchronous-codec
0.6.0 - ethereum
0.9.0 - ethereum
0.9.0 - http
0.2.5 - http-body
0.4.4 - hyper
0.14.14 - jsonrpc-server-utils
18.0.0 - libp2p
0.39.1 - libp2p-gossipsub
0.32.0 - libp2p-kad
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-plaintext
0.29.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - multistream-select
0.10.4 - prost
0.8.0 - prost-build
0.8.0 - prost-types
0.8.0 - rlp
0.5.1 - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - soketto
0.6.0 - tokio
1.13.0 - tokio-util
0.6.9 - unsigned-varint
0.6.0 - unsigned-varint
0.7.0
- asynchronous-codec
cache-padded
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dbaused bycamino
1.0.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52d74260d9bf6944e2208aa46841b4b8f0d7ffc0849a06837b2f510337f86b2bdepends onused bycargo_metadata
0.13.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8cargo-platform
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27depends onused bycc
1.0.71crates.io↘ 1↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedddepends oncexpr
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb507a7679252d2276ed0dd8113c6875ec56d3089f9225b2b42c30cc1f8e5c89depends onused bycfg_aliases
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89ecfg-if
0.1.10crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822cfg-if
1.0.0crates.io↘ 0↖ 39sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- aes
0.7.5 - async-process
1.2.0 - backtrace
0.3.63 - chacha20
0.7.1 - cpp_demangle
0.3.3 - crc32fast
1.2.1 - crossbeam-channel
0.5.1 - crossbeam-deque
0.8.1 - crossbeam-epoch
0.9.5 - crossbeam-utils
0.8.5 - directories-next
2.0.0 - flate2
1.0.22 - frame-metadata
14.0.0 - getrandom
0.1.16 - getrandom
0.2.3 - instant
0.1.12 - libloading
0.7.1 - log
0.4.14 - parity-util-mem
0.10.2 - parking_lot_core
0.8.5 - polling
2.1.0 - polyval
0.5.3 - prometheus
0.12.0 - sc-executor-wasmtime
0.10.0-dev - scale-info
1.0.0 - sha-1
0.9.8 - sha2
0.9.8 - socket2
0.3.19 - tempfile
3.2.0 - tracing
0.1.29 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - twox-hash
1.6.1 - wasm-bindgen
0.2.78 - wasm-bindgen-futures
0.4.28 - wasmtime
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0
- aes
chacha20
0.7.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412used bychacha20poly1305
0.8.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5used bychrono
0.4.19crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73cid
0.6.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768used bycipher
0.3.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7depends onckb-merkle-mountain-range
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f061f97d64fd1822664bdfb722f7ae5469a97b77567390f7442be5b5dc82a5bdepends onused byclang-sys
1.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa66045b9cb23c2e9c1520732030608b02ee07e5cfaa5a521ec15ded7fa24c90depends onused byclap
2.33.3crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002depends onused bycloudabi
0.0.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4fdepends onused byconcurrent-queue
1.2.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3depends onconstant_time_eq
0.1.5crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbcconvert_case
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0eused bycore-foundation
0.9.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3depends onused bycore-foundation-sys
0.8.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dccpp_demangle
0.3.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ea47428dc9d2237f3c6bc134472edfd63ebba0af932e783506dcfd66f10d18adepends onused bycpufeatures
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71efdepends onused bycpufeatures
0.2.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469depends oncranelift-bforest
0.77.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum15013642ddda44eebcf61365b2052a23fd8b7314f90ba44aa059ec02643c5139depends onused bycranelift-codegen
0.77.0crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum298f2a7ed5fdcb062d8e78b7496b0f4b95265d20245f2d0ca88f846dd192a3a3depends oncranelift-codegen-meta
0.77.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5cf504261ac62dfaf4ffb3f41d88fd885e81aba947c1241275043885bc5f0bacused bycranelift-entity
0.77.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48868faa07cacf948dc4a1773648813c0e453ff9467e800ff10f6a78c021b546depends oncranelift-frontend
0.77.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum351c9d13b4ecd1a536215ec2fd1c3ee9ee8bc31af172abf1e45ed0adb7a931dfcranelift-native
0.77.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6df8b556663d7611b137b24db7f6c8d9a8a27d7f29c7ea7835795152c94c1b75used bycranelift-wasm
0.77.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a69816d90db694fa79aa39b89dda7208a4ac74b6f2b8f3c4da26ee1c8bdfc5edepends onused bycrc32fast
1.2.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1adepends oncrossbeam-channel
0.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4depends onused bycrossbeam-deque
0.8.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1eused bycrossbeam-epoch
0.9.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fdused bycrossbeam-utils
0.8.5crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4dbdepends oncrunchy
0.2.2crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-mac
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5depends onused bycrypto-mac
0.8.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends oncrypto-mac
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714depends onused byct-logs
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8depends onused byctor
0.1.21crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aadepends onused byctr
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761eadepends onused bycuckoofilter
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb810a8449931679f64cd7eef1bbd0fa315801b6d5d9cdc1ace2804d6529eee18depends onused bycumulus-client-cli
0.1.0github.com/paritytech/cumulus.git↘ 3↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffused bycumulus-client-collator
0.1.0github.com/paritytech/cumulus.git↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.17 - parity-scale-codec
2.3.1 - parking_lot
0.10.2 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
- cumulus-client-consensus-common
cumulus-client-consensus-aura
0.1.0github.com/paritytech/cumulus.git↘ 23↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- async-trait
0.1.51 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.17 - parity-scale-codec
2.3.1 - polkadot-client
0.9.12 - 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
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
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - tracing
0.1.29
used by- async-trait
cumulus-client-consensus-common
0.1.0github.com/paritytech/cumulus.git↘ 13↖ 4sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends oncumulus-client-network
0.1.0github.com/paritytech/cumulus.git↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - parity-scale-codec
2.3.1 - parking_lot
0.10.2 - polkadot-client
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - sc-client-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
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
- derive_more
cumulus-client-pov-recovery
0.1.0github.com/paritytech/cumulus.git↘ 16↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- cumulus-primitives-core
0.1.0 - futures
0.3.17 - futures-timer
3.0.2 - parity-scale-codec
2.3.1 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - rand
0.8.4 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-maybe-compressed-blob
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
used by- cumulus-primitives-core
cumulus-client-service
0.1.0github.com/paritytech/cumulus.git↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- 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 - parity-scale-codec
2.3.1 - parking_lot
0.10.2 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
used by- cumulus-client-collator
cumulus-pallet-aura-ext
0.1.0github.com/paritytech/cumulus.git↘ 11↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-pallet-dmp-queue
0.1.0github.com/paritytech/cumulus.git↘ 11↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-pallet-parachain-system
0.1.0github.com/paritytech/cumulus.git↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- 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.3 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-balances
4.0.0-dev - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - xcm
0.9.12
used by- cumulus-pallet-parachain-system-proc-macro
cumulus-pallet-parachain-system-proc-macro
0.1.0github.com/paritytech/cumulus.git↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffcumulus-pallet-xcm
0.1.0github.com/paritytech/cumulus.git↘ 10↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-pallet-xcmp-queue
0.1.0github.com/paritytech/cumulus.git↘ 11↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-primitives-core
0.1.0github.com/paritytech/cumulus.git↘ 10↖ 15sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
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-test-relay-sproof-builder
0.1.0 - parachain-info
0.1.0 - unique-node
0.9.12 - unique-runtime
0.9.12
- cumulus-client-collator
cumulus-primitives-parachain-inherent
0.1.0github.com/paritytech/cumulus.git↘ 15↖ 2sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends on- async-trait
0.1.51 - cumulus-primitives-core
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - parity-scale-codec
2.3.1 - polkadot-client
0.9.12 - sc-client-api
4.0.0-dev - scale-info
1.0.0 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev - tracing
0.1.29
- async-trait
cumulus-primitives-timestamp
0.1.0github.com/paritytech/cumulus.git↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffused bycumulus-primitives-utility
0.1.0github.com/paritytech/cumulus.git↘ 10↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused bycumulus-test-relay-sproof-builder
0.1.0github.com/paritytech/cumulus.git↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends oncurve25519-dalek
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216used bycurve25519-dalek
3.2.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61darling
0.13.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum757c0ded2af11d8e739c4daea1ac623dd1624b06c844cf3f5a39f1bdbd99bb12depends onused bydarling_core
0.13.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c34d8efb62d0c2d7f60ece80f75e5c63c1588ba68032740494b0b9a996466e3darling_macro
0.13.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumade7bff147130fe5e6d39f089c6bd49ec0250f35d70b2eebf72afdfc919f15ccdepends onused bydata-encoding
2.3.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57data-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 byderivative
2.2.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770bdepends onderive_more
0.99.16crates.io↘ 5↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38dfused by- cumulus-client-network
0.1.0 - fc-consensus
2.0.0-dev - jsonrpc-client-transports
18.0.0 - metered-channel
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - reed-solomon-novelpoly
1.0.0 - sc-authority-discovery
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-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-transaction-pool-api
4.0.0-dev - scale-info
1.0.0 - sp-keystore
0.10.0-dev - substrate-prometheus-endpoint
0.9.0
- cumulus-client-network
digest
0.8.1crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondirectories
3.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume69600ff1703123957937708eb27f7a564e48885c537782722ed0ba3189ce1d7depends onused bydirectories-next
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbcdepends onused bydirs-sys
0.3.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780depends 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-rs
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650used bydyn-clonable
0.9.0crates.io↘ 2↖ 1sourceregistry+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.4crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcfed25519
1.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efcdepends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9deither
1.6.1crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457enum-as-inner
0.3.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595used byenumflags2
0.6.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0depends onused byenumflags2_derive
0.6.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46ccedepends onused byenumn
0.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e58b112d5099aa0857c5d05f0eacab86406dd8c0f85fe5d320a13256d29ecf4depends onused byenv_logger
0.7.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36used byenv_logger
0.9.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3environmental
1.1.3crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797errno
0.2.8crates.io↘ 3↖ 1sourceregistry+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.11.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8depends onused byethereum
0.9.0crates.io↘ 10↖ 0sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a67be3eaf296ef668733f54c637e84d0ca34eaf194f0077455135981ad464c3ethereum
0.9.0github.com/purestake/ethereum↘ 11↖ 11sourcegit+https://github.com/purestake/ethereum?branch=joshy-scale-info#2b98173bd88c05bfeefad421d260101b9008497bdepends onethereum-types
0.12.1crates.io↘ 8↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdafdepends onevent-listener
2.5.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59evm
0.30.0github.com/uniquenetwork/evm.git↘ 12↖ 4sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2depends onevm-coder
0.1.0workspace↘ 7↖ 6evm-coder-macros
0.1.0workspace↘ 7↖ 1evm-core
0.30.0github.com/uniquenetwork/evm.git↘ 5↖ 4sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2evm-gasometer
0.30.0github.com/uniquenetwork/evm.git↘ 4↖ 2sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2used byevm-runtime
0.30.0github.com/uniquenetwork/evm.git↘ 4↖ 3sourcegit+https://github.com/uniquenetwork/evm.git?branch=precompile-output-parachain#bed08923a76339880e05df25a52c5334e9997bb2exit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byfake-simd
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deedused byfallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392edepends onfc-consensus
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 20↖ 3sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- async-trait
0.1.51 - derive_more
0.99.16 - fc-db
2.0.0-dev - fp-consensus
2.0.0-dev - fp-rpc
3.0.0-dev - futures
0.3.17 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-consensus
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-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
fc-db
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 9↖ 5sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfc-mapping-sync
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 11↖ 2sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfc-rpc
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 37↖ 2sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- ethereum
0.9.0 - ethereum-types
0.12.1 - evm
0.30.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.17 - futures-util
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - libsecp256k1
0.3.5 - log
0.4.14 - lru
0.6.6 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.7.3 - rlp
0.5.1 - rustc-hex
2.1.0 - sc-client-api
4.0.0-dev - sc-network
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 - sha3
0.8.2 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-storage
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- ethereum
fc-rpc-core
1.1.0-devgithub.com/uniquenetwork/frontier.git↘ 8↖ 3sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byfile-per-thread-logger
0.1.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126depends onused byfinality-grandpa
0.14.4crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5adepends onfixed-hash
0.7.0crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493cfixedbitset
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04dused byflate2
1.0.22crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53fflexi_logger
0.15.12crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaab3caedb4149800f91e8e4899f29cd9ddf3b569b04c365ca9334f92f7542bfdepends onused byfnv
1.0.7crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
3.0.0github.com/paritytech/substrate.git↘ 1↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onform_urlencoded
1.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191depends onused byfp-consensus
2.0.0-devgithub.com/uniquenetwork/frontier.git↘ 7↖ 4sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-evm
3.0.0-devgithub.com/uniquenetwork/frontier.git↘ 7↖ 7sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-rpc
3.0.0-devgithub.com/uniquenetwork/frontier.git↘ 10↖ 7sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-self-contained
1.0.0-devgithub.com/uniquenetwork/frontier.git↘ 10↖ 2sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends onfp-storage
2.0.0github.com/uniquenetwork/frontier.git↘ 0↖ 3sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560ddframe-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 51sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- frame-benchmarking-cli
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.12 - 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-collective
4.0.0-dev - pallet-contracts
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-coder-substrate
0.1.0 - pallet-evm-migration
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-refungible
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - 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.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm-benchmarks
0.9.8 - polkadot-client
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - unique-node
0.9.12 - unique-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-executor
0.9.12
- frame-benchmarking-cli
frame-benchmarking-cli
4.0.0-devgithub.com/paritytech/substrate.git↘ 19↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- Inflector
0.11.4 - chrono
0.4.19 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - handlebars
3.5.5 - linked-hash-map
0.5.4 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-cli
0.10.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.130 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - structopt
0.3.25
- Inflector
frame-election-provider-support
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 9sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-executive
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-metadata
14.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96616f82e069102b95a72c87de4c84d2f87ef7f0f20630e78ce3824436483110used byframe-support
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 99sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- bitflags
1.3.2 - frame-metadata
14.0.0 - frame-support-procedural
4.0.0-dev - impl-trait-for-tuples
0.2.1 - log
0.4.14 - once_cell
1.8.0 - parity-scale-codec
2.3.1 - paste
1.0.5 - scale-info
1.0.0 - serde
1.0.130 - smallvec
1.7.0 - sp-arithmetic
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-tracing
4.0.0-dev
used by- bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
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-utility
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.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-parachain
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - unique-runtime
0.9.12 - up-data-structs
0.1.0 - up-evm-mapping
0.1.0 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- bitflags
frame-support-procedural
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused byframe-support-procedural-tools
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-support-procedural-tools-derive
3.0.0github.com/paritytech/substrate.git↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-system
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 87sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
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 - frame-benchmarking
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.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - unique-runtime
0.9.12 - up-data-structs
0.1.0 - westend-runtime
0.9.12 - xcm-builder
0.9.12
- bp-messages
frame-system-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-system-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 9sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onframe-try-runtime
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044fs-err
2.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ebd3504ad6116843b8375ad70df74e7bfe83cac77a1f3fe73200c844d43bfe0used byfs-swap
0.2.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03d47dad3685eceed8488986cad3d5027165ea5edb164331770e2059555f10a5used byfs2
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213depends onused byfuchsia-zircon
0.3.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82depends onused byfuchsia-zircon-sys
0.3.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7used byfunty
1.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7futures
0.1.31crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678futures
0.3.17crates.io↘ 7↖ 121sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66cadepends 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 - exit-future
0.2.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.14.4 - if-watch
0.2.2 - intervalier
0.4.0 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - jsonrpc-ws-server
18.0.0 - jsonrpsee-ws-client
0.3.1 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-deflate
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-wasm-ext
0.29.0 - libp2p-websocket
0.30.0 - libp2p-yamux
0.33.0 - metered-channel
0.9.12 - mick-jaeger
0.1.4 - multistream-select
0.10.4 - parity-tokio-ipc
0.9.0 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-cli
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-metrics
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12 - rw-stream-sink
0.2.1 - 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-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-gossip
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-service
0.10.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.4.2 - soketto
0.6.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - 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.12 - unique-rpc
0.1.0 - wasm-timer
0.2.5 - yamux
0.9.0
- beefy-gadget
futures-channel
0.3.17crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888depends onfutures-core
0.3.17crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53dfutures-executor
0.3.17crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745cfutures-io
0.3.17crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377futures-lite
1.12.0crates.io↘ 7↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48depends onfutures-macro
0.3.17crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bbused byfutures-rustls
0.21.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8bdepends onused byfutures-sink
0.3.17crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11futures-task
0.3.17crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99futures-timer
2.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6used byfutures-timer
3.0.2crates.io↘ 0↖ 32sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cused by- cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.14.4 - libp2p-core
0.29.0 - libp2p-relay
0.3.0 - libp2p-tcp
0.29.0 - metered-channel
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-metrics
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - 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-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-utils
4.0.0-dev - sp-consensus
0.10.0-dev - sp-timestamp
4.0.0-dev
- cumulus-client-network
futures-util
0.3.17crates.io↘ 14↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481depends onused by- async-std-resolver
0.20.3 - asynchronous-codec
0.5.0 - asynchronous-codec
0.6.0 - fc-rpc
2.0.0-dev - futures
0.3.17 - futures-executor
0.3.17 - hyper
0.14.14 - hyper-rustls
0.22.1 - jsonrpc-core
18.0.0 - jsonrpsee-types
0.3.1 - substrate-prometheus-endpoint
0.9.0 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - unsigned-varint
0.6.0 - unsigned-varint
0.7.0
- async-std-resolver
generic-array
0.12.4crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bddepends ongeneric-array
0.14.4crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817depends ongetrandom
0.1.16crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.3crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753ghash
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99depends onused bygimli
0.25.0crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7gimli
0.26.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4used byglob
0.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.8crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbdused bygloo-timers
0.2.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891fused byhandlebars
3.5.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4498fc115fa7d34de968184e473529abb40eeb6be8bc5f7faba3d08c316cb3e3hash-db
0.15.2crates.io↘ 0↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364aused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - ethereum
0.9.0 - ethereum
0.9.0 - memory-db
0.27.0 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-light
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-trie
4.0.0-dev - trie-db
0.22.6 - trie-root
0.16.0 - triehash
0.8.4
- bp-runtime
hash256-std-hasher
0.15.2crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2depends onhashbrown
0.11.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726edepends onheck
0.3.3crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132cdepends onhermit-abi
0.1.19crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhex
0.4.3crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70hex_fmt
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336fused byhex-literal
0.3.3crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21e4590e13640f19f249fe3e4eca5113bc4289f2497710378190e7f4bd96f45bhmac
0.7.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695depends onused byhmac
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-drbg
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7bdepends onused byhmac-drbg
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1depends onhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhttp
0.2.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186bdepends onused byhttp-body
0.4.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6depends onused byhttparse
1.5.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumacd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503httpdate
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440used byhumantime
1.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4fdepends onused byhumantime
2.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4used byhyper
0.14.14crates.io↘ 15↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2b91bb1f221b6ea1f1e4371216b70f40748774c2fb5971b450c07773fb92d26bdepends onhyper-rustls
0.22.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64depends onused byident_case
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39used byidna
0.1.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844eused byidna
0.2.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8if-addrs
0.6.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9a83ec4af652890ac713ffd8dc859e650420a5ef47f7b9be29b6664ab50fbc8depends onused byif-addrs-sys
0.3.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79eadepends onused byif-watch
0.2.2crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179depends onimpl-codec
0.5.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443depends onimpl-rlp
0.3.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808depends onimpl-serde
0.3.1crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6fdepends onimpl-trait-for-tuples
0.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9ddepends onused byimpl-trait-for-tuples
0.2.1crates.io↘ 3↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031eedepends onused by- bp-messages
0.1.0 - cumulus-primitives-core
0.1.0 - evm-coder
0.1.0 - frame-support
4.0.0-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-util-mem
0.10.2 - polkadot-runtime-common
0.9.12 - sc-chain-spec
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-runtime-interface
4.0.0-dev - sp-wasm-interface
4.0.0-dev - up-sponsorship
0.1.0 - xcm
0.9.12 - xcm-executor
0.9.12
- bp-messages
indexmap
1.7.0crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5depends onInflector
0.11.4crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.12crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends oninteger-encoding
1.1.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48dc51180a9b377fd75814d0cc02199c20f8e99433d6762f650d39cdbbd3b56fused byinteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byintervalier
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275depends onused byiovec
0.1.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075edepends onused byip_network
0.4.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09b746553d2f4a1ca26fab939943ddfb217a091f34f53571620a8e3d30691303ipconfig
0.2.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7used byipnet
2.3.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9itertools
0.10.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eafdepends onitoa
0.4.8crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4jobserver
0.1.24crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fadepends onused byjs-sys
0.3.55crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84depends onjsonrpc-client-transports
18.0.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3adepends onused byjsonrpc-core
18.0.0crates.io↘ 7↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965ebdepends onused by- beefy-gadget-rpc
4.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - jsonrpc-client-transports
18.0.0 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - jsonrpc-ws-server
18.0.0 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-rpc
0.9.12 - sc-consensus-babe-rpc
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-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.0 - unique-node
0.9.12 - unique-rpc
0.1.0
- beefy-gadget-rpc
jsonrpc-core-client
18.0.0crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0jsonrpc-derive
18.0.0crates.io↘ 4↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2jsonrpc-http-server
18.0.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ffdepends onused byjsonrpc-ipc-server
18.0.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845depends onused byjsonrpc-pubsub
18.0.0crates.io↘ 7↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011depends onjsonrpc-server-utils
18.0.0crates.io↘ 10↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4depends onjsonrpc-ws-server
18.0.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946depends onused byjsonrpsee-proc-macros
0.3.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8edb341d35279b59c79d7fe9e060a51aec29d45af99cc7c72ea7caa350fa71a4jsonrpsee-types
0.3.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4cc738fd55b676ada3271ef7c383a14a0867a2a88b0fa941311bf5fc0a29d498depends onused byjsonrpsee-ws-client
0.3.1crates.io↘ 16↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9841352dbecf4c2ed5dc71698df9f1660262ae4e0b610e968602529bdbcf7b30depends onkeccak
0.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7kernel32-sys
0.2.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098ddepends onkusama-runtime
0.9.12github.com/paritytech/polkadot↘ 79↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.3 - log
0.4.14 - 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-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-gilt
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-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
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-fn
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.12 - parity-scale-codec
2.3.1 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
kv-log-macro
1.0.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977fdepends onused bykvdb
0.10.0crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45a3f58dc069ec0e205a27f5b45920722a46faed802a0541538241af6228f512depends onkvdb-memorydb
0.10.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5used bykvdb-rocksdb
0.14.0crates.io↘ 10↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b1b6ea8f2536f504b645ad78419c8246550e19d2c3419a167080ce08edee35adepends onlazy_static
1.4.0crates.io↘ 0↖ 33sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.59.1 - crossbeam-epoch
0.9.5 - crossbeam-utils
0.8.5 - flexi_logger
0.15.12 - fs-swap
0.2.6 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-mdns
0.31.0 - libp2p-noise
0.32.0 - polkadot-node-jaeger
0.9.12 - prometheus
0.12.0 - rayon-core
1.9.1 - sc-executor
0.10.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - schannel
0.1.19 - sharded-slab
0.1.4 - sp-core
4.0.0-dev - sp-keyring
4.0.0-dev - statrs
0.15.0 - structopt
0.3.25 - tracing-core
0.1.21 - tracing-log
0.1.2 - tracing-subscriber
0.2.25 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - wasm-bindgen-backend
0.2.78 - wasmtime
0.30.0 - wasmtime-runtime
0.30.0 - which
4.2.2
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used bylibc
0.2.106crates.io↘ 0↖ 68sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma60553f9a9e039a333b4e9b20573b9e9b9c0bb3a11e201ccc48ef4283456d673used by- async-io
1.6.0 - async-process
1.2.0 - atty
0.2.14 - backtrace
0.3.63 - chrono
0.4.19 - clang-sys
1.3.0 - core-foundation
0.9.2 - cpufeatures
0.1.5 - cpufeatures
0.2.1 - cranelift-native
0.77.0 - dirs-sys
0.3.6 - dirs-sys-next
0.1.2 - errno
0.2.8 - errno-dragonfly
0.1.2 - fdlimit
0.2.1 - flate2
1.0.22 - fs-swap
0.2.6 - fs2
0.4.3 - getrandom
0.1.16 - getrandom
0.2.3 - hermit-abi
0.1.19 - hostname
0.3.1 - if-addrs
0.6.6 - if-addrs-sys
0.3.2 - if-watch
0.2.2 - iovec
0.1.4 - jobserver
0.1.24 - libp2p-tcp
0.29.0 - librocksdb-sys
6.20.3 - lz4
1.23.2 - lz4-sys
1.9.2 - mach
0.3.2 - memmap2
0.2.3 - mio
0.6.23 - mio
0.7.14 - net2
0.2.37 - num_cpus
1.13.0 - parity-db
0.3.3 - parity-tokio-ipc
0.9.0 - parking_lot_core
0.7.2 - parking_lot_core
0.8.5 - polkadot-node-core-pvf
0.9.12 - polling
2.1.0 - rand
0.7.3 - rand
0.8.4 - region
2.2.0 - ring
0.16.20 - rocksdb
0.17.0 - rpassword
5.0.1 - sc-executor-wasmtime
0.10.0-dev - security-framework
2.4.2 - security-framework-sys
2.4.2 - signal-hook
0.3.10 - signal-hook-registry
1.4.0 - socket2
0.3.19 - socket2
0.4.2 - static_init
0.5.2 - tempfile
3.2.0 - time
0.1.44 - tokio
1.13.0 - wasmi
0.9.1 - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - which
4.2.2 - zstd-safe
4.1.1+zstd.1.5.0 - zstd-sys
1.6.1+zstd.1.5.0
- async-io
libloading
0.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753depends onused bylibloading
0.7.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0cf036d15402bea3c5d4de17b3fce76b3e4a56ebc1f577be0e7a72f7c607cf0depends onused bylibm
0.2.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702aused bylibp2p
0.39.1crates.io↘ 31↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9004c06878ef8f3b4b4067e69a140d87ed20bf777287f82223e49713b36ee433depends on- atomic
0.5.0 - bytes
1.1.0 - futures
0.3.17 - lazy_static
1.4.0 - libp2p-core
0.29.0 - libp2p-deflate
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-swarm-derive
0.24.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-wasm-ext
0.29.0 - libp2p-websocket
0.30.0 - libp2p-yamux
0.33.0 - multiaddr
0.13.0 - parking_lot
0.11.2 - pin-project
1.0.8 - smallvec
1.7.0 - wasm-timer
0.2.5
- atomic
libp2p-core
0.29.0crates.io↘ 26↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf9b4abdeaa420593a297c8592f63fad4234f4b88dc9343b8fd8e736c35faa59depends on- asn1_der
0.7.5 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.6.1 - fnv
1.0.7 - futures
0.3.17 - futures-timer
3.0.2 - lazy_static
1.4.0 - libsecp256k1
0.5.0 - log
0.4.14 - multiaddr
0.13.0 - multihash
0.14.0 - multistream-select
0.10.4 - parking_lot
0.11.2 - pin-project
1.0.8 - prost
0.8.0 - prost-build
0.8.0 - rand
0.7.3 - ring
0.16.20 - rw-stream-sink
0.2.1 - sha2
0.9.8 - smallvec
1.7.0 - thiserror
1.0.30 - unsigned-varint
0.7.0 - void
1.0.2 - zeroize
1.4.2
used by- libp2p
0.39.1 - libp2p-deflate
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-wasm-ext
0.29.0 - libp2p-websocket
0.30.0 - libp2p-yamux
0.33.0
- asn1_der
libp2p-deflate
0.29.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66097fccc0b7f8579f90a03ea76ba6196332ea049fd07fd969490a06819dcdc8used bylibp2p-dns
0.29.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58ff08b3196b85a17f202d80589e93b1660a574af67275706657fdc762e42c32depends onused bylibp2p-floodsub
0.30.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum404eca8720967179dac7a5b4275eb91f904a53859c69ca8d018560ad6beb214fdepends onused bylibp2p-gossipsub
0.32.0crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1cc48709bcbc3a3321f08a73560b4bbb4166a7d56f6fdb615bc775f4f91058edepends onused bylibp2p-identify
0.30.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7b61f6cf07664fb97016c318c4d4512b3dd4cc07238607f3f0163245f99008edepends onused bylibp2p-kad
0.31.0crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50ed78489c87924235665a0ab345b298ee34dff0f7ad62c0ba6608b2144fb75edepends onused bylibp2p-mdns
0.31.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma29e6cbc2a24b8471b6567e580a0e8e7b70a6d0f0ea2be0844d1e842d7d4fa33depends onused bylibp2p-mplex
0.29.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum313d9ea526c68df4425f580024e67a9d3ffd49f2c33de5154b1f5019816f7a99depends onused bylibp2p-noise
0.32.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f1db7212f342b6ba7c981cc40e31f76e9e56cb48e65fa4c142ecaca5839523edepends onused bylibp2p-ping
0.30.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2482cfd9eb0b7a0baaf3e7b329dc4f2785181a161b1a47b7192f8d758f54a439depends onused bylibp2p-plaintext
0.29.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum13b4783e5423870b9a5c199f65a7a3bc66d86ab56b2b9beebf3c338d889cf8e4depends onused bylibp2p-pnet
0.21.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07cb4dd4b917e5b40ddefe49b96b07adcd8d342e0317011d175b7b2bb1dcc974used bylibp2p-relay
0.3.0crates.io↘ 15↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0133f6cfd81cdc16e716de2982e012c62e6b9d4f12e41967b3ee361051c622aadepends onused bylibp2p-request-response
0.12.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06cdae44b6821466123af93cbcdec7c9e6ba9534a8af9cdc296446d39416d241depends onused bylibp2p-swarm
0.30.0crates.io↘ 8↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7083861341e1555467863b4cd802bea1e8c4787c0f7b5110097d0f1f3248f9a9depends onlibp2p-swarm-derive
0.24.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab8cb308d4fc854869f5abb54fdab0833d2cf670d407c745849dc47e6e08d79cdepends onused bylibp2p-tcp
0.29.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79edd26b6b4bb5feee210dcda562dca186940dfecb0024b979c3f50824b3bf28depends onused bylibp2p-uds
0.29.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum280e793440dd4e9f273d714f4497325c72cddb0fe85a49f9a03c88f41dd20182used bylibp2p-wasm-ext
0.29.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf553b7140fad3d7a76f50497b0ea591e26737d9607428a75509fc191e4d1b1f6depends onused bylibp2p-websocket
0.30.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddf99dcbf5063e9d59087f61b1e85c686ceab2f5abedb472d32288065c0e5e27depends onused bylibp2p-yamux
0.33.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum214cc0dd9c37cbed27f0bb1eba0c41bbafdb93a8be5e9d6ae1e6b4b42cd044bfused bylibrocksdb-sys
6.20.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc309a9d2470844aceb9a4a098cf5286154d20596868b75a6b36357d2bb9ca25dused bylibsecp256k1
0.3.5crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962depends onused bylibsecp256k1
0.5.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7depends onused bylibsecp256k1
0.6.0crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73depends onlibsecp256k1
0.7.0crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37depends onlibsecp256k1-core
0.2.2crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80depends onlibsecp256k1-core
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451depends onlibsecp256k1-gen-ecmult
0.2.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3depends onlibsecp256k1-gen-ecmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809depends onused bylibsecp256k1-gen-genmult
0.2.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5ddepends onlibsecp256k1-gen-genmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7cdepends onused bylibz-sys
1.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66depends onused bylinked_hash_set
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onused bylinked-hash-map
0.5.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3linregress
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8depends onused bylock_api
0.3.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75depends onused bylock_api
0.4.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109depends onused bylog
0.4.14crates.io↘ 2↖ 173sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710depends onused by- async-io
1.6.0 - async-std
1.10.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cranelift-codegen
0.77.0 - cranelift-frontend
0.77.0 - cranelift-wasm
0.77.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - env_logger
0.7.1 - env_logger
0.9.0 - evm
0.30.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - file-per-thread-logger
0.1.4 - finality-grandpa
0.14.4 - flexi_logger
0.15.12 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - globset
0.4.8 - handlebars
3.5.5 - hyper-rustls
0.22.1 - if-watch
0.2.2 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-server-utils
18.0.0 - jsonrpc-ws-server
18.0.0 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - kusama-runtime
0.9.12 - kv-log-macro
1.0.7 - kvdb-rocksdb
0.14.0 - libp2p-core
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-noise
0.32.0 - libp2p-ping
0.30.0 - libp2p-plaintext
0.29.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libp2p-tcp
0.29.0 - libp2p-uds
0.29.0 - libp2p-websocket
0.30.0 - mio
0.6.23 - mio
0.7.14 - mio-extras
2.0.6 - multistream-select
0.10.4 - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-contracts
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.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-offences
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-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-unq-scheduler
0.1.0 - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parity-db
0.3.3 - parity-tokio-ipc
0.9.0 - parity-ws
0.11.1 - polkadot-cli
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - polling
2.1.0 - prost-build
0.8.0 - pwasm-utils
0.18.2 - regalloc
0.0.31 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - rustls
0.19.1 - sc-allocator
4.0.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-slots
0.10.0-dev - sc-executor
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-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-proposer-metrics
0.9.0 - 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-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 - soketto
0.4.2 - soketto
0.6.0 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-state-machine
0.10.0-dev - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thrift
0.13.0 - tokio-util
0.6.9 - tracing-log
0.1.2 - trie-db
0.22.6 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - try-runtime-cli
0.10.0-dev - unique-node
0.9.12 - want
0.3.0 - wasm-bindgen-backend
0.2.78 - wasm-gc-api
0.1.11 - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - westend-runtime
0.9.12 - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12 - yamux
0.9.0
- async-io
lru
0.6.6crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91depends onlru
0.7.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c748cfe47cb8da225c37595b3108bea1c198c84aaae8ea0ba76d01dda9fc803depends onlru-cache
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1cdepends onused bylz4
1.23.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaac20ed6991e01bf6a2e68cc73df2b389707403662a8ba89f68511fb340f724cdepends onused bylz4-sys
1.9.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdca79aa95d8b3226213ad454d328369853be3a1382d89532a854f4d69640acaedepends onused bymach
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onmaplit
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651dused 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.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a8a15b776d9dfaecd44b03c5828c2199cddff5247215858aac14624f8d6b741depends onused bymemchr
2.4.1crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86amemmap2
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4depends onused bymemoffset
0.6.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9depends onmemory_units
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882used bymemory-db
0.27.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde006e09d04fc301a5f7e817b75aa49801c4479a8af753764416b085337ddcc5used bymemory-lru
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbeeb98b3d1ed2c0054bd81b5ba949a0243c3ccad751d45ea898fa8059fa2860adepends onmerlin
2.0.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42metered-channel
0.9.12github.com/paritytech/polkadot↘ 5↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003emick-jaeger
0.1.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc023c3f16109e7f33aa451f773fd61070e265b4977d0b6e344a51049296dd7dfdepends onused byminicbor
0.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51aa5bb0ca22415daca596a227b507f880ad1b2318a87fa9325312a5d285ca0ddepends onminicbor-derive
0.6.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54999f917cd092b13904737e26631aa2b2b88d625db68e4bab461dcd8006c788depends onused byminiz_oxide
0.4.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4bdepends onused bymio
0.6.23crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4depends onmio
0.7.14crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205ccused bymio-extras
2.0.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19depends onused bymiow
0.2.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944dused bymiow
0.3.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21depends onused bymore-asserts
0.2.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238multiaddr
0.13.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499depends onmultibase
0.8.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb78c60039650ff12e140ae867ef5299a58e19dded4d334c849dc7177083667e2used bymultihash
0.13.2crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cabdepends onused bymultihash
0.14.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8multihash-derive
0.7.2crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99depends onmultimap
0.8.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6aused bymultistream-select
0.10.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0abused 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.12.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775depends onused bynet2
0.2.37crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568aedepends onnodrop
0.1.14crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bbused bynohash-hasher
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451used bynom
6.1.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2used byntapi
0.3.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44depends onused bynum_cpus
1.13.0crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3depends onnum-bigint
0.2.6crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304num-complex
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085depends onused bynum-integer
0.1.44crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801dbdepends onnum-rational
0.2.4crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aefnum-rational
0.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6aused bynum-traits
0.2.14crates.io↘ 2↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290depends onused by- approx
0.5.0 - bp-runtime
0.1.0 - chrono
0.4.19 - finality-grandpa
0.14.4 - integer-sqrt
0.1.5 - nalgebra
0.27.1 - num-bigint
0.2.6 - num-complex
0.4.0 - num-integer
0.1.44 - num-rational
0.2.4 - num-rational
0.4.0 - ordered-float
1.1.1 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - rand_distr
0.4.2 - sc-consensus-babe
0.10.0-dev - simba
0.5.1 - sp-arithmetic
4.0.0-dev - sp-core
4.0.0-dev - sp-state-machine
0.10.0-dev - statrs
0.15.0 - wasmi
0.9.1
- approx
object
0.26.2crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2depends onobject
0.27.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9depends onused byonce_cell
1.8.0crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56opaque-debug
0.2.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529cused byopaque-debug
0.3.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssl-probe
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95aused byordered-float
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7depends onused byorml-vesting
0.4.1-devgithub.com/UniqueNetwork/open-runtime-module-library↘ 8↖ 1sourcegit+https://github.com/UniqueNetwork/open-runtime-module-library#d69f226e332ae29b7b33d53d2f06f309d2986ea0depends onused byowning_ref
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52cedepends onused bypallet-aura
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-authority-discovery
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-authorship
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-babe
4.0.0-devgithub.com/paritytech/substrate.git↘ 17↖ 8sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - sp-application-crypto
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
- frame-benchmarking
pallet-bags-list
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-balances
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 19sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- cumulus-pallet-parachain-system
0.1.0 - kusama-runtime
0.9.12 - pallet-bags-list
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
0.1.0 - 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 - pallet-unique
0.1.0 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - unique-runtime
0.9.12 - westend-runtime
0.9.12
- cumulus-pallet-parachain-system
pallet-beefy
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-beefy-mmr
4.0.0-devgithub.com/paritytech/substrate.git↘ 18↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- beefy-merkle-tree
4.0.0-dev - beefy-primitives
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex
0.4.3 - libsecp256k1
0.7.0 - log
0.4.14 - pallet-beefy
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - serde
1.0.130 - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev
- beefy-merkle-tree
pallet-bounties
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-bridge-dispatch
0.1.0github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-bridge-grandpa
0.1.0github.com/paritytech/polkadot↘ 15↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-bridge-messages
0.1.0github.com/paritytech/polkadot↘ 15↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-collective
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-common
0.1.0workspace↘ 13↖ 7depends onpallet-contract-helpers
0.1.0workspace↘ 8↖ 0pallet-contracts
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- bitflags
1.3.2 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - libsecp256k1
0.6.0 - log
0.4.14 - pallet-contracts-primitives
4.0.0-dev - pallet-contracts-proc-macro
4.0.0-dev - parity-scale-codec
2.3.1 - pwasm-utils
0.18.2 - rand
0.7.3 - scale-info
1.0.0 - serde
1.0.130 - smallvec
1.7.0 - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-std
4.0.0-dev - wasmi-validation
0.4.1
used by- bitflags
pallet-contracts-primitives
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-contracts-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-democracy
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-election-provider-multi-phase
4.0.0-devgithub.com/paritytech/substrate.git↘ 17↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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.14 - parity-scale-codec
2.3.1 - rand
0.7.3 - scale-info
1.0.0 - sp-arithmetic
4.0.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev - static_assertions
1.1.0 - strum
0.21.0 - strum_macros
0.21.1
- frame-benchmarking
pallet-elections-phragmen
5.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-ethereum
4.0.0-devgithub.com/uniquenetwork/frontier.git↘ 22↖ 8sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- ethereum
0.9.0 - ethereum-types
0.12.1 - evm
0.30.0 - fp-consensus
2.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-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
2.3.1 - rlp
0.5.1 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - sha3
0.8.2 - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev
- ethereum
pallet-evm
6.0.0-devgithub.com/uniquenetwork/frontier.git↘ 22↖ 9sourcegit+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.12-weights#00c84135f220baf33e7baa558b4e5857cdf560dddepends on- evm
0.30.0 - evm-gasometer
0.30.0 - evm-runtime
0.30.0 - fp-evm
3.0.0-dev - 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.1 - log
0.4.14 - pallet-balances
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
2.3.1 - primitive-types
0.9.1 - rlp
0.5.1 - scale-info
1.0.0 - serde
1.0.130 - sha3
0.8.2 - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev
- evm
pallet-evm-coder-substrate
0.1.0workspace↘ 11↖ 6depends onpallet-evm-contract-helpers
0.1.0workspace↘ 12↖ 1pallet-evm-migration
0.1.0workspace↘ 11↖ 1pallet-evm-transaction-payment
0.1.0workspace↘ 13↖ 1pallet-fungible
0.1.0workspace↘ 13↖ 2depends onpallet-gilt
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-grandpa
4.0.0-devgithub.com/paritytech/substrate.git↘ 16↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
2.3.1 - scale-info
1.0.0 - sp-application-crypto
4.0.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
- frame-benchmarking
pallet-identity
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-im-online
4.0.0-devgithub.com/paritytech/substrate.git↘ 13↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-indices
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-inflation
0.1.0workspace↘ 13↖ 1depends onused bypallet-membership
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-mmr
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-mmr-primitives
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-mmr-rpc
3.0.0github.com/paritytech/substrate.git↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-multisig
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-nicks
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-nonfungible
0.1.0workspace↘ 13↖ 2depends onpallet-offences
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-offences-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 16↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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
2.3.1 - scale-info
1.0.0 - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
- frame-benchmarking
pallet-proxy
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-randomness-collective-flip
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-recovery
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-scheduler
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-session
4.0.0-devgithub.com/paritytech/substrate.git↘ 14↖ 15sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - 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-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.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - westend-runtime
0.9.12
- kusama-runtime
pallet-session-benchmarking
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-society
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-staking
4.0.0-devgithub.com/paritytech/substrate.git↘ 16↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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.14 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
2.3.1 - rand_chacha
0.2.2 - scale-info
1.0.0 - serde
1.0.130 - sp-application-crypto
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev
used by- frame-benchmarking
pallet-staking-reward-curve
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044pallet-staking-reward-fn
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bypallet-sudo
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-template-transaction-payment
3.0.0github.com/UniqueNetwork/pallet-sponsoring↘ 13↖ 1sourcegit+https://github.com/UniqueNetwork/pallet-sponsoring#ab8b91e9350a31133f3a3e4f52a84c6de4108e95depends onused bypallet-timestamp
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 15sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - pallet-aura
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
0.1.0 - pallet-session
4.0.0-dev - pallet-unique
0.1.0 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - unique-runtime
0.9.12 - westend-runtime
0.9.12
- kusama-runtime
pallet-tips
4.0.0-devgithub.com/paritytech/substrate.git↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-transaction-payment
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 13sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bridge-runtime-common
0.1.0 - kusama-runtime
0.9.12 - pallet-template-transaction-payment
3.0.0 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-unique
0.1.0 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - unique-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12
- bridge-runtime-common
pallet-transaction-payment-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-transaction-payment-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-treasury
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-unique
0.1.0workspace↘ 31↖ 2depends on- ethereum
0.9.0 - evm-coder
0.1.0 - fp-evm
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex-literal
0.3.3 - pallet-balances
4.0.0-dev - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-fungible
0.1.0 - pallet-nonfungible
0.1.0 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - parity-scale-codec
2.3.1 - primitive-types
0.10.1 - rlp
0.5.1 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev - up-data-structs
0.1.0 - up-evm-mapping
0.1.0 - up-sponsorship
0.1.0
- ethereum
pallet-unq-scheduler
0.1.0workspace↘ 13↖ 1pallet-utility
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-vesting
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onpallet-xcm
0.9.12github.com/paritytech/polkadot↘ 11↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpallet-xcm-benchmarks
0.9.8github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused byparachain-info
0.1.0github.com/paritytech/cumulus.git↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus.git?branch=polkadot-v0.9.12#f5926c2f50df73bf36171b138241437131d76fffdepends onused byparity-db
0.3.3crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7ccc4a8687027deb53d45c5434a1f1b330c9d1069a59cfe80a62aa9a1da25aedepends onused byparity-scale-codec
2.3.1crates.io↘ 6↖ 217sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
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-test-relay-sproof-builder
0.1.0 - ethereum
0.9.0 - ethereum
0.9.0 - evm
0.30.0 - evm-core
0.30.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.14.4 - fork-tree
3.0.0 - fp-consensus
2.0.0-dev - fp-evm
3.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-metadata
14.0.0 - 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 - impl-codec
0.5.1 - kusama-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-core-primitives
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-statement-table
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-executor-common
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-light
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-sync-state-rpc
0.10.0-dev - sc-transaction-pool
4.0.0-dev - scale-info
1.0.0 - slot-range-helper
0.9.12 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-runtime-interface
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - sp-wasm-interface
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - unique-node
0.9.12 - unique-runtime
0.9.12 - up-data-structs
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-gadget
parity-scale-codec-derive
2.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27used byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-tokio-ipc
0.9.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6used byparity-util-mem
0.10.2crates.io↘ 10↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770depends onused by- fp-self-contained
1.0.0-dev - kvdb
0.10.0 - kvdb-memorydb
0.10.0 - kvdb-rocksdb
0.14.0 - memory-db
0.27.0 - polkadot-core-primitives
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-overseer
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - sc-informant
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev
- fp-self-contained
parity-util-mem-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2parity-wasm
0.32.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512acdepends onused byparity-wasm
0.42.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92parity-ws
0.11.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5983d3929ad50f12c3eb9a6743f19d691866ecd44da74c0a3308c3f8a56df0c6depends onused byparking
2.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72parking_lot
0.10.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505edepends onparking_lot
0.11.2crates.io↘ 3↖ 48sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99used by- beefy-gadget
4.0.0-dev - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.14.4 - jsonrpc-http-server
18.0.0 - jsonrpc-ipc-server
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpc-ws-server
18.0.0 - kvdb-memorydb
0.10.0 - kvdb-rocksdb
0.14.0 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-mplex
0.29.0 - libp2p-yamux
0.33.0 - parity-db
0.3.3 - parity-util-mem
0.10.2 - polkadot-network-bridge
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-overseer
0.9.12 - prometheus
0.12.0 - 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-light
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 - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-database
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-state-machine
0.10.0-dev - static_init
0.5.2 - trust-dns-resolver
0.20.3 - unique-node
0.9.12 - wasm-timer
0.2.5 - yamux
0.9.0
- beefy-gadget
parking_lot_core
0.7.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3used byparking_lot_core
0.8.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216used bypaste
1.0.5crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumacbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58pbkdf2
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
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831used bypercent-encoding
2.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32epest
2.1.3crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53depends onpest_derive
2.1.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0depends onused bypest_generator
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55used bypest_meta
2.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11ddepends onused bypetgraph
0.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7depends onused bypin-project
0.4.28crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum918192b5c59119d51e0cd221f4d49dde9112824ba717369e903c97d076083d0fdepends onused bypin-project
1.0.8crates.io↘ 1↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08depends onpin-project-internal
0.4.28crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3be26700300be6d9d23264c73211d8190e755b6b5ca7a1b28230025511b52a5edepends onused bypin-project-internal
1.0.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389depends onused bypin-project-lite
0.1.12crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777used bypin-project-lite
0.2.7crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443pin-utils
0.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkg-config
0.3.22crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1fused byplatforms
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325polkadot-approval-distribution
0.9.12github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-availability-bitfield-distribution
0.9.12github.com/paritytech/polkadot↘ 6↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-availability-distribution
0.9.12github.com/paritytech/polkadot↘ 15↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- derive_more
0.99.16 - futures
0.3.17 - lru
0.7.0 - parity-scale-codec
2.3.1 - polkadot-erasure-coding
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - rand
0.8.4 - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- derive_more
polkadot-availability-recovery
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-cli
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-client
0.9.12github.com/paritytech/polkadot↘ 23↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - frame-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - 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-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-finality-grandpa
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-storage
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- beefy-primitives
polkadot-collator-protocol
0.9.12github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- always-assert
0.1.2 - derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- always-assert
polkadot-core-primitives
0.9.12github.com/paritytech/polkadot↘ 6↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-dispute-distribution
0.9.12github.com/paritytech/polkadot↘ 15↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- derive_more
0.99.16 - futures
0.3.17 - lru
0.7.0 - parity-scale-codec
2.3.1 - polkadot-erasure-coding
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - sc-network
0.10.0-dev - sp-application-crypto
4.0.0-dev - sp-keystore
0.10.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- derive_more
polkadot-erasure-coding
0.9.12github.com/paritytech/polkadot↘ 7↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-gossip-support
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-network-bridge
0.9.12github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-collation-generation
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-approval-voting
0.9.12github.com/paritytech/polkadot↘ 21↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bitvec
0.20.4 - derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - kvdb
0.10.0 - lru
0.7.0 - merlin
2.0.1 - parity-scale-codec
2.3.1 - polkadot-node-jaeger
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - sc-keystore
4.0.0-dev - schnorrkel
0.9.1 - sp-application-crypto
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-runtime
4.0.0-dev - tracing
0.1.29
used by- bitvec
polkadot-node-core-av-store
0.9.12github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-backing
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-bitfield-signing
0.9.12github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-candidate-validation
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-chain-api
0.9.12github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-chain-selection
0.9.12github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-dispute-coordinator
0.9.12github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-dispute-participation
0.9.12github.com/paritytech/polkadot↘ 6↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-parachains-inherent
0.9.12github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-provisioner
0.9.12github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-core-pvf
0.9.12github.com/paritytech/polkadot↘ 24↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- always-assert
0.1.2 - assert_matches
1.5.0 - async-process
1.2.0 - async-std
1.10.0 - futures
0.3.17 - futures-timer
3.0.2 - libc
0.2.106 - parity-scale-codec
2.3.1 - pin-project
1.0.8 - polkadot-core-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - rand
0.8.4 - 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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-io
4.0.0-dev - sp-maybe-compressed-blob
4.0.0-dev - sp-tracing
4.0.0-dev - sp-wasm-interface
4.0.0-dev - tracing
0.1.29
- always-assert
polkadot-node-core-runtime-api
0.9.12github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused bypolkadot-node-jaeger
0.9.12github.com/paritytech/polkadot↘ 11↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-node-metrics
0.9.12github.com/paritytech/polkadot↘ 4↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003epolkadot-node-network-protocol
0.9.12github.com/paritytech/polkadot↘ 11↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused by- polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12
- polkadot-approval-distribution
polkadot-node-primitives
0.9.12github.com/paritytech/polkadot↘ 15↖ 25sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bounded-vec
0.4.0 - futures
0.3.17 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - schnorrkel
0.9.1 - serde
1.0.130 - sp-application-crypto
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-maybe-compressed-blob
4.0.0-dev - thiserror
1.0.30 - zstd
0.9.0+zstd.1.5.0
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.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12
- bounded-vec
polkadot-node-subsystem
0.9.12github.com/paritytech/polkadot↘ 3↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003eused by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12
- cumulus-client-collator
polkadot-node-subsystem-types
0.9.12github.com/paritytech/polkadot↘ 12↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-node-subsystem-util
0.9.12github.com/paritytech/polkadot↘ 20↖ 22sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- async-trait
0.1.51 - derive_more
0.99.16 - futures
0.3.17 - itertools
0.10.1 - lru
0.7.0 - metered-channel
0.9.12 - parity-scale-codec
2.3.1 - pin-project
1.0.8 - polkadot-node-jaeger
0.9.12 - polkadot-node-metrics
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - rand
0.8.4 - sp-application-crypto
4.0.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12
- async-trait
polkadot-overseer
0.9.12github.com/paritytech/polkadot↘ 14↖ 10sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- futures
0.3.17 - futures-timer
3.0.2 - lru
0.7.0 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - polkadot-node-metrics
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-primitives
0.9.12 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - tracing
0.1.29
used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - polkadot-network-bridge
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12
- futures
polkadot-overseer-gen
0.9.12github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onpolkadot-overseer-gen-proc-macro
0.9.12github.com/paritytech/polkadot↘ 4↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003eused bypolkadot-parachain
0.9.12github.com/paritytech/polkadot↘ 10↖ 16sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - unique-node
0.9.12 - unique-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12
- cumulus-client-network
polkadot-primitives
0.9.12github.com/paritytech/polkadot↘ 23↖ 50sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bitvec
0.20.4 - frame-system
4.0.0-dev - hex-literal
0.3.3 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - polkadot-core-primitives
0.9.12 - polkadot-parachain
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev
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-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - kusama-runtime
0.9.12 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-client
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-statement-table
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - unique-node
0.9.12 - westend-runtime
0.9.12
- bitvec
polkadot-rpc
0.9.12github.com/paritytech/polkadot↘ 24↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - jsonrpc-core
18.0.0 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-primitives
0.9.12 - 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.10.0-dev - sp-runtime
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev
- beefy-gadget
polkadot-runtime
0.9.12github.com/paritytech/polkadot↘ 70↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.3 - log
0.4.14 - 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-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-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-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
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 - parity-scale-codec
2.3.1 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev
- beefy-primitives
polkadot-runtime-common
0.9.12github.com/paritytech/polkadot↘ 40↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.1 - libsecp256k1
0.7.0 - log
0.4.14 - 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-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
2.3.1 - polkadot-primitives
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - slot-range-helper
0.9.12 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - static_assertions
1.1.0 - xcm
0.9.12
- beefy-primitives
polkadot-runtime-parachains
0.9.12github.com/paritytech/polkadot↘ 32↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- bitflags
1.3.2 - bitvec
0.20.4 - derive_more
0.99.16 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.14 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
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
2.3.1 - polkadot-primitives
0.9.12 - rand
0.8.4 - rand_chacha
0.3.1 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - xcm
0.9.12 - xcm-executor
0.9.12
- bitflags
polkadot-service
0.9.12github.com/paritytech/polkadot↘ 91↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- async-trait
0.1.51 - beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.17 - hex-literal
0.3.3 - kusama-runtime
0.9.12 - kvdb
0.10.0 - kvdb-rocksdb
0.14.0 - lru
0.7.0 - pallet-babe
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-client
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - rococo-runtime
0.9.12 - 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-consensus-uncles
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-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-authority-discovery
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
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30 - tracing
0.1.29 - westend-runtime
0.9.12
- async-trait
polkadot-statement-distribution
0.9.12github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- arrayvec
0.5.2 - derive_more
0.99.16 - futures
0.3.17 - indexmap
1.7.0 - parity-scale-codec
2.3.1 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - sp-keystore
0.10.0-dev - sp-staking
4.0.0-dev - thiserror
1.0.30 - tracing
0.1.29
used by- arrayvec
polkadot-statement-table
0.9.12github.com/paritytech/polkadot↘ 3↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003epolkadot-test-runtime
0.9.12github.com/paritytech/polkadot↘ 54↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.14 - 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-mmr-primitives
4.0.0-dev - pallet-nicks
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.12 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
polkadot-test-service
0.9.12github.com/paritytech/polkadot↘ 46↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- frame-benchmarking
4.0.0-dev - frame-system
4.0.0-dev - futures
0.1.31 - futures
0.3.17 - 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.12 - polkadot-node-subsystem
0.9.12 - polkadot-overseer
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rand
0.8.4 - 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-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-arithmetic
4.0.0-dev - 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
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - substrate-test-client
2.0.1 - tempfile
3.2.0 - tokio
1.13.0 - tracing
0.1.29
used by- frame-benchmarking
polling
2.1.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25used 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.15crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535baprimitive-types
0.9.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06345ee39fbccfb06ab45f3a1a5798d9dafa04cb8921a76d227040003a234b0eused byprimitive-types
0.10.1crates.io↘ 6↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373proc-macro-crate
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785depends onused byproc-macro-crate
1.1.0crates.io↘ 2↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83depends onused by- cumulus-pallet-parachain-system-proc-macro
0.1.0 - frame-support-procedural-tools
4.0.0-dev - jsonrpsee-proc-macros
0.3.1 - multihash-derive
0.7.2 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - polkadot-overseer-gen-proc-macro
0.9.12 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - sp-api-proc-macro
4.0.0-dev - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - substrate-test-utils-derive
0.10.0-dev
- cumulus-pallet-parachain-system-proc-macro
proc-macro-error
0.4.12crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18f33027081eba0a6d8aba6d1b1c3a3be58cbb12106341c2d5759fcd9b5277e7used byproc-macro-error
1.0.4crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
0.4.12crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69deused byproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro-hack
0.5.19crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5proc-macro-nested
0.1.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086used byproc-macro2
1.0.32crates.io↘ 1↖ 66sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43depends onused by- async-trait
0.1.51 - bae
0.1.6 - bindgen
0.59.1 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.0 - derivative
2.2.0 - derive_more
0.99.16 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.3.3 - enumflags2_derive
0.6.4 - enumn
0.1.3 - evm-coder-macros
0.1.0 - 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.17 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
18.0.0 - jsonrpsee-proc-macros
0.3.1 - minicbor-derive
0.6.4 - multihash-derive
0.7.2 - nalgebra-macros
0.1.0 - pallet-contracts-proc-macro
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.28 - pin-project-internal
1.0.8 - polkadot-overseer-gen-proc-macro
0.9.12 - proc-macro-error
0.4.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
0.4.12 - proc-macro-error-attr
1.0.4 - prost-derive
0.8.0 - quote
1.0.10 - ref-cast-impl
1.0.6 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - serde_derive
1.0.130 - sp-api-proc-macro
4.0.0-dev - sp-debug-derive
3.0.0 - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.2.0 - static_init_macro
0.5.0 - structopt-derive
0.4.18 - strum_macros
0.20.1 - strum_macros
0.21.1 - strum_macros
0.22.0 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.81 - syn-mid
0.5.3 - synstructure
0.12.6 - thiserror-impl
1.0.30 - tokio-macros
0.2.6 - tokio-macros
1.5.1 - tracing-attributes
0.1.18 - wasm-bindgen-backend
0.2.78 - wasm-bindgen-macro-support
0.2.78 - xcm-procedural
0.1.0 - zeroize_derive
1.2.0
- async-trait
prometheus
0.12.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99cprost
0.8.0crates.io↘ 2↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020depends onprost-build
0.8.0crates.io↘ 10↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603depends onprost-derive
0.8.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efbaused byprost-types
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771bdepends onused bypsm
0.1.16crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd136ff4382c4753fc061cb9e4712ab2af263376b95bbd5bd8cd50c020b78e69depends onused bypwasm-utils
0.18.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum880b3384fb00b8f6ecccd5d358b93bd2201900ae3daad213791d1864f6441f5cdepends onquick-error
1.2.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quick-error
2.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3used byquicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
1.0.10crates.io↘ 1↖ 69sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05depends onused by- async-attributes
1.1.2 - async-trait
0.1.51 - bae
0.1.6 - bindgen
0.59.1 - ctor
0.1.21 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.0 - darling_macro
0.13.0 - derivative
2.2.0 - derive_more
0.99.16 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.3.3 - enumflags2_derive
0.6.4 - enumn
0.1.3 - evm-coder-macros
0.1.0 - 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.17 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
18.0.0 - jsonrpsee-proc-macros
0.3.1 - libp2p-swarm-derive
0.24.0 - minicbor-derive
0.6.4 - multihash-derive
0.7.2 - nalgebra-macros
0.1.0 - pallet-contracts-proc-macro
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - pest_generator
2.1.3 - pin-project-internal
0.4.28 - pin-project-internal
1.0.8 - polkadot-overseer-gen-proc-macro
0.9.12 - proc-macro-error
0.4.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
0.4.12 - proc-macro-error-attr
1.0.4 - prost-derive
0.8.0 - ref-cast-impl
1.0.6 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - serde_derive
1.0.130 - sp-api-proc-macro
4.0.0-dev - sp-debug-derive
3.0.0 - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.2.0 - static_init_macro
0.5.0 - structopt-derive
0.4.18 - strum_macros
0.20.1 - strum_macros
0.21.1 - strum_macros
0.22.0 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.81 - syn-mid
0.5.3 - synstructure
0.12.6 - thiserror-impl
1.0.30 - tokio-macros
0.2.6 - tokio-macros
1.5.1 - tracing-attributes
0.1.18 - wasm-bindgen-backend
0.2.78 - wasm-bindgen-macro
0.2.78 - wasm-bindgen-macro-support
0.2.78 - xcm-procedural
0.1.0 - zeroize_derive
1.2.0
- async-attributes
radium
0.5.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8used byradium
0.6.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fbused byrand
0.7.3crates.io↘ 6↖ 36sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- cuckoofilter
0.5.0 - ed25519-dalek
1.0.1 - fc-rpc
2.0.0-dev - jsonrpc-pubsub
18.0.0 - libp2p-core
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-kad
0.31.0 - libp2p-mplex
0.29.0 - libp2p-ping
0.30.0 - libp2p-pnet
0.21.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - libsecp256k1
0.3.5 - libsecp256k1
0.5.0 - libsecp256k1
0.6.0 - mick-jaeger
0.1.4 - pallet-contracts
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - parity-tokio-ipc
0.9.0 - parity-ws
0.11.1 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - soketto
0.4.2 - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - tiny-bip39
0.8.2
- cuckoofilter
rand
0.8.4crates.io↘ 4↖ 25sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8used by- cumulus-client-pov-recovery
0.1.0 - fixed-hash
0.7.0 - libp2p-mdns
0.31.0 - libp2p-noise
0.32.0 - libsecp256k1
0.7.0 - nalgebra
0.27.1 - names
0.12.0 - parity-db
0.3.3 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-service
0.9.12 - rand_distr
0.4.2 - sc-finality-grandpa
0.10.0-dev - snow
0.8.0 - soketto
0.6.0 - statrs
0.15.0 - tempfile
3.2.0 - trust-dns-proto
0.20.3 - twox-hash
1.6.1 - wasmtime-runtime
0.30.0 - yamux
0.9.0
- 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.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7depends onrand_distr
0.4.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum964d548f8e7d12e102ef183a0de7e98180c9f8729f555897a857b96e48122d2fdepends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_hc
0.3.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7depends onused byrand_pcg
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90used byrayon-core
1.9.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8edepends onused byredox_syscall
0.1.57crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ceused byredox_syscall
0.2.10crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ffdepends onredox_users
0.4.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64depends onreed-solomon-novelpoly
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221ref-cast
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541dadepends onused byref-cast-impl
1.0.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2depends onused byregalloc
0.0.31crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5depends onused byregex
1.5.4crates.io↘ 3↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461regex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-syntax
0.6.25crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89bregion
2.2.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0remote-externalities
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused byremove_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 byretain_mut
0.1.4crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum448296241d034b96c11173591deaa1302f2c17b56092106c1f92c1bc0183a8c9ring
0.16.20crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcrlp
0.5.1crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5depends onrlp-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672adepends onused byrocksdb
0.17.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a62eca5cacf2c8261128631bed9f045598d40bfbe4b29f5163f0f802f8f44a7depends onused byrococo-runtime
0.9.12github.com/paritytech/polkadot↘ 67↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bp-messages
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
0.1.0 - 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-rpc-runtime-api
4.0.0-dev - hex-literal
0.3.3 - log
0.4.14 - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-grandpa
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-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
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-utility
4.0.0-dev - pallet-xcm
0.9.12 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
rpassword
5.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efbdepends onused byrustc_version
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onused byrustc_version
0.3.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155eedepends onused byrustc-demangle
0.1.21crates.io↘ 0↖ 3sourceregistry+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↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rustls
0.19.1crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7rustls-native-certs
0.5.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092rw-stream-sink
0.2.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020ryu
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86eused bysafe-mix
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215cdepends onsalsa20
0.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0depends onused bysame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused bysc-allocator
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sc-authority-discovery
0.10.0-devgithub.com/paritytech/substrate.git↘ 20↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - futures
0.3.17 - futures-timer
3.0.2 - ip_network
0.4.0 - libp2p
0.39.1 - log
0.4.14 - parity-scale-codec
2.3.1 - prost
0.8.0 - prost-build
0.8.0 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
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
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-basic-authorship
0.10.0-devgithub.com/paritytech/substrate.git↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-proposer-metrics
0.9.0 - 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
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- futures
sc-block-builder
0.10.0-devgithub.com/paritytech/substrate.git↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-chain-spec
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-chain-spec-derive
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-cli
0.10.0-devgithub.com/paritytech/substrate.git↘ 31↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- chrono
0.4.19 - fdlimit
0.2.1 - futures
0.3.17 - hex
0.4.3 - libp2p
0.39.1 - log
0.4.14 - names
0.12.0 - parity-scale-codec
2.3.1 - rand
0.7.3 - regex
1.5.4 - rpassword
5.0.1 - sc-client-api
4.0.0-dev - sc-keystore
4.0.0-dev - sc-network
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.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-keyring
4.0.0-dev - sp-keystore
0.10.0-dev - sp-panic-handler
3.0.0 - sp-runtime
4.0.0-dev - sp-version
4.0.0-dev - structopt
0.3.25 - thiserror
1.0.30 - tiny-bip39
0.8.2 - tokio
1.13.0
- chrono
sc-client-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 21↖ 44sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- fnv
1.0.7 - futures
0.3.17 - hash-db
0.15.2 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - 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
4.0.0-dev - sp-database
4.0.0-dev - sp-externalities
0.10.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-trie
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
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 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-overseer
0.9.12 - polkadot-rpc
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-slots
0.10.0-dev - sc-consensus-uncles
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-light
4.0.0-dev - sc-network
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-test-client
2.0.1 - unique-node
0.9.12 - unique-rpc
0.1.0
- fnv
sc-client-db
0.10.0-devgithub.com/paritytech/substrate.git↘ 18↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- hash-db
0.15.2 - kvdb
0.10.0 - kvdb-memorydb
0.10.0 - kvdb-rocksdb
0.14.0 - linked-hash-map
0.5.4 - log
0.4.14 - parity-db
0.3.3 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sc-client-api
4.0.0-dev - sc-state-db
0.10.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-database
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-trie
4.0.0-dev
- hash-db
sc-consensus
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 17sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - futures
0.3.17 - futures-timer
3.0.2 - libp2p
0.39.1 - log
0.4.14 - parking_lot
0.11.2 - sc-client-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30
used by- 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 - fc-consensus
2.0.0-dev - polkadot-client
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
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-service
0.10.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.12
- async-trait
sc-consensus-aura
0.10.0-devgithub.com/paritytech/substrate.git↘ 22↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - futures
0.3.17 - log
0.4.14 - parity-scale-codec
2.3.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
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-slots
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-consensus-babe
0.10.0-devgithub.com/paritytech/substrate.git↘ 36↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - fork-tree
3.0.0 - futures
0.3.17 - log
0.4.14 - merlin
2.0.1 - num-bigint
0.2.6 - num-rational
0.2.4 - num-traits
0.2.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.7.3 - retain_mut
0.1.4 - 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.130 - sp-api
4.0.0-dev - sp-application-crypto
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-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-version
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-consensus-babe-rpc
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- derive_more
0.99.16 - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-rpc-api
0.10.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-application-crypto
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
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev
used by- derive_more
sc-consensus-epochs
0.10.0-devgithub.com/paritytech/substrate.git↘ 6↖ 5sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-consensus-slots
0.10.0-devgithub.com/paritytech/substrate.git↘ 19↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - futures
0.3.17 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-timestamp
4.0.0-dev - thiserror
1.0.30
- async-trait
sc-consensus-uncles
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-executor
0.10.0-devgithub.com/paritytech/substrate.git↘ 19↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- lazy_static
1.4.0 - libsecp256k1
0.6.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - 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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-io
4.0.0-dev - sp-panic-handler
3.0.0 - sp-runtime-interface
4.0.0-dev - sp-tasks
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - sp-wasm-interface
4.0.0-dev - wasmi
0.9.1
- lazy_static
sc-executor-common
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-executor-wasmi
0.10.0-devgithub.com/paritytech/substrate.git↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysc-executor-wasmtime
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-finality-grandpa
0.10.0-devgithub.com/paritytech/substrate.git↘ 30↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - derive_more
0.99.16 - dyn-clone
1.0.4 - finality-grandpa
0.14.4 - fork-tree
3.0.0 - futures
0.3.17 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.8.4 - sc-block-builder
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-gossip
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.68 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0
- async-trait
sc-finality-grandpa-rpc
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- derive_more
0.99.16 - finality-grandpa
0.14.4 - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-finality-grandpa
0.10.0-dev - sc-rpc
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev
- derive_more
sc-informant
0.10.0-devgithub.com/paritytech/substrate.git↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysc-keystore
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-light
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-network
0.10.0-devgithub.com/paritytech/substrate.git↘ 44↖ 21sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-std
1.10.0 - async-trait
0.1.51 - asynchronous-codec
0.5.0 - bitflags
1.3.2 - bytes
1.1.0 - cid
0.6.1 - derive_more
0.99.16 - either
1.6.1 - fnv
1.0.7 - fork-tree
3.0.0 - futures
0.3.17 - futures-timer
3.0.2 - hex
0.4.3 - ip_network
0.4.0 - libp2p
0.39.1 - linked-hash-map
0.5.4 - linked_hash_set
0.1.4 - log
0.4.14 - lru
0.6.6 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - pin-project
1.0.8 - prost
0.8.0 - prost-build
0.8.0 - 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-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - smallvec
1.7.0 - sp-arithmetic
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30 - unsigned-varint
0.6.0 - void
1.0.2 - zeroize
1.4.2
used by- beefy-gadget
4.0.0-dev - fc-rpc
2.0.0-dev - polkadot-availability-recovery
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.12 - unique-rpc
0.1.0
- async-std
sc-network-gossip
0.10.0-devgithub.com/paritytech/substrate.git↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-offchain
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- bytes
1.1.0 - fnv
1.0.7 - futures
0.3.17 - futures-timer
3.0.2 - hex
0.4.3 - hyper
0.14.14 - hyper-rustls
0.22.1 - log
0.4.14 - num_cpus
1.13.0 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-core
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - threadpool
1.8.1
- bytes
sc-peerset
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-proposer-metrics
0.9.0github.com/paritytech/substrate.git↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sc-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 24↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - hash-db
0.15.2 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - 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.68 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-keystore
0.10.0-dev - sp-offchain
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-version
4.0.0-dev
- futures
sc-rpc-api
0.10.0-devgithub.com/paritytech/substrate.git↘ 18↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sc-chain-spec
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-core
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-tracing
4.0.0-dev - sp-version
4.0.0-dev - thiserror
1.0.30
- futures
sc-rpc-server
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-service
0.10.0-devgithub.com/paritytech/substrate.git↘ 58↖ 13sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - directories
3.0.2 - exit-future
0.2.0 - futures
0.3.17 - futures-timer
3.0.2 - hash-db
0.15.2 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - pin-project
1.0.8 - 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-light
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.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.130 - serde_json
1.0.68 - sp-api
4.0.0-dev - sp-application-crypto
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
4.0.0-dev - sp-externalities
0.10.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - tempfile
3.2.0 - thiserror
1.0.30 - tokio
1.13.0 - tracing
0.1.29 - tracing-futures
0.2.5
- async-trait
sc-state-db
0.10.0-devgithub.com/paritytech/substrate.git↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysc-sync-state-rpc
0.10.0-devgithub.com/paritytech/substrate.git↘ 15↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - parity-scale-codec
2.3.1 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-rpc-api
0.10.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-runtime
4.0.0-dev - thiserror
1.0.30
- jsonrpc-core
sc-telemetry
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysc-tracing
4.0.0-devgithub.com/paritytech/substrate.git↘ 23↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.19 - lazy_static
1.4.0 - log
0.4.14 - once_cell
1.8.0 - parking_lot
0.11.2 - regex
1.5.4 - 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.130 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-tracing
4.0.0-dev - thiserror
1.0.30 - tracing
0.1.29 - tracing-log
0.1.2 - tracing-subscriber
0.2.25
- ansi_term
sc-tracing-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysc-transaction-pool
4.0.0-devgithub.com/paritytech/substrate.git↘ 20↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - intervalier
0.4.0 - linked-hash-map
0.5.4 - log
0.4.14 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - retain_mut
0.1.4 - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.130 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
4.0.0-dev - sp-runtime
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - thiserror
1.0.30
- futures
sc-transaction-pool-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsc-utils
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 11sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044scale-info
1.0.0crates.io↘ 6↖ 121sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782fdepends onused by- beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
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-parachain-inherent
0.1.0 - ethbloom
0.11.1 - ethereum
0.9.0 - ethereum-types
0.12.1 - evm
0.30.0 - evm-core
0.30.0 - finality-grandpa
0.14.4 - fp-evm
3.0.0-dev - 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
14.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.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - parachain-info
0.1.0 - polkadot-core-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - primitive-types
0.10.1 - rococo-runtime
0.9.12 - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
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-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - unique-runtime
0.9.12 - up-data-structs
0.1.0 - westend-runtime
0.9.12 - xcm
0.9.12 - xcm-builder
0.9.12
- beefy-primitives
scale-info-derive
1.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcdused byschannel
0.1.19crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscoped-tls
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2used byscopeguard
1.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdsct
0.6.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228cedepends onused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused bysecurity-framework
2.4.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87depends onused bysecurity-framework-sys
2.4.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7edepends 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
0.11.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6depends onsemver-parser
0.7.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used bysemver-parser
0.10.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7depends onserde
1.0.130crates.io↘ 1↖ 116sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913depends onused by- beef
0.5.1 - beefy-gadget-rpc
4.0.0-dev - bincode
1.3.3 - bp-header-chain
0.1.0 - bp-messages
0.1.0 - camino
1.0.5 - cargo-platform
0.1.2 - cargo_metadata
0.13.1 - cranelift-entity
0.77.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - ed25519-dalek
1.0.1 - ethereum
0.9.0 - ethereum
0.9.0 - evm
0.30.0 - evm-core
0.30.0 - fc-rpc-core
1.1.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-metadata
14.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
3.5.5 - impl-serde
0.3.1 - indexmap
1.7.0 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - kusama-runtime
0.9.12 - libsecp256k1
0.5.0 - libsecp256k1
0.6.0 - libsecp256k1
0.7.0 - multiaddr
0.13.0 - orml-vesting
0.4.1-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-common
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
0.1.0 - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-offences
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.1.0 - pallet-unq-scheduler
0.1.0 - pallet-xcm
0.9.12 - parachain-info
0.1.0 - parity-scale-codec
2.3.1 - polkadot-node-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-rpc-api
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 - scale-info
1.0.0 - semver
0.11.0 - serde_json
1.0.68 - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-serializer
3.0.0 - sp-storage
4.0.0-dev - sp-version
4.0.0-dev - ss58-registry
1.2.0 - substrate-test-client
2.0.1 - toml
0.5.8 - tracing-serde
0.1.2 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - unique-node
0.9.12 - unique-runtime
0.9.12 - up-data-structs
0.1.0 - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-types
0.30.0 - westend-runtime
0.9.12
- beef
serde_derive
1.0.130crates.io↘ 3↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508bdepends onserde_json
1.0.68crates.io↘ 3↖ 26sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8depends onused by- cargo_metadata
0.13.1 - fc-rpc-core
1.1.0-dev - handlebars
3.5.5 - jsonrpc-client-transports
18.0.0 - jsonrpc-core
18.0.0 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - remote-externalities
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-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-telemetry
4.0.0-dev - sp-serializer
3.0.0 - ss58-registry
1.2.0 - substrate-test-client
2.0.1 - tracing-subscriber
0.2.25 - unique-node
0.9.12
- cargo_metadata
sha-1
0.8.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163dfsha-1
0.9.8crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6used bysha2
0.8.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69sha2
0.9.8crates.io↘ 5↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fasha3
0.8.2crates.io↘ 5↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecfsha3
0.9.1crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809sharded-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.10crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c98891d737e271a2954825ef19e46bd16bdb98e2746f2eec4f7a4ef7946efd1depends onused bysignal-hook-registry
1.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0depends onused bysignature
1.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788used bysimba
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5cused byslab
0.4.5crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5slot-range-helper
0.9.12github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003eslotmap
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342depends onused bysmallvec
1.7.0crates.io↘ 0↖ 39sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309used by- bp-rococo
0.1.0 - cranelift-codegen
0.77.0 - cranelift-frontend
0.77.0 - cranelift-wasm
0.77.0 - frame-support
4.0.0-dev - kusama-runtime
0.9.12 - kvdb
0.10.0 - kvdb-rocksdb
0.14.0 - libp2p
0.39.1 - libp2p-core
0.29.0 - libp2p-dns
0.29.0 - libp2p-floodsub
0.30.0 - libp2p-gossipsub
0.32.0 - libp2p-identify
0.30.0 - libp2p-kad
0.31.0 - libp2p-mdns
0.31.0 - libp2p-mplex
0.29.0 - libp2p-relay
0.3.0 - libp2p-request-response
0.12.0 - libp2p-swarm
0.30.0 - multistream-select
0.10.4 - pallet-contracts
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - parity-util-mem
0.10.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.5 - polkadot-node-subsystem-types
0.9.12 - polkadot-runtime
0.9.12 - polkadot-test-runtime
0.9.12 - regalloc
0.0.31 - rococo-runtime
0.9.12 - sc-network
0.10.0-dev - sp-state-machine
0.10.0-dev - tracing-subscriber
0.2.25 - trie-db
0.22.6 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - unique-runtime
0.9.12 - westend-runtime
0.9.12
- bp-rococo
snap
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451used bysnow
0.8.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7depends onused bysocket2
0.3.19crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6edepends onused bysocket2
0.4.2crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516depends onsoketto
0.4.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88used bysoketto
0.6.0crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma74e48087dbeed4833785c2f3352b59140095dc192dce966a3bfc155020a439fsp-api
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 72sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-wococo
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-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
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-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.12 - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-unique
0.1.0 - polkadot-client
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-overseer
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - 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-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-light
4.0.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.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-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-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 - uc-rpc
0.1.0 - unique-node
0.9.12 - unique-rpc
0.1.0 - unique-runtime
0.9.12 - up-rpc
0.1.0 - westend-runtime
0.9.12
- beefy-gadget
sp-api-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysp-application-crypto
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 28sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-test-utils
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - 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.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - 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-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
4.0.0-dev
- beefy-gadget
sp-arithmetic
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 19sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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.12 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-gilt
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - polkadot-primitives
0.9.12 - polkadot-test-service
0.9.12 - 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 - sp-consensus-slots
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - unique-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-gadget
sp-authority-discovery
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - pallet-authority-discovery
4.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - sc-authority-discovery
0.10.0-dev - westend-runtime
0.9.12
- kusama-runtime
sp-authorship
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-block-builder
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 18sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - kusama-runtime
0.9.12 - polkadot-client
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - 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.12 - unique-rpc
0.1.0 - unique-runtime
0.9.12 - westend-runtime
0.9.12
- cumulus-client-consensus-aura
sp-blockchain
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 44sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-rpc
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-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-light
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.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.0 - unique-node
0.9.12 - unique-rpc
0.1.0
- beefy-gadget
sp-consensus
0.10.0-devgithub.com/paritytech/substrate.git↘ 12↖ 29sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused 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-client-service
0.1.0 - fc-consensus
2.0.0-dev - polkadot-client
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-rpc
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
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.12 - unique-rpc
0.1.0
- cumulus-client-collator
sp-consensus-aura
0.10.0-devgithub.com/paritytech/substrate.git↘ 11↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-consensus-babe
0.10.0-devgithub.com/paritytech/substrate.git↘ 16↖ 14sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - merlin
2.0.1 - parity-scale-codec
2.3.1 - scale-info
1.0.0 - serde
1.0.130 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-std
4.0.0-dev - sp-timestamp
4.0.0-dev
used by- kusama-runtime
0.9.12 - pallet-babe
4.0.0-dev - polkadot-client
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - westend-runtime
0.9.12
- async-trait
sp-consensus-slots
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-consensus-vrf
0.10.0-devgithub.com/paritytech/substrate.git↘ 5↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-core
4.0.0-devgithub.com/paritytech/substrate.git↘ 39↖ 146sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- base58
0.2.0 - blake2-rfc
0.2.18 - byteorder
1.4.3 - dyn-clonable
0.9.0 - ed25519-dalek
1.0.1 - futures
0.3.17 - hash-db
0.15.2 - hash256-std-hasher
0.15.2 - hex
0.4.3 - impl-serde
0.3.1 - lazy_static
1.4.0 - libsecp256k1
0.6.0 - log
0.4.14 - merlin
2.0.1 - num-traits
0.2.14 - parity-scale-codec
2.3.1 - parity-util-mem
0.10.2 - parking_lot
0.11.2 - primitive-types
0.10.1 - rand
0.7.3 - regex
1.5.4 - scale-info
1.0.0 - schnorrkel
0.9.1 - secrecy
0.8.0 - serde
1.0.130 - sha2
0.9.8 - sp-debug-derive
3.0.0 - sp-externalities
0.10.0-dev - sp-runtime-interface
4.0.0-dev - sp-std
4.0.0-dev - sp-storage
4.0.0-dev - ss58-registry
1.2.0 - substrate-bip39
0.4.4 - thiserror
1.0.30 - tiny-bip39
0.8.2 - tiny-keccak
2.0.2 - twox-hash
1.6.1 - wasmi
0.9.1 - zeroize
1.4.2
used by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
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 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking-cli
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 - kusama-runtime
0.9.12 - pallet-bags-list
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-bridge-dispatch
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-nonfungible
0.1.0 - pallet-refungible
0.1.0 - pallet-session
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.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-cli
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-core-primitives
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-table
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - sc-allocator
4.0.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-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-executor-common
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-keystore
4.0.0-dev - sc-light
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-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
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
4.0.0-dev - sp-keyring
4.0.0-dev - sp-keystore
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-rpc
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-tasks
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - unique-node
0.9.12 - unique-rpc
0.1.0 - unique-runtime
0.9.12 - up-data-structs
0.1.0 - up-evm-mapping
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm-executor
0.9.12
- base58
sp-database
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-debug-derive
3.0.0github.com/paritytech/substrate.git↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-externalities
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 14sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used by- cumulus-pallet-parachain-system
0.1.0 - frame-benchmarking-cli
4.0.0-dev - polkadot-node-core-pvf
0.9.12 - sc-client-api
4.0.0-dev - sc-executor
0.10.0-dev - sc-light
4.0.0-dev - sc-service
0.10.0-dev - sp-core
4.0.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime-interface
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-tasks
4.0.0-dev - try-runtime-cli
0.10.0-dev
- cumulus-pallet-parachain-system
sp-finality-grandpa
4.0.0-devgithub.com/paritytech/substrate.git↘ 11↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-inherents
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 33sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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 - fc-consensus
2.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.12 - pallet-timestamp
4.0.0-dev - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - rococo-runtime
0.9.12 - 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-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.12 - unique-runtime
0.9.12 - westend-runtime
0.9.12
- cumulus-client-consensus-aura
sp-io
4.0.0-devgithub.com/paritytech/substrate.git↘ 17↖ 68sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- futures
0.3.17 - hash-db
0.15.2 - libsecp256k1
0.6.0 - log
0.4.14 - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-keystore
0.10.0-dev - sp-runtime-interface
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-std
4.0.0-dev - sp-tracing
4.0.0-dev - sp-trie
4.0.0-dev - sp-wasm-interface
4.0.0-dev - tracing
0.1.29 - tracing-core
0.1.21
used by- bp-runtime
0.1.0 - 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 - 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 - kusama-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-collective
4.0.0-dev - pallet-contracts
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.0 - pallet-evm-transaction-payment
0.1.0 - 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.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
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-staking
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.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - polkadot-node-core-pvf
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sp-application-crypto
4.0.0-dev - sp-runtime
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-tasks
4.0.0-dev - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- futures
sp-keyring
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 4sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-keystore
0.10.0-devgithub.com/paritytech/substrate.git↘ 10↖ 32sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends 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.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - 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-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
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.12
- beefy-gadget
sp-maybe-compressed-blob
4.0.0-devgithub.com/paritytech/substrate.git↘ 1↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-npos-elections
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-npos-elections-solution-type
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysp-offchain
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 12sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-panic-handler
3.0.0github.com/paritytech/substrate.git↘ 1↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-rpc
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-runtime
4.0.0-devgithub.com/paritytech/substrate.git↘ 15↖ 184sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
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-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-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.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - polkadot-client
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-core-primitives
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-rpc
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - polkadot-test-service
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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-slots
0.10.0-dev - sc-consensus-uncles
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-light
4.0.0-dev - sc-network
0.10.0-dev - sc-network-gossip
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-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.12 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
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
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
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - unique-node
0.9.12 - unique-rpc
0.1.0 - unique-runtime
0.9.12 - up-data-structs
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-gadget
sp-runtime-interface
4.0.0-devgithub.com/paritytech/substrate.git↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-runtime-interface-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044sp-sandbox
0.10.0-devgithub.com/paritytech/substrate.git↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-serializer
3.0.0github.com/paritytech/substrate.git↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-session
4.0.0-devgithub.com/paritytech/substrate.git↘ 7↖ 18sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- kusama-runtime
0.9.12 - 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.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-service
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.12 - unique-rpc
0.1.0 - unique-runtime
0.9.12 - westend-runtime
0.9.12
- kusama-runtime
sp-staking
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 18sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used by- frame-support
4.0.0-dev - kusama-runtime
0.9.12 - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - 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.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - sp-session
4.0.0-dev - westend-runtime
0.9.12
- frame-support
sp-state-machine
0.10.0-devgithub.com/paritytech/substrate.git↘ 16↖ 22sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
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.12 - polkadot-test-service
0.9.12 - 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-light
4.0.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
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev
- bp-runtime
sp-std
4.0.0-devgithub.com/paritytech/substrate.git↘ 0↖ 140sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used by- beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rialto
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
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 - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - 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-try-runtime
0.10.0-dev - kusama-runtime
0.9.12 - orml-vesting
0.4.1-dev - 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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-contract-helpers
0.1.0 - pallet-contracts
4.0.0-dev - pallet-contracts-primitives
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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
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-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nonfungible
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.1.0 - 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-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-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unq-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - polkadot-core-primitives
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - slot-range-helper
0.9.12 - sp-api
4.0.0-dev - sp-application-crypto
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-authority-discovery
4.0.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-consensus-vrf
0.10.0-dev - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
4.0.0-dev - sp-runtime-interface
4.0.0-dev - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-storage
4.0.0-dev - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-tracing
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
4.0.0-dev - sp-version
4.0.0-dev - sp-wasm-interface
4.0.0-dev - unique-runtime
0.9.12 - up-data-structs
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- beefy-primitives
sp-storage
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-tasks
4.0.0-devgithub.com/paritytech/substrate.git↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-timestamp
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 8sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-tracing
4.0.0-devgithub.com/paritytech/substrate.git↘ 5↖ 10sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-transaction-pool
4.0.0-devgithub.com/paritytech/substrate.git↘ 2↖ 13sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsp-transaction-storage-proof
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused bysp-trie
4.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 21sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - 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 - cumulus-primitives-utility
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-session
4.0.0-dev - polkadot-cli
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - 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-io
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-transaction-storage-proof
4.0.0-dev - unique-node
0.9.12
- bp-runtime
sp-version
4.0.0-devgithub.com/paritytech/substrate.git↘ 9↖ 21sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - frame-system
4.0.0-dev - kusama-runtime
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime
0.9.12 - polkadot-test-runtime
0.9.12 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.12 - 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.12 - westend-runtime
0.9.12
- bp-polkadot-core
sp-version-proc-macro
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysp-wasm-interface
4.0.0-devgithub.com/paritytech/substrate.git↘ 4↖ 9sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044spin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byss58-registry
1.2.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb102b328df61c67f8ccf8471b29c31c7d6da646a867aff95fe8bff386fe7c4dused bystable_deref_trait
1.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fstatic_init
0.5.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369cused bystatic_init_macro
0.5.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbfused bystatrs
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05bdbb8e4e78216a85785a85d3ec3183144f98d0097b9281802c019bb07a6f05used bystrsim
0.8.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6aused bystrsim
0.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623used bystructopt
0.3.25crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum40b9788f4202aa75c240ecc9c15c65185e6a39ccdeb0fd5d008b98825464c87cstructopt-derive
0.4.18crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0used bystrum
0.20.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5cdepends onused bystrum
0.21.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2strum
0.22.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729edepends onstrum_macros
0.20.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149used bystrum_macros
0.21.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ecstrum_macros
0.22.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fbused bysubstrate-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.git↘ 1↖ 2sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsubstrate-frame-rpc-system
4.0.0-devgithub.com/paritytech/substrate.git↘ 15↖ 3sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-core-client
18.0.0 - jsonrpc-derive
18.0.0 - log
0.4.14 - parity-scale-codec
2.3.1 - sc-client-api
4.0.0-dev - sc-rpc-api
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-core
4.0.0-dev - sp-runtime
4.0.0-dev
- frame-system-rpc-runtime-api
substrate-prometheus-endpoint
0.9.0github.com/paritytech/substrate.git↘ 7↖ 20sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - polkadot-node-metrics
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-service
0.9.12 - 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-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-proposer-metrics
0.9.0 - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - unique-node
0.9.12
- beefy-gadget
substrate-test-client
2.0.1github.com/paritytech/substrate.git↘ 20↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- async-trait
0.1.51 - futures
0.3.17 - hex
0.4.3 - parity-scale-codec
2.3.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-light
4.0.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - serde
1.0.130 - serde_json
1.0.68 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
4.0.0-dev - sp-keyring
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev
used by- async-trait
substrate-test-utils
4.0.0-devgithub.com/paritytech/substrate.git↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044used bysubstrate-test-utils-derive
0.10.0-devgithub.com/paritytech/substrate.git↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044substrate-wasm-builder
5.0.0-devgithub.com/paritytech/substrate.git↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends onsubtle
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8eeused bysubtle
2.4.1crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601syn
1.0.81crates.io↘ 3↖ 66sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966used by- async-attributes
1.1.2 - async-trait
0.1.51 - bae
0.1.6 - ctor
0.1.21 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.0 - darling_macro
0.13.0 - data-encoding-macro-internal
0.1.10 - derivative
2.2.0 - derive_more
0.99.16 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.3.3 - enumflags2_derive
0.6.4 - enumn
0.1.3 - evm-coder-macros
0.1.0 - 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.17 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
18.0.0 - jsonrpsee-proc-macros
0.3.1 - libp2p-swarm-derive
0.24.0 - minicbor-derive
0.6.4 - multihash-derive
0.7.2 - nalgebra-macros
0.1.0 - pallet-contracts-proc-macro
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.28 - pin-project-internal
1.0.8 - polkadot-overseer-gen-proc-macro
0.9.12 - proc-macro-error
0.4.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
0.4.12 - prost-derive
0.8.0 - ref-cast-impl
1.0.6 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
1.0.0 - serde_derive
1.0.130 - sp-api-proc-macro
4.0.0-dev - sp-debug-derive
3.0.0 - sp-npos-elections-solution-type
4.0.0-dev - sp-runtime-interface-proc-macro
4.0.0-dev - sp-version-proc-macro
4.0.0-dev - static_init_macro
0.5.0 - structopt-derive
0.4.18 - strum_macros
0.20.1 - strum_macros
0.21.1 - strum_macros
0.22.0 - substrate-test-utils-derive
0.10.0-dev - syn-mid
0.5.3 - synstructure
0.12.6 - thiserror-impl
1.0.30 - tokio-macros
0.2.6 - tokio-macros
1.5.1 - tracing-attributes
0.1.18 - wasm-bindgen-backend
0.2.78 - wasm-bindgen-macro-support
0.2.78 - xcm-procedural
0.1.0 - zeroize_derive
1.2.0
- async-attributes
syn-mid
0.5.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaa8e7560a164edb1621a55d18a0c59abf49d360f47aa7b821061dd7eea7fac9depends onused bysynstructure
0.12.6crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210ftap
1.0.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369used bytarget-lexicon
0.12.2crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9bffcddbc2458fa3e6058414599e3c838a022abae82e5c67b4f7f80298d5bfftempfile
3.2.0crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22termcolor
1.1.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4depends ontextwrap
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060depends onused bythiserror
1.0.30crates.io↘ 1↖ 64sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417depends onused by- beefy-gadget
4.0.0-dev - bounded-vec
0.4.0 - flexi_logger
0.15.12 - jsonrpsee-types
0.3.1 - jsonrpsee-ws-client
0.3.1 - libp2p-core
0.29.0 - libp2p-yamux
0.33.0 - metered-channel
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-cli
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-erasure-coding
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-jaeger
0.9.12 - polkadot-node-network-protocol
0.9.12 - polkadot-node-primitives
0.9.12 - polkadot-node-subsystem-types
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - proc-macro-crate
1.1.0 - prometheus
0.12.0 - reed-solomon-novelpoly
1.0.0 - sc-allocator
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-network
0.10.0-dev - sc-rpc-api
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
4.0.0-dev - sp-inherents
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-timestamp
4.0.0-dev - sp-version
4.0.0-dev - tiny-bip39
0.8.2 - trust-dns-proto
0.20.3 - trust-dns-resolver
0.20.3 - wasmtime-cranelift
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - wasmtime-types
0.30.0
- beefy-gadget
thiserror-impl
1.0.30crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714bdepends onused bythread_local
1.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbddepends onused bythreadpool
1.8.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onthrift
0.13.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c6d965454947cc7266d22716ebfd07b18d84ebaf35eec558586bbb2a8cb6b5bused bytime
0.1.44crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255used bytiny-bip39
0.8.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839ddepends ontiny-keccak
2.0.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends ontinyvec
1.5.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf83b2a3d4d9091d0abd7eba4dc2710b1718583bd4d8992e2190720ea38f391f7depends ontinyvec_macros
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5cused bytokio
0.2.25crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092used bytokio
1.13.0crates.io↘ 11↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum588b2d10a336da58d877567cd8fb8a14b463e2104910f8132cd054b4b96e29eedepends onused bytokio-macros
0.2.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265adepends onused bytokio-macros
1.5.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum114383b041aa6212c579467afa0075fbbdd0718de036100bc0ba7961d8cb9095depends onused bytokio-rustls
0.22.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6depends ontokio-stream
0.1.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3used bytokio-util
0.6.9crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0depends ontoml
0.5.8crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaadepends ontower-service
0.3.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6tracing
0.1.29crates.io↘ 4↖ 45sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105used 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-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - hyper
0.14.14 - metered-channel
0.9.12 - polkadot-approval-distribution
0.9.12 - polkadot-availability-bitfield-distribution
0.9.12 - polkadot-availability-distribution
0.9.12 - polkadot-availability-recovery
0.9.12 - polkadot-collator-protocol
0.9.12 - polkadot-dispute-distribution
0.9.12 - polkadot-gossip-support
0.9.12 - polkadot-network-bridge
0.9.12 - polkadot-node-collation-generation
0.9.12 - polkadot-node-core-approval-voting
0.9.12 - polkadot-node-core-av-store
0.9.12 - polkadot-node-core-backing
0.9.12 - polkadot-node-core-bitfield-signing
0.9.12 - polkadot-node-core-candidate-validation
0.9.12 - polkadot-node-core-chain-api
0.9.12 - polkadot-node-core-chain-selection
0.9.12 - polkadot-node-core-dispute-coordinator
0.9.12 - polkadot-node-core-dispute-participation
0.9.12 - polkadot-node-core-parachains-inherent
0.9.12 - polkadot-node-core-provisioner
0.9.12 - polkadot-node-core-pvf
0.9.12 - polkadot-node-core-runtime-api
0.9.12 - polkadot-node-subsystem-util
0.9.12 - polkadot-overseer
0.9.12 - polkadot-overseer-gen
0.9.12 - polkadot-service
0.9.12 - polkadot-statement-distribution
0.9.12 - polkadot-test-service
0.9.12 - sc-network-gossip
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sp-io
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-tracing
4.0.0-dev - tracing-futures
0.2.5 - tracing-subscriber
0.2.25
- cumulus-client-collator
tracing-attributes
0.1.18crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8edepends onused bytracing-core
0.1.21crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4depends ontracing-futures
0.2.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2depends onused bytracing-log
0.1.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3tracing-serde
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28bdepends onused bytracing-subscriber
0.2.25crates.io↘ 14↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71depends ontrie-db
0.22.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9eac131e334e81b6b3be07399482042838adcd7957aa0010231d0813e39e02fatrie-root
0.16.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cddepends ontriehash
0.8.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5cdepends onused bytrust-dns-proto
0.20.3crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad0d7f5db438199a6e2609debe3f69f808d074e0a2888ee0bccb45fe234d03f4depends onused bytrust-dns-resolver
0.20.3crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6ad17b608a64bd0735e67bde16b0636f8aa8591f831a25d18443ed00a699770depends ontry-runtime-cli
0.10.0-devgithub.com/paritytech/substrate.git↘ 17↖ 1sourcegit+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.12#d76f39995315ec36980908e4b99709bd14927044depends on- jsonrpsee-ws-client
0.3.1 - log
0.4.14 - parity-scale-codec
2.3.1 - remote-externalities
0.10.0-dev - 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.130 - sp-core
4.0.0-dev - sp-externalities
0.10.0-dev - sp-io
4.0.0-dev - sp-keystore
0.10.0-dev - sp-runtime
4.0.0-dev - sp-state-machine
0.10.0-dev - sp-version
4.0.0-dev - structopt
0.3.25
used by- jsonrpsee-ws-client
twox-hash
1.6.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78eused bytypenum
1.14.0crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ecuint
0.9.1crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5funicase
2.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6depends onunicode-bidi
0.3.7crates.io↘ 0↖ 2unicode-normalization
0.1.19crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9depends onunicode-segmentation
1.8.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385bused byunicode-width
0.1.9crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973used byunicode-xid
0.2.2crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3unique-node
0.9.12workspace↘ 70↖ 0depends on- 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 - 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.15.12 - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - log
0.4.14 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - parity-scale-codec
2.3.1 - parking_lot
0.11.2 - polkadot-cli
0.9.12 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-service
0.9.12 - polkadot-test-service
0.9.12 - 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-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-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.130 - serde_json
1.0.68 - 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
4.0.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.10.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
4.0.0-dev - structopt
0.3.25 - substrate-build-script-utils
3.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.9.0 - unique-rpc
0.1.0 - unique-runtime
0.9.12 - up-data-structs
0.1.0
- cumulus-client-cli
unique-rpc
0.1.0workspace↘ 39↖ 1depends on- 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 - futures
0.3.17 - jsonrpc-core
18.0.0 - jsonrpc-pubsub
18.0.0 - 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.1.0 - 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 - 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
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-storage
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - tokio
0.2.25 - uc-rpc
0.1.0 - unique-runtime
0.9.12 - up-rpc
0.1.0
used by- fc-db
unique-runtime
0.9.12workspace↘ 68↖ 2depends on- 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 - 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 - hex-literal
0.3.3 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-inflation
0.1.0 - pallet-nonfungible
0.1.0 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.1.0 - 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.1.0 - pallet-unq-scheduler
0.1.0 - pallet-xcm
0.9.12 - parachain-info
0.1.0 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - scale-info
1.0.0 - serde
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-arithmetic
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - up-data-structs
0.1.0 - up-evm-mapping
0.1.0 - up-rpc
0.1.0 - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- cumulus-pallet-aura-ext
universal-hash
0.4.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05depends onused byunsigned-varint
0.5.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35used byunsigned-varint
0.6.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2used byunsigned-varint
0.7.0crates.io↘ 4↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7funtrusted
0.7.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aup-data-structs
0.1.0workspace↘ 9↖ 9depends onup-evm-mapping
0.1.0workspace↘ 2↖ 4up-rpc
0.1.0workspace↘ 7↖ 3up-sponsorship
0.1.0github.com/UniqueNetwork/pallet-sponsoring↘ 1↖ 6sourcegit+https://github.com/UniqueNetwork/pallet-sponsoring#ab8b91e9350a31133f3a3e4f52a84c6de4108e95depends onurl
1.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355aurl
2.2.2crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578cvalue-bag
1.0.0-alpha.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263fdepends onused byvcpkg
0.2.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaccd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426used byvec_map
0.8.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191used byversion_check
0.9.3crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fevoid
1.0.2crates.io↘ 0↖ 8sourceregistry+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↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasm-bindgen
0.2.78crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fcedepends onwasm-bindgen-backend
0.2.78crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837bdepends onwasm-bindgen-futures
0.4.28crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39wasm-bindgen-macro
0.2.78crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9used bywasm-bindgen-macro-support
0.2.78crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5abused bywasm-gc-api
0.1.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9wasm-timer
0.2.5crates.io↘ 7↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onwasmi
0.9.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795ddepends onwasmi-validation
0.4.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum165343ecd6c018fc09ebcae280752702c9a2ef3e6f8d02f1cfcbdb53ef6d7937depends onwasmparser
0.80.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6bwasmtime
0.30.0crates.io↘ 24↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum899b1e5261e3d3420860dacfb952871ace9d7ba9f953b314f67aaf9f8e2a4d89depends on- anyhow
1.0.44 - backtrace
0.3.63 - bincode
1.3.3 - cfg-if
1.0.0 - cpp_demangle
0.3.3 - indexmap
1.7.0 - lazy_static
1.4.0 - libc
0.2.106 - log
0.4.14 - object
0.26.2 - paste
1.0.5 - psm
0.1.16 - rayon
1.5.1 - region
2.2.0 - rustc-demangle
0.1.21 - serde
1.0.130 - target-lexicon
0.12.2 - wasmparser
0.80.2 - wasmtime-cache
0.30.0 - wasmtime-cranelift
0.30.0 - wasmtime-environ
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - winapi
0.3.9
- anyhow
wasmtime-cache
0.30.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2493b81d7a9935f7af15e06beec806f256bc974a90a843685f3d61f2fc97058depends onused bywasmtime-cranelift
0.30.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99706bacdf5143f7f967d417f0437cce83a724cf4518cb1a3ff40e519d793021depends onused bywasmtime-environ
0.30.0crates.io↘ 13↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac42cb562a2f98163857605f02581d719a410c5abe93606128c59a10e84de85bdepends onwasmtime-jit
0.30.0crates.io↘ 17↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24f46dd757225f29a419be415ea6fb8558df9b0194f07e3a6a9c99d0e14dd534depends onused bywasmtime-runtime
0.30.0crates.io↘ 16↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0122215a44923f395487048cb0a1d60b5b32c73aab15cf9364b798dbaff0996fdepends onwasmtime-types
0.30.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf9b01caf8a204ef634ebac99700e77ba716d3ebbb68a1abbc2ceb6b16dbec9e4web-sys
0.3.55crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fbdepends onwebpki
0.21.4crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4eadepends onwebpki-roots
0.21.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940depends onused bywepoll-ffi
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fbdepends onused bywestend-runtime
0.9.12github.com/paritytech/polkadot↘ 77↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends on- beefy-primitives
4.0.0-dev - bitvec
0.20.4 - 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.3 - log
0.4.14 - 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-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-primitives
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
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.12 - pallet-xcm-benchmarks
0.9.8 - parity-scale-codec
2.3.1 - polkadot-parachain
0.9.12 - polkadot-primitives
0.9.12 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - rustc-hex
2.1.0 - scale-info
1.0.0 - serde
1.0.130 - serde_derive
1.0.130 - smallvec
1.7.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-version
4.0.0-dev - substrate-wasm-builder
5.0.0-dev - xcm
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
used by- beefy-primitives
which
4.2.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9depends onused bywidestring
0.4.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7cused bywinapi
0.2.8crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087awinapi
0.3.9crates.io↘ 2↖ 43sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.11.0 - ansi_term
0.12.1 - async-io
1.6.0 - async-process
1.2.0 - atty
0.2.14 - chrono
0.4.19 - dirs-sys
0.3.6 - dirs-sys-next
0.1.2 - errno
0.2.8 - fs-swap
0.2.6 - fs2
0.4.3 - hostname
0.3.1 - if-addrs
0.6.6 - if-watch
0.2.2 - ipconfig
0.2.2 - libloading
0.5.2 - libloading
0.7.1 - mio
0.7.14 - miow
0.3.7 - net2
0.2.37 - ntapi
0.3.6 - parity-tokio-ipc
0.9.0 - parity-util-mem
0.10.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.5 - polling
2.1.0 - region
2.2.0 - remove_dir_all
0.5.3 - ring
0.16.20 - rpassword
5.0.1 - schannel
0.1.19 - socket2
0.3.19 - socket2
0.4.2 - tempfile
3.2.0 - time
0.1.44 - tokio
1.13.0 - walkdir
2.3.2 - wasmtime
0.30.0 - wasmtime-cache
0.30.0 - wasmtime-jit
0.30.0 - wasmtime-runtime
0.30.0 - winapi-util
0.1.5 - winreg
0.6.2
- ansi_term
winapi-build
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bcwinapi-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 bywinreg
0.6.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9depends onused byws2_32-sys
0.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5edepends onused bywyz
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214used byx25519-dalek
1.1.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byxcm
0.9.12github.com/paritytech/polkadot↘ 6↖ 16sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused by- 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 - kusama-runtime
0.9.12 - pallet-xcm
0.9.12 - pallet-xcm-benchmarks
0.9.8 - polkadot-runtime-common
0.9.12 - polkadot-runtime-parachains
0.9.12 - polkadot-test-runtime
0.9.12 - rococo-runtime
0.9.12 - unique-runtime
0.9.12 - westend-runtime
0.9.12 - xcm-builder
0.9.12 - xcm-executor
0.9.12
- cumulus-pallet-dmp-queue
xcm-builder
0.9.12github.com/paritytech/polkadot↘ 13↖ 5sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onxcm-executor
0.9.12github.com/paritytech/polkadot↘ 11↖ 11sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onxcm-procedural
0.1.0github.com/paritytech/polkadot↘ 3↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.12#5feed981cf0fe671447eabaa9c0d235a8dd0003edepends onused byyamux
0.9.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107used byyansi
0.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71used byzeroize
1.4.2crates.io↘ 1↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf68b08513768deaa790264a7fac27a58cbf2705cfcdc9448362229217d7e970depends onzeroize_derive
1.2.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdff2024a851a322b08f179173ae2ba620445aef1e838f0c196820eade4ae0c7used byzstd
0.9.0+zstd.1.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07749a5dc2cb6b36661290245e350f15ec3bbb304e493db54a1d354480522ccddepends onzstd-safe
4.1.1+zstd.1.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc91c90f2c593b003603e5e0493c837088df4469da25aafff8bce42ba48caf079depends onused byzstd-sys
1.6.1+zstd.1.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum615120c7a2431d16cf1cf979e7fc31ba7a5b5e5707b29c8a99e5dbf8a8392a33depends onused by
Dockerfile-parachaindiffbeforeafterboth--- a/Dockerfile-parachain
+++ b/Dockerfile-parachain
@@ -5,7 +5,7 @@
ARG RUST_TOOLCHAIN=nightly-2021-11-11
#ARG RUST_C=1.55.0-nightly
ARG POLKA_VERSION=v0.9.12
-ARG NFT_BRANCH=develop
+ARG UNIQUE_BRANCH=develop
#ARG USER=***
#ARG PASS=***
@@ -14,13 +14,13 @@
ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
#ENV RUST_C $RUST_C
ENV POLKA_VERSION $POLKA_VERSION
-ENV NFT_BRANCH $NFT_BRANCH
+ENV UNIQUE_BRANCH $UNIQUE_BRANCH
#RUN echo $RUST_TOOLCHAIN
#RUN echo $RUST_C
#RUN echo $POLKA_VERSION
-#RUN echo $NFT_BRANCH
+#RUN echo $UNIQUE_BRANCH
ENV CARGO_HOME="/cargo-home"
ENV PATH="/cargo-home/bin:$PATH"
@@ -40,8 +40,8 @@
RUN cargo install cargo-chef
-RUN mkdir nft_parachain
-WORKDIR /nft_parachain
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
# ===== Chef =====
FROM rust-builder as chef
@@ -52,10 +52,10 @@
# ===== BUILD ======
FROM rust-builder as builder
-RUN mkdir nft_parachain
-WORKDIR /nft_parachain
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
-COPY --from=chef /nft_parachain/recipe.json recipe.json
+COPY --from=chef /unique_parachain/recipe.json recipe.json
ARG PROFILE=release
RUN cargo chef cook "--$PROFILE" --recipe-path recipe.json
@@ -67,8 +67,8 @@
# ===== BUILD POLKADOT =====
FROM rust-builder as builder-polkadot
-RUN mkdir nft_parachain
-WORKDIR /nft_parachain
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
RUN git clone -b $POLKA_VERSION --depth 1 https://github.com/paritytech/polkadot.git && \
cd polkadot && \
@@ -98,8 +98,8 @@
npm install --global yarn && \
yarn
-COPY --from=builder /nft_parachain/target/$PROFILE/nft /unique-chain/target/$PROFILE/
-COPY --from=builder-polkadot /nft_parachain/polkadot/target/$PROFILE/polkadot /polkadot/target/$PROFILE/
+COPY --from=builder /unique_parachain/target/$PROFILE/unique-collator /unique-chain/target/$PROFILE/
+COPY --from=builder-polkadot /unique_parachain/polkadot/target/$PROFILE/polkadot /polkadot/target/$PROFILE/
CMD export NVM_DIR="$HOME/.nvm" && \
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
@echo "evm_stubs - recompile contract stubs"
@echo "bench - run frame-benchmarking"
@echo " bench-evm-migration"
- @echo " bench-nft"
+ @echo " bench-unique"
.PHONY: regenerate_solidity
regenerate_solidity:
@@ -41,9 +41,9 @@
bench-evm-migration:
make _bench PALLET=evm-migration
-.PHONY: bench-nft
-bench-nft:
- make _bench PALLET=nft
+.PHONY: bench-unique
+bench-unique:
+ make _bench PALLET=unique
.PHONY: bench-fungible
bench-fungible:
@@ -58,4 +58,4 @@
make _bench PALLET=nonfungible
.PHONY: bench
-bench: bench-evm-migration bench-nft bench-fungible bench-refungible bench-nonfungible
+bench: bench-evm-migration bench-unique bench-fungible bench-refungible bench-nonfungible
README.mddiffbeforeafterboth--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@

-# NFT Parachain
+# Unique Parachain
## Project Description
-The NFT Pallet is the core of NFT functionality. Like ERC-721 standard in Ethereum ecosystem, this pallet provides the
+The Unique Pallet is the core of NFT functionality. Like ERC-721 standard in Ethereum ecosystem, this pallet provides the
basement for creating collections of unique non-divisible things, also called Non Fungible Tokens (NFTs), minting NFT of
a given Collection, and managing their ownership.
@@ -12,19 +12,19 @@
concrete application that operates a Collection, so purposefully the NFT Tracking Module does not have any knowledge
about properties except their byte size leaving application logic out to be controlled by Smart Contracts.
-The NFT Chain also provides:
+The Unique Chain also provides:
-- Smart Contracts Pallet and example smart contract that interacts with NFT Runtime
+- Smart Contracts Pallet and example smart contract that interacts with Unique Runtime
- ERC-1155 Functionality (currently PoC as Re-Fungible tokens, i.e. items that are still unique, but that can be split
between multiple users)
- Variety of economic options for dapp producers to choose from to create freemium games and other ways to attract
users. As a step one, we implemented an economic model when a collection sponsor can be set to pay for collection
Transfer transactions.
-Wider NFT Ecosystem (most of it was developed during Hackusama):
+Wider Unique Ecosystem (most of it was developed during Hackusama):
- [SubstraPunks Game hosted on IPFS](https://github.com/usetech-llc/substrapunks)
-- [NFT Wallet and UI](https://uniqueapps.usetech.com/#/nft)
+- [Unique Wallet and UI](https://uniqueapps.usetech.com/#/nft)
- [NFT Asset for Unity Framework](https://github.com/usetech-llc/nft_unity)
Please see our [walk-thorugh instructions](doc/hackusama_walk_through.md) to try everything out!
@@ -34,15 +34,15 @@
During the Kusama Hackaphon the following changes were made:
- Enabled Smart Contracts Pallet
-- Enabled integration between Smart Contracts and NFT Pallet (required special edition of RC4 Substrate version)
-- Fixed misc. bugs in NFT Pallet
-- Deployed NFT TestNet. Public node available at wss://unique.usetech.com, custom UI types - see below in this README.
+- Enabled integration between Smart Contracts and Unique Pallet (required special edition of RC4 Substrate version)
+- Fixed misc. bugs in Unique Pallet
+- Deployed Unique TestNet. Public node available at wss://unique.usetech.com, custom UI types - see below in this README.
- New Features:
- Re-Fungible Token Mode
- Off-Chain Schema to store token image URLs
- Alternative economic model
- Allow Lists and Public Mint Permission
-- Use example: [SubstraPunks Game](https://github.com/usetech-llc/substrapunks), fully hosted on IPFS and NFT Testnet
+- Use example: [SubstraPunks Game](https://github.com/usetech-llc/substrapunks), fully hosted on IPFS and Unique Testnet
Blockchain.
## Application Development
@@ -51,7 +51,7 @@
## Building
-Building NFT chain requires special versions of Rust and toolchain. We don't use the most recent versions of everything
+Building Unique chain requires special versions of Rust and toolchain. We don't use the most recent versions of everything
so that we can keep the builds stable.
1. Install Rust:
@@ -168,12 +168,12 @@
```
-3. Export genesis state and runtime wasm from NFT parachain:
+3. Export genesis state and runtime wasm from Unique parachain:
Run from this project root:
```
-./target/release/nft export-genesis-state --parachain-id 2000 > ./resources/para-2000-genesis
-./target/release/nft export-genesis-wasm > ./resources/para-2000-wasm
+./target/release/unique-collator export-genesis-state --parachain-id 2000 > ./resources/para-2000-genesis
+./target/release/unique-collator export-genesis-wasm > ./resources/para-2000-wasm
```
4. Run two parachain nodes:
@@ -182,8 +182,8 @@
Run from this project root:
```
-./target/release/nft --alice --collator --force-authoring --base-path ./tmp/parachain-alice --parachain-id 2000 --port 40333 --ws-port 9844 -- --execution wasm --chain ../polkadot/rococo-custom-4.json --port 30343 --ws-port 9977
-./target/release/nft --bob --collator --force-authoring --parachain-id 2000 --base-path ./tmp/parachain/bob --port 40334 --ws-port 9845 -- --execution wasm --chain ../polkadot/rococo-custom-4.json --port 30344 --ws-port 9978 --bootnodes /ip4/127.0.0.1/tcp/50556/p2p/12D3KooWN1ah2bFQSysEFnwZqcmcVpDDR8UedXyo6xfzV1zDNMNg
+./target/release/unique-collator --alice --collator --force-authoring --base-path ./tmp/parachain-alice --parachain-id 2000 --port 40333 --ws-port 9844 -- --execution wasm --chain ../polkadot/rococo-custom-4.json --port 30343 --ws-port 9977
+./target/release/unique-collator --bob --collator --force-authoring --parachain-id 2000 --base-path ./tmp/parachain/bob --port 40334 --ws-port 9845 -- --execution wasm --chain ../polkadot/rococo-custom-4.json --port 30344 --ws-port 9978 --bootnodes /ip4/127.0.0.1/tcp/50556/p2p/12D3KooWN1ah2bFQSysEFnwZqcmcVpDDR8UedXyo6xfzV1zDNMNg
```
4. Reserve parachain ID as described here: https://substrate.dev/cumulus-workshop/#/en/2-relay-chain/2-reserve
@@ -218,7 +218,7 @@
Run benchmark
```bash
-target/release/nft benchmark --chain dev --pallet "pallet_nft" --extrinsic "*" --repeat 1
+target/release/unique-collator benchmark --chain dev --pallet "pallet_unique" --extrinsic "*" --repeat 1
```
## UI custom types
client/rpc/Cargo.tomldiffbeforeafterboth--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -5,7 +5,7 @@
[dependencies]
pallet-common = { default-features = false, path = '../../pallets/common' }
-nft-data-structs = { default-features = false, path = '../../primitives/nft' }
+up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
up-rpc = { path = "../../primitives/rpc" }
codec = { package = "parity-scale-codec", version = "2.0.0" }
jsonrpc-core = "18.0.0"
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -3,21 +3,21 @@
use codec::Decode;
use jsonrpc_core::{Error as RpcError, ErrorCode, Result};
use jsonrpc_derive::rpc;
-use nft_data_structs::{Collection, CollectionId, CollectionStats, TokenId};
+use up_data_structs::{Collection, CollectionId, CollectionStats, TokenId};
use sp_api::{BlockId, BlockT, ProvideRuntimeApi};
use sp_blockchain::HeaderBackend;
-use up_rpc::NftApi as NftRuntimeApi;
+use up_rpc::UniqueApi as UniqueRuntimeApi;
#[rpc]
-pub trait NftApi<BlockHash, CrossAccountId, AccountId> {
- #[rpc(name = "nft_accountTokens")]
+pub trait UniqueApi<BlockHash, CrossAccountId, AccountId> {
+ #[rpc(name = "unique_accountTokens")]
fn account_tokens(
&self,
collection: CollectionId,
account: CrossAccountId,
at: Option<BlockHash>,
) -> Result<Vec<TokenId>>;
- #[rpc(name = "nft_tokenExists")]
+ #[rpc(name = "unique_tokenExists")]
fn token_exists(
&self,
collection: CollectionId,
@@ -25,21 +25,21 @@
at: Option<BlockHash>,
) -> Result<bool>;
- #[rpc(name = "nft_tokenOwner")]
+ #[rpc(name = "unique_tokenOwner")]
fn token_owner(
&self,
collection: CollectionId,
token: TokenId,
at: Option<BlockHash>,
) -> Result<CrossAccountId>;
- #[rpc(name = "nft_constMetadata")]
+ #[rpc(name = "unique_constMetadata")]
fn const_metadata(
&self,
collection: CollectionId,
token: TokenId,
at: Option<BlockHash>,
) -> Result<Vec<u8>>;
- #[rpc(name = "nft_variableMetadata")]
+ #[rpc(name = "unique_variableMetadata")]
fn variable_metadata(
&self,
collection: CollectionId,
@@ -47,16 +47,16 @@
at: Option<BlockHash>,
) -> Result<Vec<u8>>;
- #[rpc(name = "nft_collectionTokens")]
+ #[rpc(name = "unique_collectionTokens")]
fn collection_tokens(&self, collection: CollectionId, at: Option<BlockHash>) -> Result<u32>;
- #[rpc(name = "nft_accountBalance")]
+ #[rpc(name = "unique_accountBalance")]
fn account_balance(
&self,
collection: CollectionId,
account: CrossAccountId,
at: Option<BlockHash>,
) -> Result<u32>;
- #[rpc(name = "nft_balance")]
+ #[rpc(name = "unique_balance")]
fn balance(
&self,
collection: CollectionId,
@@ -64,7 +64,7 @@
token: TokenId,
at: Option<BlockHash>,
) -> Result<String>;
- #[rpc(name = "nft_allowance")]
+ #[rpc(name = "unique_allowance")]
fn allowance(
&self,
collection: CollectionId,
@@ -74,43 +74,43 @@
at: Option<BlockHash>,
) -> Result<String>;
- #[rpc(name = "nft_adminlist")]
+ #[rpc(name = "unique_adminlist")]
fn adminlist(
&self,
collection: CollectionId,
at: Option<BlockHash>,
) -> Result<Vec<CrossAccountId>>;
- #[rpc(name = "nft_allowlist")]
+ #[rpc(name = "unique_allowlist")]
fn allowlist(
&self,
collection: CollectionId,
at: Option<BlockHash>,
) -> Result<Vec<CrossAccountId>>;
- #[rpc(name = "nft_allowed")]
+ #[rpc(name = "unique_allowed")]
fn allowed(
&self,
collection: CollectionId,
user: CrossAccountId,
at: Option<BlockHash>,
) -> Result<bool>;
- #[rpc(name = "nft_lastTokenId")]
+ #[rpc(name = "unique_lastTokenId")]
fn last_token_id(&self, collection: CollectionId, at: Option<BlockHash>) -> Result<TokenId>;
- #[rpc(name = "nft_collectionById")]
+ #[rpc(name = "unique_collectionById")]
fn collection_by_id(
&self,
collection: CollectionId,
at: Option<BlockHash>,
) -> Result<Option<Collection<AccountId>>>;
- #[rpc(name = "nft_collectionStats")]
+ #[rpc(name = "unique_collectionStats")]
fn collection_stats(&self, at: Option<BlockHash>) -> Result<CollectionStats>;
}
-pub struct Nft<C, P> {
+pub struct Unique<C, P> {
client: Arc<C>,
_marker: std::marker::PhantomData<P>,
}
-impl<C, P> Nft<C, P> {
+impl<C, P> Unique<C, P> {
pub fn new(client: Arc<C>) -> Self {
Self {
client,
@@ -154,13 +154,13 @@
};
}
-impl<C, Block, CrossAccountId, AccountId> NftApi<<Block as BlockT>::Hash, CrossAccountId, AccountId>
- for Nft<C, Block>
+impl<C, Block, CrossAccountId, AccountId>
+ UniqueApi<<Block as BlockT>::Hash, CrossAccountId, AccountId> for Unique<C, Block>
where
Block: BlockT,
AccountId: Decode,
C: 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
- C::Api: NftRuntimeApi<Block, CrossAccountId, AccountId>,
+ C::Api: UniqueRuntimeApi<Block, CrossAccountId, AccountId>,
CrossAccountId: pallet_common::account::CrossAccountId<AccountId>,
{
pass_method!(account_tokens(collection: CollectionId, account: CrossAccountId) -> Vec<TokenId>);
docker-compose-tests-parachain.ymldiffbeforeafterboth--- a/docker-compose-tests-parachain.yml
+++ b/docker-compose-tests-parachain.yml
@@ -9,7 +9,7 @@
- RUST_TOOLCHAIN=${RUST_TOOLCHAIN:?err}
- RUST_C=${RUST_C:?err}
- POLKA_VERSION=${POLKA_VERSION:?err}
- - NFT_BRANCH=${NFT_BRANCH:?err}
+ - UNIQUE_BRANCH=${UNIQUE_BRANCH:?err}
volumes:
- ./launch-config.json:/polkadot-launch/launch-config.json
env_file:
@@ -22,7 +22,7 @@
environment:
RPC_URL: http://blockchain_nodes:9933/
volumes:
- - ./tests/src/config_docker.ts:/nft_parachain/src/config.ts
- - /home/ubuntu/mochawesome-report:/nft_parachain/mochawesome-report
+ - ./tests/src/config_docker.ts:/unique_parachain/src/config.ts
+ - /home/ubuntu/mochawesome-report:/unique_parachain/mochawesome-report
depends_on:
- blockchain_nodes
launch-config.jsondiffbeforeafterboth--- a/launch-config.json
+++ b/launch-config.json
@@ -55,7 +55,7 @@
},
"parachains": [
{
- "bin": "../unique-chain/target/release/nft",
+ "bin": "../unique-chain/target/release/unique-collator",
"id": "2000",
"balance": "1000000000000000000000",
"nodes": [
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -231,12 +231,11 @@
################################################################################
# Local dependencies
-[dependencies.nft-runtime]
+[dependencies.unique-runtime]
path = '../../runtime'
-version = '0.9.12'
-[dependencies.nft-data-structs]
-path = "../../primitives/nft"
+[dependencies.up-data-structs]
+path = "../../primitives/data-structs"
default-features = false
################################################################################
@@ -245,16 +244,17 @@
[package]
authors = ['Unique Network <support@uniquenetwork.io>']
build = 'build.rs'
-description = 'Substrate node nft'
+description = 'Unique Node'
edition = '2018'
homepage = 'https://unique.network'
license = 'All Rights Reserved'
-name = 'nft'
-repository = 'https://github.com/usetech-llc/nft_private/'
+name = 'unique-node'
+repository = 'https://github.com/UniqueNetwork/unique-chain'
version = '0.9.12'
[[bin]]
-name = 'nft'
+name = 'unique-collator'
+path = "src/main.rs"
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
@@ -276,11 +276,11 @@
fp-rpc = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
-nft-rpc = { path = "../rpc" }
+unique-rpc = { path = "../rpc" }
[features]
default = []
runtime-benchmarks = [
- 'nft-runtime/runtime-benchmarks',
+ 'unique-runtime/runtime-benchmarks',
'polkadot-service/runtime-benchmarks',
]
node/cli/src/chain_spec.rsdiffbeforeafterboth--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -4,7 +4,7 @@
//
use cumulus_primitives_core::ParaId;
-use nft_runtime::*;
+use unique_runtime::*;
use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};
use sc_service::ChainType;
use sp_core::{sr25519, Pair, Public};
@@ -15,7 +15,7 @@
use serde_json::map::Map;
/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.
-pub type ChainSpec = sc_service::GenericChainSpec<nft_runtime::GenesisConfig, Extensions>;
+pub type ChainSpec = sc_service::GenericChainSpec<unique_runtime::GenesisConfig, Extensions>;
/// Helper function to generate a crypto pair from seed
pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
@@ -203,8 +203,8 @@
id: ParaId,
) -> GenesisConfig {
GenesisConfig {
- system: nft_runtime::SystemConfig {
- code: nft_runtime::WASM_BINARY
+ system: unique_runtime::SystemConfig {
+ code: unique_runtime::WASM_BINARY
.expect("WASM binary was not build, please build it!")
.to_vec(),
changes_trie_config: Default::default(),
@@ -220,8 +220,8 @@
treasury: Default::default(),
sudo: SudoConfig { key: root_key },
vesting: VestingConfig { vesting: vec![] },
- parachain_info: nft_runtime::ParachainInfoConfig { parachain_id: id },
- aura: nft_runtime::AuraConfig {
+ parachain_info: unique_runtime::ParachainInfoConfig { parachain_id: id },
+ aura: unique_runtime::AuraConfig {
authorities: initial_authorities,
},
aura_ext: Default::default(),
node/cli/src/command.rsdiffbeforeafterboth--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -24,7 +24,7 @@
use cumulus_primitives_core::ParaId;
use cumulus_client_service::genesis::generate_genesis_block;
use log::info;
-use nft_runtime::Block;
+use unique_runtime::Block;
use polkadot_parachain::primitives::AccountIdConversion;
use sc_cli::{
ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams,
@@ -89,7 +89,7 @@
}
fn native_runtime_version(_: &Box<dyn ChainSpec>) -> &'static RuntimeVersion {
- &nft_runtime::VERSION
+ &unique_runtime::VERSION
}
}
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -13,7 +13,7 @@
use futures::StreamExt;
// Local Runtime Types
-use nft_runtime::RuntimeApi;
+use unique_runtime::RuntimeApi;
// Cumulus Imports
use cumulus_client_consensus_aura::{build_aura_consensus, BuildAuraConsensusParams, SlotProportion};
@@ -54,11 +54,11 @@
type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions;
fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> {
- nft_runtime::api::dispatch(method, data)
+ unique_runtime::api::dispatch(method, data)
}
fn native_version() -> sc_executor::NativeVersion {
- nft_runtime::native_version()
+ unique_runtime::native_version()
}
}
@@ -68,7 +68,7 @@
.as_ref()
.map(|base_path| base_path.config_dir(config.chain_spec.id()))
.unwrap_or_else(|| {
- BasePath::from_project("", "", "nft").config_dir(config.chain_spec.id())
+ BasePath::from_project("", "", "unique").config_dir(config.chain_spec.id())
});
let database_dir = config_dir.join("frontier").join("db");
@@ -291,7 +291,7 @@
let rpc_frontier_backend = frontier_backend.clone();
let rpc_extensions_builder = Box::new(move |deny_unsafe, _| {
- let full_deps = nft_rpc::FullDeps {
+ let full_deps = unique_rpc::FullDeps {
backend: rpc_frontier_backend.clone(),
deny_unsafe,
client: rpc_client.clone(),
@@ -307,7 +307,7 @@
max_past_logs: 10000,
};
- Ok(nft_rpc::create_full::<_, _, _, _, RuntimeApi, _>(
+ Ok(unique_rpc::create_full::<_, _, _, _, RuntimeApi, _>(
full_deps,
subscription_executor.clone(),
))
node/rpc/Cargo.tomldiffbeforeafterboth--- a/node/rpc/Cargo.toml
+++ b/node/rpc/Cargo.toml
@@ -1,6 +1,6 @@
[package]
-name = "nft-rpc"
-version = "3.3.1"
+name = "unique-rpc"
+version = "0.1.0"
authors = ['Unique Network <support@uniquenetwork.io>']
license = 'All Rights Reserved'
edition = "2021"
@@ -48,10 +48,10 @@
fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
fc-mapping-sync = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
-pallet-nft = { path = "../../pallets/nft" }
+pallet-unique = { path = "../../pallets/unique" }
uc-rpc = { path = "../../client/rpc" }
up-rpc = { path = "../../primitives/rpc" }
-nft-runtime = { path = "../../runtime" }
+unique-runtime = { path = "../../runtime" }
[features]
std = []
node/rpc/src/lib.rsdiffbeforeafterboth--- a/node/rpc/src/lib.rs
+++ b/node/rpc/src/lib.rs
@@ -1,4 +1,4 @@
-use nft_runtime::{Hash, AccountId, CrossAccountId, Index, opaque::Block, BlockNumber, Balance};
+use unique_runtime::{Hash, AccountId, CrossAccountId, Index, opaque::Block, BlockNumber, Balance};
use fc_rpc::{
EthBlockDataCache, OverrideHandle, RuntimeApiStorageOverride, SchemaV1Override, StorageOverride,
};
@@ -100,10 +100,10 @@
where
Block: sp_api::BlockT,
C: ProvideRuntimeApi<Block>,
- C::Api: up_rpc::NftApi<Block, CrossAccountId, AccountId>,
+ C::Api: up_rpc::UniqueApi<Block, CrossAccountId, AccountId>,
{
fn code(&self, block: &sp_api::BlockId<Block>, account: sp_core::H160) -> Option<Vec<u8>> {
- use up_rpc::NftApi;
+ use up_rpc::UniqueApi;
self.client
.runtime_api()
.eth_contract_code(block, account)
@@ -127,7 +127,7 @@
// C::Api: pallet_contracts_rpc::ContractsRuntimeApi<Block, AccountId, Balance, BlockNumber, Hash>,
C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
C::Api: fp_rpc::EthereumRuntimeRPCApi<Block>,
- C::Api: up_rpc::NftApi<Block, CrossAccountId, AccountId>,
+ C::Api: up_rpc::UniqueApi<Block, CrossAccountId, AccountId>,
B: sc_client_api::Backend<Block> + Send + Sync + 'static,
B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,
SC: SelectChain<Block> + 'static,
@@ -139,7 +139,7 @@
EthPubSubApiServer, EthSigner, HexEncodedIdProvider, NetApi, NetApiServer, Web3Api,
Web3ApiServer,
};
- use uc_rpc::{NftApi, Nft};
+ use uc_rpc::{UniqueApi, Unique};
// use pallet_contracts_rpc::{Contracts, ContractsApi};
use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi};
use substrate_frame_rpc_system::{FullSystem, SystemApi};
@@ -195,7 +195,7 @@
client.clone(),
pool.clone(),
graph,
- nft_runtime::TransactionConverter,
+ unique_runtime::TransactionConverter,
network.clone(),
signers,
overrides.clone(),
@@ -204,7 +204,7 @@
max_past_logs,
block_data_cache.clone(),
)));
- io.extend_with(NftApi::to_delegate(Nft::new(client.clone())));
+ io.extend_with(UniqueApi::to_delegate(Unique::new(client.clone())));
if let Some(filter_pool) = filter_pool {
io.extend_with(EthFilterApiServer::to_delegate(EthFilterApi::new(
pallets/common/Cargo.tomldiffbeforeafterboth--- a/pallets/common/Cargo.toml
+++ b/pallets/common/Cargo.toml
@@ -16,7 +16,7 @@
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
up-evm-mapping = { default-features = false, path = '../../primitives/evm-mapping' }
-nft-data-structs = { default-features = false, path = '../../primitives/nft' }
+up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
@@ -33,7 +33,7 @@
"sp-runtime/std",
"sp-std/std",
"up-evm-mapping/std",
- "nft-data-structs/std",
+ "up-data-structs/std",
"pallet-evm/std",
]
runtime-benchmarks = []
pallets/common/src/account.rsdiffbeforeafterboth--- a/pallets/common/src/account.rs
+++ b/pallets/common/src/account.rs
@@ -7,7 +7,7 @@
use pallet_evm::AddressMapping;
use sp_std::vec::Vec;
use sp_std::clone::Clone;
-use up_evm_mapping::EvmBackwardsAddressMapping;
+pub use up_evm_mapping::EvmBackwardsAddressMapping;
pub trait CrossAccountId<AccountId>:
Encode + EncodeLike + Decode + TypeInfo + Clone + PartialEq + Ord + core::fmt::Debug + Default
pallets/common/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/common/src/benchmarking.rs
+++ b/pallets/common/src/benchmarking.rs
@@ -1,6 +1,6 @@
use sp_std::vec::Vec;
use crate::{Config, CollectionHandle};
-use nft_data_structs::{
+use up_data_structs::{
CollectionMode, Collection, CollectionId, MAX_COLLECTION_NAME_LENGTH,
MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH, OFFCHAIN_SCHEMA_LIMIT,
VARIABLE_ON_CHAIN_SCHEMA_LIMIT, CONST_ON_CHAIN_SCHEMA_LIMIT,
pallets/common/src/eth.rsdiffbeforeafterboth--- a/pallets/common/src/eth.rs
+++ b/pallets/common/src/eth.rs
@@ -1,4 +1,4 @@
-use nft_data_structs::{CollectionId, TokenId};
+use up_data_structs::{CollectionId, TokenId};
use sp_core::H160;
// 0x17c4e6453Cc49AAAaEACA894e6D9683e00000001 - collection 1
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -10,7 +10,7 @@
traits::{Imbalance, Get, Currency},
};
use pallet_evm::GasWeightMapping;
-use nft_data_structs::{
+use up_data_structs::{
COLLECTION_NUMBER_LIMIT, Collection, CollectionId, CreateItemData, ExistenceRequirement,
MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_COLLECTION_NAME_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
COLLECTION_ADMINS_LIMIT, MetaUpdatePermission, Pays, PostDispatchInfo, TokenId, Weight,
@@ -143,7 +143,7 @@
use frame_support::{Blake2_128Concat, pallet_prelude::*, storage::Key};
use account::CrossAccountId;
use frame_support::traits::Currency;
- use nft_data_structs::TokenId;
+ use up_data_structs::TokenId;
use scale_info::TypeInfo;
#[pallet::config]
@@ -273,8 +273,8 @@
TotalCollectionsLimitExceeded,
/// variable_data exceeded data limit.
TokenVariableDataLimitExceeded,
- /// Exceeded max admin amount
- CollectionAdminAmountExceeded,
+ /// Exceeded max admin count
+ CollectionAdminCountExceeded,
/// Collection settings not allowing items transferring
TransferNotAllowed,
@@ -506,10 +506,10 @@
if admin {
let amount = amount
.checked_add(1)
- .ok_or(<Error<T>>::CollectionAdminAmountExceeded)?;
+ .ok_or(<Error<T>>::CollectionAdminCountExceeded)?;
ensure!(
amount <= Self::collection_admins_limit(),
- <Error<T>>::CollectionAdminAmountExceeded,
+ <Error<T>>::CollectionAdminCountExceeded,
);
// =========
pallets/evm-migration/src/weights.rsdiffbeforeafterboth--- a/pallets/evm-migration/src/weights.rs
+++ b/pallets/evm-migration/src/weights.rs
@@ -7,7 +7,7 @@
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128
// Executed Command:
-// target/release/nft
+// target/release/unique-collator
// benchmark
// --pallet
// pallet-evm-migration
pallets/fungible/Cargo.tomldiffbeforeafterboth--- a/pallets/fungible/Cargo.toml
+++ b/pallets/fungible/Cargo.toml
@@ -16,7 +16,7 @@
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
pallet-common = { default-features = false, path = '../common' }
-nft-data-structs = { default-features = false, path = '../../primitives/nft' }
+up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
ethereum = { version = "0.10.0", default-features = false }
@@ -32,7 +32,7 @@
"frame-system/std",
"sp-runtime/std",
"sp-std/std",
- "nft-data-structs/std",
+ "up-data-structs/std",
"pallet-common/std",
"evm-coder/std",
"ethereum/std",
pallets/fungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/fungible/src/benchmarking.rs
+++ b/pallets/fungible/src/benchmarking.rs
@@ -4,7 +4,7 @@
use sp_std::prelude::*;
use pallet_common::benchmarking::create_collection_raw;
use frame_benchmarking::{benchmarks, account};
-use nft_data_structs::{CollectionMode};
+use up_data_structs::{CollectionMode};
use pallet_common::bench_init;
const SEED: u32 = 1;
pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -1,7 +1,7 @@
use core::marker::PhantomData;
use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight};
-use nft_data_structs::TokenId;
+use up_data_structs::TokenId;
use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
use sp_runtime::ArithmeticError;
use sp_std::{vec::Vec, vec};
@@ -51,10 +51,10 @@
&self,
sender: T::CrossAccountId,
to: T::CrossAccountId,
- data: nft_data_structs::CreateItemData,
+ data: up_data_structs::CreateItemData,
) -> DispatchResultWithPostInfo {
match data {
- nft_data_structs::CreateItemData::Fungible(data) => with_weight(
+ up_data_structs::CreateItemData::Fungible(data) => with_weight(
<Pallet<T>>::create_item(self, &sender, (to, data.value)),
<CommonWeights<T>>::create_item(),
),
@@ -66,12 +66,12 @@
&self,
sender: T::CrossAccountId,
to: T::CrossAccountId,
- data: Vec<nft_data_structs::CreateItemData>,
+ data: Vec<up_data_structs::CreateItemData>,
) -> DispatchResultWithPostInfo {
let mut sum: u128 = 0;
for data in data {
match data {
- nft_data_structs::CreateItemData::Fungible(data) => {
+ up_data_structs::CreateItemData::Fungible(data) => {
sum = sum
.checked_add(data.value)
.ok_or(ArithmeticError::Overflow)?;
@@ -182,7 +182,7 @@
_token: TokenId,
_data: Vec<u8>,
) -> DispatchResultWithPostInfo {
- fail!(<Error<T>>::FungibleItemsHaveData)
+ fail!(<Error<T>>::FungibleItemsDontHaveData)
}
fn account_tokens(&self, account: T::CrossAccountId) -> Vec<TokenId> {
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -1,7 +1,7 @@
use core::char::{REPLACEMENT_CHARACTER, decode_utf16};
use core::convert::TryInto;
use evm_coder::{ToLog, execution::*, generate_stubgen, solidity_interface, types::*, weight};
-use nft_data_structs::CollectionMode;
+use up_data_structs::CollectionMode;
use pallet_common::erc::{CommonEvmHandler, PrecompileResult};
use sp_core::{H160, U256};
use sp_std::vec::Vec;
pallets/fungible/src/lib.rsdiffbeforeafterboth--- a/pallets/fungible/src/lib.rs
+++ b/pallets/fungible/src/lib.rs
@@ -2,7 +2,7 @@
use core::ops::Deref;
use frame_support::{ensure};
-use nft_data_structs::{AccessMode, Collection, CollectionId, TokenId};
+use up_data_structs::{AccessMode, Collection, CollectionId, TokenId};
use pallet_common::{
Error as CommonError, Event as CommonEvent, Pallet as PalletCommon, account::CrossAccountId,
};
@@ -26,7 +26,7 @@
#[frame_support::pallet]
pub mod pallet {
use frame_support::{Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key};
- use nft_data_structs::CollectionId;
+ use up_data_structs::CollectionId;
use super::weights::WeightInfo;
#[pallet::error]
@@ -36,7 +36,7 @@
/// Not default id passed as TokenId argument
FungibleItemsHaveNoId,
/// Tried to set data for fungible item
- FungibleItemsHaveData,
+ FungibleItemsDontHaveData,
}
#[pallet::config]
@@ -49,7 +49,7 @@
pub struct Pallet<T>(_);
#[pallet::storage]
- pub(super) type TotalSupply<T: Config> =
+ pub type TotalSupply<T: Config> =
StorageMap<Hasher = Twox64Concat, Key = CollectionId, Value = u128, QueryKind = ValueQuery>;
#[pallet::storage]
@@ -63,7 +63,7 @@
>;
#[pallet::storage]
- pub(super) type Allowance<T: Config> = StorageNMap<
+ pub type Allowance<T: Config> = StorageNMap<
Key = (
Key<Twox64Concat, CollectionId>,
Key<Blake2_128, T::CrossAccountId>,
@@ -280,7 +280,11 @@
spender: &T::CrossAccountId,
amount: u128,
) {
- <Allowance<T>>::insert((collection.id, owner, spender), amount);
+ if amount == 0 {
+ <Allowance<T>>::remove((collection.id, owner, spender));
+ } else {
+ <Allowance<T>>::insert((collection.id, owner, spender), amount);
+ }
collection.log(ERC20Events::Approval {
owner: *owner.as_eth(),
pallets/fungible/src/weights.rsdiffbeforeafterboth--- a/pallets/fungible/src/weights.rs
+++ b/pallets/fungible/src/weights.rs
@@ -7,7 +7,7 @@
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128
// Executed Command:
-// target/release/nft
+// target/release/unique-collator
// benchmark
// --pallet
// pallet-fungible
pallets/inflation/Cargo.tomldiffbeforeafterboth--- a/pallets/inflation/Cargo.toml
+++ b/pallets/inflation/Cargo.toml
@@ -3,13 +3,13 @@
[package]
authors = ['Unique Network <support@uniquenetwork.io>']
-description = 'Substrate node nft'
+description = 'Unique Inflation Pallet'
edition = '2018'
homepage = 'https://unique.network'
license = 'All Rights Reserved'
name = 'pallet-inflation'
-repository = 'https://github.com/usetech-llc/nft_private/'
-version = '3.0.0'
+repository = 'https://github.com/UniqueNetwork/unique-chain'
+version = '0.1.0'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
pallets/inflation/src/lib.rsdiffbeforeafterboth--- a/pallets/inflation/src/lib.rs
+++ b/pallets/inflation/src/lib.rs
@@ -46,7 +46,8 @@
pub type BalanceOf<T> =
<<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;
-pub const YEAR: u32 = 5_259_600;
+// pub const YEAR: u32 = 5_259_600; // 6-second block
+pub const YEAR: u32 = 2_629_800; // 12-second block
pub const TOTAL_YEARS_UNTIL_FLAT: u32 = 9;
pub const START_INFLATION_PERCENT: u32 = 10;
pub const END_INFLATION_PERCENT: u32 = 4;
pallets/inflation/src/tests.rsdiffbeforeafterboth--- a/pallets/inflation/src/tests.rs
+++ b/pallets/inflation/src/tests.rs
@@ -18,7 +18,7 @@
type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
type Block = frame_system::mocking::MockBlock<Test>;
-const YEAR: u64 = 5_259_600;
+const YEAR: u64 = 2_629_800;
parameter_types! {
pub const ExistentialDeposit: u64 = 1;
@@ -112,8 +112,8 @@
// first inflation deposit should be equal to BlockInflation
Inflation::on_initialize(1);
- // SBP M2 review: Verify expected block inflation for year 1
- assert_eq!(Inflation::block_inflation(), 1901);
+ // Expected 100-block inflation for year 1 is 100 * 100_000_000 / YEAR = 3803
+ assert_eq!(Inflation::block_inflation(), 3803);
assert_eq!(
Balances::free_balance(1234) - initial_issuance,
Inflation::block_inflation()
@@ -158,26 +158,21 @@
let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
assert_eq!(Balances::free_balance(1234), initial_issuance);
Inflation::on_initialize(1);
- let block_inflation_year_0 = Inflation::block_inflation();
- // SBP M2 review: go through all the block inflations for year 1,
+ // Go through all the block inflations for year 1,
// total issuance will be updated accordingly
for block in (100..YEAR).step_by(100) {
Inflation::on_initialize(block);
}
assert_eq!(
- initial_issuance + (1901 * (YEAR / 100)),
+ initial_issuance + (3803 * (YEAR / 100)),
<Balances as Currency<_>>::total_issuance()
);
Inflation::on_initialize(YEAR);
let block_inflation_year_1 = Inflation::block_inflation();
- // SBP M2 review: Verify expected block inflation for year 2
- assert_eq!(block_inflation_year_1, 1952);
-
- // SBP M2 review: this is actually not true
- // Assert that year 1 inflation is less than year 0
- // assert!(block_inflation_year_0 > block_inflation_year_1);
+ // Expected 100-block inflation for year 2: 100 * 9.33% * initial issuance * 110% / YEAR = 3904
+ assert_eq!(block_inflation_year_1, 3904);
});
}
pallets/nft/Cargo.tomldiffbeforeafterboth--- a/pallets/nft/Cargo.toml
+++ /dev/null
@@ -1,154 +0,0 @@
-################################################################################
-# Package
-
-[package]
-authors = ['Unique Network <support@uniquenetwork.io>']
-description = 'Substrate node nft'
-edition = '2018'
-homepage = 'https://unique.network'
-license = 'All Rights Reserved'
-name = 'pallet-nft'
-repository = 'https://github.com/usetech-llc/nft_private/'
-version = '3.0.0'
-
-[package.metadata.docs.rs]
-targets = ['x86_64-unknown-linux-gnu']
-
-[features]
-default = ['std']
-runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks']
-std = [
- 'codec/std',
- 'serde/std',
- 'frame-support/std',
- 'frame-system/std',
- 'pallet-balances/std',
- 'pallet-evm/std',
- 'pallet-timestamp/std',
- 'pallet-randomness-collective-flip/std',
- 'pallet-transaction-payment/std',
- 'pallet-common/std',
- 'pallet-fungible/std',
- 'pallet-nonfungible/std',
- 'pallet-refungible/std',
- 'fp-evm/std',
- 'nft-data-structs/std',
- 'up-sponsorship/std',
- 'up-evm-mapping/std',
- 'sp-std/std',
- 'sp-api/std',
- 'sp-runtime/std',
- 'frame-benchmarking/std',
- 'ethereum/std',
- 'rlp/std',
-
- 'primitive-types/std',
- 'evm-coder/std',
- 'pallet-evm-coder-substrate/std',
-]
-limit-testing = ["nft-data-structs/limit-testing"]
-
-################################################################################
-# Substrate Dependencies
-
-[dependencies.codec]
-default-features = false
-features = ['derive']
-package = 'parity-scale-codec'
-version = '2.3.0'
-
-[dependencies.frame-benchmarking]
-default-features = false
-optional = true
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.frame-support]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.frame-system]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.pallet-balances]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.pallet-timestamp]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.pallet-randomness-collective-flip]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.sp-std]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.pallet-transaction-payment]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.serde]
-default-features = false
-features = ['derive']
-version = '1.0.130'
-
-[dependencies.sp-runtime]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.sp-core]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-[dependencies.sp-io]
-default-features = false
-git = 'https://github.com/paritytech/substrate.git'
-branch = 'polkadot-v0.9.12'
-
-
-################################################################################
-# Local Dependencies
-
-[dependencies.nft-data-structs]
-default-features = false
-path = '../../primitives/nft'
-version = '0.9.0'
-
-[dependencies]
-scale-info = { version = "1.0.0", default-features = false, features = [
- "derive",
-] }
-ethereum = { version = "0.10.0", default-features = false }
-rlp = { default-features = false, version = "0.5.0" }
-sp-api = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.12" }
-
-up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring" }
-up-evm-mapping = { default-features = false, path = "../../primitives/evm-mapping" }
-evm-coder = { default-features = false, path = "../../crates/evm-coder" }
-pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
-primitive-types = { version = "0.10.1", default-features = false, features = [
- "serde_no_std",
-] }
-
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
-fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
-hex-literal = "0.3.3"
-
-pallet-common = { default-features = false, path = "../common" }
-pallet-fungible = { default-features = false, path = "../fungible" }
-pallet-nonfungible = { default-features = false, path = "../nonfungible" }
-pallet-refungible = { default-features = false, path = "../refungible" }
pallets/nft/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nft/src/benchmarking.rs
+++ /dev/null
@@ -1,173 +0,0 @@
-#![cfg(feature = "runtime-benchmarks")]
-
-use super::*;
-use crate::Pallet;
-use frame_system::RawOrigin;
-use frame_benchmarking::{benchmarks, account};
-use nft_data_structs::*;
-use core::convert::TryInto;
-use sp_runtime::DispatchError;
-use pallet_common::benchmarking::{create_data, create_u16_data};
-
-const SEED: u32 = 1;
-
-fn create_collection_helper<T: Config>(
- owner: T::AccountId,
- mode: CollectionMode,
-) -> Result<CollectionId, DispatchError> {
- T::Currency::deposit_creating(&owner, T::CollectionCreationPrice::get());
- let col_name = create_u16_data(MAX_COLLECTION_NAME_LENGTH)
- .try_into()
- .unwrap();
- let col_desc = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH)
- .try_into()
- .unwrap();
- let token_prefix = create_data(MAX_TOKEN_PREFIX_LENGTH).try_into().unwrap();
- <Pallet<T>>::create_collection(
- RawOrigin::Signed(owner).into(),
- col_name,
- col_desc,
- token_prefix,
- mode,
- )?;
- Ok(<pallet_common::CreatedCollectionCount<T>>::get())
-}
-fn create_nft_collection<T: Config>(owner: T::AccountId) -> Result<CollectionId, DispatchError> {
- create_collection_helper::<T>(owner, CollectionMode::NFT)
-}
-
-benchmarks! {
-
- create_collection {
- let col_name: Vec<u16> = create_u16_data(MAX_COLLECTION_NAME_LENGTH);
- let col_desc: Vec<u16> = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH);
- let token_prefix: Vec<u8> = create_data(MAX_TOKEN_PREFIX_LENGTH);
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = account("caller", 0, SEED);
- T::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
- }: _(RawOrigin::Signed(caller.clone()), col_name.clone(), col_desc.clone(), token_prefix.clone(), mode)
- verify {
- assert_eq!(<pallet_common::CollectionById<T>>::get(CollectionId(1)).unwrap().owner, caller);
- }
-
- destroy_collection {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection)
-
- add_to_allow_list {
- let caller: T::AccountId = account("caller", 0, SEED);
- let allowlist_account: T::AccountId = account("admin", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))
-
- remove_from_allow_list {
- let caller: T::AccountId = account("caller", 0, SEED);
- let allowlist_account: T::AccountId = account("admin", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- <Pallet<T>>::add_to_allow_list(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(allowlist_account.clone()))?;
- }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))
-
- set_public_access_mode {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection, AccessMode::AllowList)
-
- set_mint_permission {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection, true)
-
- change_collection_owner {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- let new_owner: T::AccountId = account("admin", 0, SEED);
- }: _(RawOrigin::Signed(caller.clone()), collection, new_owner)
-
- add_collection_admin {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- let new_admin: T::AccountId = account("admin", 0, SEED);
- }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))
-
- remove_collection_admin {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- let new_admin: T::AccountId = account("admin", 0, SEED);
- <Pallet<T>>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(new_admin.clone()))?;
- }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))
-
- set_collection_sponsor {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection, caller.clone())
-
- confirm_sponsorship {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- <Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), collection, caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection)
-
- remove_collection_sponsor {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- <Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), collection, caller.clone())?;
- <Pallet<T>>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), collection)?;
- }: _(RawOrigin::Signed(caller.clone()), collection)
-
- set_transfers_enabled_flag {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection, false)
-
- set_offchain_schema {
- let b in 0..OFFCHAIN_SCHEMA_LIMIT;
-
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- let data = create_data(b as usize);
- }: set_offchain_schema(RawOrigin::Signed(caller.clone()), collection, data)
-
- set_const_on_chain_schema {
- let b in 0..CONST_ON_CHAIN_SCHEMA_LIMIT;
-
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- let data = create_data(b as usize);
- }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)
-
- set_variable_on_chain_schema {
- let b in 0..VARIABLE_ON_CHAIN_SCHEMA_LIMIT;
-
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- let data = create_data(b as usize);
- }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)
-
- set_schema_version {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: set_schema_version(RawOrigin::Signed(caller.clone()), collection, SchemaVersion::Unique)
-
- set_collection_limits{
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
-
- let cl = CollectionLimits {
- account_token_ownership_limit: Some(0),
- sponsored_data_size: Some(0),
- token_limit: Some(1),
- sponsor_transfer_timeout: Some(0),
- sponsor_approve_timeout: None,
- owner_can_destroy: Some(true),
- owner_can_transfer: Some(true),
- sponsored_data_rate_limit: None,
- transfers_enabled: Some(true),
- };
- }: set_collection_limits(RawOrigin::Signed(caller.clone()), collection, cl)
-
- set_meta_update_permission_flag {
- let caller: T::AccountId = account("caller", 0, SEED);
- let collection = create_nft_collection::<T>(caller.clone())?;
- }: _(RawOrigin::Signed(caller.clone()), collection, MetaUpdatePermission::Admin)
-}
pallets/nft/src/common.rsdiffbeforeafterboth--- a/pallets/nft/src/common.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-use core::marker::PhantomData;
-use frame_support::{weights::Weight};
-use pallet_common::{CommonWeightInfo};
-
-use pallet_fungible::{common::CommonWeights as FungibleWeights};
-use pallet_nonfungible::{common::CommonWeights as NonfungibleWeights};
-use pallet_refungible::{common::CommonWeights as RefungibleWeights};
-
-use crate::{Config, dispatch::dispatch_weight};
-
-macro_rules! max_weight_of {
- ($method:ident ( $($args:tt)* )) => {
- <FungibleWeights<T>>::$method($($args)*)
- .max(<NonfungibleWeights<T>>::$method($($args)*))
- .max(<RefungibleWeights<T>>::$method($($args)*))
- };
-}
-
-pub struct CommonWeights<T: Config>(PhantomData<T>);
-impl<T: Config> CommonWeightInfo for CommonWeights<T> {
- fn create_item() -> nft_data_structs::Weight {
- dispatch_weight::<T>() + max_weight_of!(create_item())
- }
-
- fn create_multiple_items(amount: u32) -> Weight {
- dispatch_weight::<T>() + max_weight_of!(create_multiple_items(amount))
- }
-
- fn burn_item() -> Weight {
- dispatch_weight::<T>() + max_weight_of!(burn_item())
- }
-
- fn transfer() -> nft_data_structs::Weight {
- dispatch_weight::<T>() + max_weight_of!(transfer())
- }
-
- fn approve() -> nft_data_structs::Weight {
- dispatch_weight::<T>() + max_weight_of!(approve())
- }
-
- fn transfer_from() -> nft_data_structs::Weight {
- dispatch_weight::<T>() + max_weight_of!(transfer_from())
- }
-
- fn set_variable_metadata(bytes: u32) -> nft_data_structs::Weight {
- dispatch_weight::<T>() + max_weight_of!(set_variable_metadata(bytes))
- }
-
- fn burn_from() -> Weight {
- dispatch_weight::<T>() + max_weight_of!(burn_from())
- }
-}
pallets/nft/src/dispatch.rsdiffbeforeafterboth--- a/pallets/nft/src/dispatch.rs
+++ /dev/null
@@ -1,88 +0,0 @@
-use frame_support::{
- dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo},
- traits::Get,
- weights::Weight,
-};
-use nft_data_structs::{CollectionId, CollectionMode, Pays, PostDispatchInfo};
-use pallet_common::{CollectionHandle, CommonCollectionOperations};
-use pallet_fungible::FungibleHandle;
-use pallet_nonfungible::NonfungibleHandle;
-use pallet_refungible::RefungibleHandle;
-
-use crate::Config;
-
-// TODO: move to benchmarking
-/// Price of [`dispatch_call`] call with noop `call` argument
-pub fn dispatch_weight<T: Config>() -> Weight {
- // Read collection
- <T as frame_system::Config>::DbWeight::get().reads(1)
- // Dynamic dispatch?
- + 6_000_000
- // submit_logs is measured as part of collection pallets
-}
-
-pub enum Dispatched<T: Config> {
- Fungible(FungibleHandle<T>),
- Nonfungible(NonfungibleHandle<T>),
- Refungible(RefungibleHandle<T>),
-}
-impl<T: Config> Dispatched<T> {
- pub fn dispatch(handle: CollectionHandle<T>) -> Self {
- match handle.mode {
- CollectionMode::Fungible(_) => Self::Fungible(FungibleHandle::cast(handle)),
- CollectionMode::NFT => Self::Nonfungible(NonfungibleHandle::cast(handle)),
- CollectionMode::ReFungible => Self::Refungible(RefungibleHandle::cast(handle)),
- }
- }
- fn into_inner(self) -> CollectionHandle<T> {
- match self {
- Dispatched::Fungible(f) => f.into_inner(),
- Dispatched::Nonfungible(f) => f.into_inner(),
- Dispatched::Refungible(f) => f.into_inner(),
- }
- }
- pub fn as_dyn(&self) -> &dyn CommonCollectionOperations<T> {
- match self {
- Dispatched::Fungible(h) => h,
- Dispatched::Nonfungible(h) => h,
- Dispatched::Refungible(h) => h,
- }
- }
-}
-
-/// Helper function to implement substrate calls for common collection methods
-pub fn dispatch_call<
- T: Config,
- C: FnOnce(&dyn pallet_common::CommonCollectionOperations<T>) -> DispatchResultWithPostInfo,
->(
- collection: CollectionId,
- call: C,
-) -> DispatchResultWithPostInfo {
- let handle =
- CollectionHandle::try_get(collection).map_err(|error| DispatchErrorWithPostInfo {
- post_info: PostDispatchInfo {
- actual_weight: Some(dispatch_weight::<T>()),
- pays_fee: Pays::Yes,
- },
- error,
- })?;
- let dispatched = Dispatched::dispatch(handle);
- let mut result = call(dispatched.as_dyn());
- match &mut result {
- Ok(PostDispatchInfo {
- actual_weight: Some(weight),
- ..
- })
- | Err(DispatchErrorWithPostInfo {
- post_info: PostDispatchInfo {
- actual_weight: Some(weight),
- ..
- },
- ..
- }) => *weight += dispatch_weight::<T>(),
- _ => {}
- }
-
- dispatched.into_inner().submit_logs();
- result
-}
pallets/nft/src/eth/mod.rsdiffbeforeafterboth--- a/pallets/nft/src/eth/mod.rs
+++ /dev/null
@@ -1,80 +0,0 @@
-pub mod sponsoring;
-
-use fp_evm::PrecompileResult;
-use pallet_common::{
- CollectionById,
- erc::CommonEvmHandler,
- eth::{map_eth_to_id, map_eth_to_token_id},
-};
-use pallet_fungible::FungibleHandle;
-use pallet_nonfungible::NonfungibleHandle;
-use pallet_refungible::{RefungibleHandle, erc::RefungibleTokenHandle};
-use sp_std::borrow::ToOwned;
-use sp_std::vec::Vec;
-use sp_core::{H160, U256};
-use crate::{CollectionMode, Config, dispatch::Dispatched};
-use pallet_common::CollectionHandle;
-
-pub struct NftErcSupport<T: Config>(core::marker::PhantomData<T>);
-
-impl<T: Config> pallet_evm::OnMethodCall<T> for NftErcSupport<T> {
- fn is_reserved(target: &H160) -> bool {
- map_eth_to_id(target).is_some()
- }
- fn is_used(target: &H160) -> bool {
- map_eth_to_id(target)
- .map(<CollectionById<T>>::contains_key)
- .unwrap_or(false)
- }
- fn get_code(target: &H160) -> Option<Vec<u8>> {
- if let Some(collection_id) = map_eth_to_id(target) {
- let collection = <CollectionById<T>>::get(collection_id)?;
- Some(
- match collection.mode {
- CollectionMode::NFT => <NonfungibleHandle<T>>::CODE,
- CollectionMode::Fungible(_) => <FungibleHandle<T>>::CODE,
- CollectionMode::ReFungible => <RefungibleHandle<T>>::CODE,
- }
- .to_owned(),
- )
- } else if let Some((collection_id, _token_id)) = map_eth_to_token_id(target) {
- let collection = <CollectionById<T>>::get(collection_id)?;
- if collection.mode != CollectionMode::ReFungible {
- return None;
- }
- // TODO: check token existence
- Some(<RefungibleTokenHandle<T>>::CODE.to_owned())
- } else {
- None
- }
- }
- fn call(
- source: &H160,
- target: &H160,
- gas_limit: u64,
- input: &[u8],
- value: U256,
- ) -> Option<PrecompileResult> {
- if let Some(collection_id) = map_eth_to_id(target) {
- let collection = <CollectionHandle<T>>::new_with_gas_limit(collection_id, gas_limit)?;
- let dispatched = Dispatched::dispatch(collection);
-
- match dispatched {
- Dispatched::Fungible(h) => h.call(source, input, value),
- Dispatched::Nonfungible(h) => h.call(source, input, value),
- Dispatched::Refungible(h) => h.call(source, input, value),
- }
- } else if let Some((collection_id, token_id)) = map_eth_to_token_id(target) {
- let collection = <CollectionHandle<T>>::new_with_gas_limit(collection_id, gas_limit)?;
- if collection.mode != CollectionMode::ReFungible {
- return None;
- }
-
- let handle = RefungibleHandle::cast(collection);
- // TODO: check token existence
- RefungibleTokenHandle(handle, token_id).call(source, input, value)
- } else {
- None
- }
- }
-}
pallets/nft/src/eth/sponsoring.rsdiffbeforeafterboth--- a/pallets/nft/src/eth/sponsoring.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-//! Implements EVM sponsoring logic via OnChargeEVMTransaction
-
-use crate::{Config, sponsorship::*};
-use evm_coder::{Call, abi::AbiReader};
-use pallet_common::{CollectionHandle, eth::map_eth_to_id};
-use sp_core::H160;
-use sp_std::prelude::*;
-use up_sponsorship::SponsorshipHandler;
-use core::marker::PhantomData;
-use core::convert::TryInto;
-use nft_data_structs::TokenId;
-use up_evm_mapping::EvmBackwardsAddressMapping;
-use pallet_common::account::CrossAccountId;
-
-use pallet_nonfungible::erc::{UniqueNFTCall, ERC721UniqueExtensionsCall, ERC721Call};
-use pallet_fungible::erc::{UniqueFungibleCall, ERC20Call};
-
-pub struct NftEthSponsorshipHandler<T: Config>(PhantomData<*const T>);
-impl<T: Config> SponsorshipHandler<H160, (H160, Vec<u8>)> for NftEthSponsorshipHandler<T> {
- fn get_sponsor(who: &H160, call: &(H160, Vec<u8>)) -> Option<H160> {
- let collection_id = map_eth_to_id(&call.0)?;
- let collection = <CollectionHandle<T>>::new(collection_id)?;
- let sponsor = collection.sponsorship.sponsor()?.clone();
- let sponsor =
- <T as pallet_common::Config>::EvmBackwardsAddressMapping::from_account_id(sponsor);
- let who = T::CrossAccountId::from_eth(*who);
- let (method_id, mut reader) = AbiReader::new_call(&call.1).ok()?;
- match &collection.mode {
- crate::CollectionMode::NFT => {
- let call = <UniqueNFTCall<T>>::parse(method_id, &mut reader).ok()??;
- match call {
- UniqueNFTCall::ERC721UniqueExtensions(
- ERC721UniqueExtensionsCall::Transfer { token_id, .. },
- ) => {
- let token_id: TokenId = token_id.try_into().ok()?;
- withdraw_transfer::<T>(&collection, &who, &token_id).map(|()| sponsor)
- }
- UniqueNFTCall::ERC721(ERC721Call::TransferFrom { token_id, from, .. }) => {
- let token_id: TokenId = token_id.try_into().ok()?;
- let from = T::CrossAccountId::from_eth(from);
- withdraw_transfer::<T>(&collection, &from, &token_id).map(|()| sponsor)
- }
- UniqueNFTCall::ERC721(ERC721Call::Approve { token_id, .. }) => {
- let token_id: TokenId = token_id.try_into().ok()?;
- withdraw_approve::<T>(&collection, who.as_sub(), &token_id)
- .map(|()| sponsor)
- }
- _ => None,
- }
- }
- crate::CollectionMode::Fungible(_) => {
- let call = <UniqueFungibleCall<T>>::parse(method_id, &mut reader).ok()??;
- #[allow(clippy::single_match)]
- match call {
- UniqueFungibleCall::ERC20(ERC20Call::Transfer { .. }) => {
- withdraw_transfer::<T>(&collection, &who, &TokenId::default())
- .map(|()| sponsor)
- }
- UniqueFungibleCall::ERC20(ERC20Call::TransferFrom { from, .. }) => {
- let from = T::CrossAccountId::from_eth(from);
- withdraw_transfer::<T>(&collection, &from, &TokenId::default())
- .map(|()| sponsor)
- }
- UniqueFungibleCall::ERC20(ERC20Call::Approve { .. }) => {
- withdraw_approve::<T>(&collection, who.as_sub(), &TokenId::default())
- .map(|()| sponsor)
- }
- _ => None,
- }
- }
- _ => None,
- }
- }
-}
pallets/nft/src/lib.rsdiffbeforeafterboth--- a/pallets/nft/src/lib.rs
+++ /dev/null
@@ -1,955 +0,0 @@
-//
-// This file is subject to the terms and conditions defined in
-// file 'LICENSE', which is part of this source code package.
-//
-
-#![recursion_limit = "1024"]
-#![cfg_attr(not(feature = "std"), no_std)]
-#![allow(
- clippy::too_many_arguments,
- clippy::unnecessary_mut_passed,
- clippy::unused_unit
-)]
-
-extern crate alloc;
-
-pub use serde::{Serialize, Deserialize};
-
-pub use frame_support::{
- construct_runtime, decl_module, decl_storage, decl_error,
- dispatch::DispatchResult,
- ensure, fail, parameter_types,
- traits::{
- ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced, Randomness,
- IsSubType, WithdrawReasons,
- },
- weights::{
- constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
- DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
- WeightToFeePolynomial, DispatchClass,
- },
- StorageValue, transactional,
- pallet_prelude::DispatchResultWithPostInfo,
-};
-use scale_info::TypeInfo;
-use frame_system::{self as system, ensure_signed};
-use sp_runtime::{sp_std::prelude::Vec};
-use nft_data_structs::{
- MAX_DECIMAL_POINTS, MAX_SPONSOR_TIMEOUT, MAX_TOKEN_OWNERSHIP, CUSTOM_DATA_LIMIT,
- VARIABLE_ON_CHAIN_SCHEMA_LIMIT, CONST_ON_CHAIN_SCHEMA_LIMIT, OFFCHAIN_SCHEMA_LIMIT,
- FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- NFT_SPONSOR_TRANSFER_TIMEOUT, AccessMode, Collection, CreateItemData, CollectionLimits,
- CollectionId, CollectionMode, TokenId, SchemaVersion, SponsorshipState, MetaUpdatePermission,
-};
-use pallet_common::{
- account::CrossAccountId, CollectionHandle, Pallet as PalletCommon, Error as CommonError,
- CommonWeightInfo,
-};
-use pallet_refungible::{Pallet as PalletRefungible, RefungibleHandle};
-use pallet_fungible::{Pallet as PalletFungible, FungibleHandle};
-use pallet_nonfungible::{Pallet as PalletNonfungible, NonfungibleHandle};
-
-#[cfg(test)]
-mod mock;
-
-#[cfg(test)]
-mod tests;
-
-mod eth;
-mod sponsorship;
-pub use sponsorship::NftSponsorshipHandler;
-pub use eth::sponsoring::NftEthSponsorshipHandler;
-
-pub use eth::NftErcSupport;
-
-pub mod common;
-use common::CommonWeights;
-pub mod dispatch;
-use dispatch::dispatch_call;
-
-#[cfg(feature = "runtime-benchmarks")]
-mod benchmarking;
-pub mod weights;
-use weights::WeightInfo;
-
-decl_error! {
- /// Error for non-fungible-token module.
- pub enum Error for Module<T: Config> {
- /// Decimal_points parameter must be lower than MAX_DECIMAL_POINTS constant, currently it is 30.
- CollectionDecimalPointLimitExceeded,
- /// This address is not set as sponsor, use setCollectionSponsor first.
- ConfirmUnsetSponsorFail,
- /// Length of items properties must be greater than 0.
- EmptyArgument,
- /// Collection limit bounds per collection exceeded
- CollectionLimitBoundsExceeded,
- /// Tried to enable permissions which are only permitted to be disabled
- OwnerPermissionsCantBeReverted,
- }
-}
-pub trait Config:
- system::Config
- + pallet_evm_coder_substrate::Config
- + pallet_common::Config
- + pallet_nonfungible::Config
- + pallet_refungible::Config
- + pallet_fungible::Config
- + Sized
- + TypeInfo
-{
- /// Weight information for extrinsics in this pallet.
- type WeightInfo: WeightInfo;
-}
-
-type SelfWeightOf<T> = <T as Config>::WeightInfo;
-
-// # Used definitions
-//
-// ## User control levels
-//
-// chain-controlled - key is uncontrolled by user
-// i.e autoincrementing index
-// can use non-cryptographic hash
-// real - key is controlled by user
-// but it is hard to generate enough colliding values, i.e owner of signed txs
-// can use non-cryptographic hash
-// controlled - key is completly controlled by users
-// i.e maps with mutable keys
-// should use cryptographic hash
-//
-// ## User control level downgrade reasons
-//
-// ?1 - chain-controlled -> controlled
-// collections/tokens can be destroyed, resulting in massive holes
-// ?2 - chain-controlled -> controlled
-// same as ?1, but can be only added, resulting in easier exploitation
-// ?3 - real -> controlled
-// no confirmation required, so addresses can be easily generated
-decl_storage! {
- trait Store for Module<T: Config> as Nft {
-
- //#region Private members
- /// Used for migrations
- ChainVersion: u64;
- //#endregion
-
- //#region Tokens transfer rate limit baskets
- /// (Collection id (controlled?2), who created (real))
- /// TODO: Off chain worker should remove from this map when collection gets removed
- pub CreateItemBasket get(fn create_item_basket): map hasher(blake2_128_concat) (CollectionId, T::AccountId) => Option<T::BlockNumber>;
- /// Collection id (controlled?2), token id (controlled?2)
- pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
- /// Collection id (controlled?2), owning user (real)
- pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
- /// Collection id (controlled?2), token id (controlled?2)
- pub ReFungibleTransferBasket get(fn refungible_transfer_basket): nmap hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
- //#endregion
-
- /// Variable metadata sponsoring
- /// Collection id (controlled?2), token id (controlled?2)
- pub VariableMetaDataBasket get(fn variable_meta_data_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
- /// Approval sponsoring
- pub NftApproveBasket get(fn nft_approve_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
- pub FungibleApproveBasket get(fn fungible_approve_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
- pub RefungibleApproveBasket get(fn refungible_approve_basket): nmap hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
- }
-}
-
-decl_module! {
- pub struct Module<T: Config> for enum Call
- where
- origin: T::Origin
- {
- type Error = Error<T>;
-
- fn on_initialize(_now: T::BlockNumber) -> Weight {
- 0
- }
-
- /// This method creates a Collection of NFTs. Each Token may have multiple properties encoded as an array of bytes of certain length. The initial owner of the collection is set to the address that signed the transaction and can be changed later.
- ///
- /// # Permissions
- ///
- /// * Anyone.
- ///
- /// # Arguments
- ///
- /// * collection_name: UTF-16 string with collection name (limit 64 characters), will be stored as zero-terminated.
- ///
- /// * collection_description: UTF-16 string with collection description (limit 256 characters), will be stored as zero-terminated.
- ///
- /// * token_prefix: UTF-8 string with token prefix.
- ///
- /// * mode: [CollectionMode] collection type and type dependent data.
- // returns collection ID
- #[weight = <SelfWeightOf<T>>::create_collection()]
- #[transactional]
- pub fn create_collection(origin,
- collection_name: Vec<u16>,
- collection_description: Vec<u16>,
- token_prefix: Vec<u8>,
- mode: CollectionMode) -> DispatchResult {
-
- // Anyone can create a collection
- let who = ensure_signed(origin)?;
-
- // Create new collection
- let new_collection = Collection {
- owner: who,
- name: collection_name,
- mode: mode.clone(),
- mint_mode: false,
- access: AccessMode::Normal,
- description: collection_description,
- token_prefix,
- offchain_schema: Vec::new(),
- schema_version: SchemaVersion::ImageURL,
- sponsorship: SponsorshipState::Disabled,
- variable_on_chain_schema: Vec::new(),
- const_on_chain_schema: Vec::new(),
- limits: Default::default(),
- meta_update_permission: Default::default(),
- };
-
- let _id = match mode {
- CollectionMode::NFT => {<PalletNonfungible<T>>::init_collection(new_collection)?},
- CollectionMode::Fungible(decimal_points) => {
- // check params
- ensure!(decimal_points <= MAX_DECIMAL_POINTS, Error::<T>::CollectionDecimalPointLimitExceeded);
- <PalletFungible<T>>::init_collection(new_collection)?
- }
- CollectionMode::ReFungible => {
- <PalletRefungible<T>>::init_collection(new_collection)?
- }
- };
-
- Ok(())
- }
-
- /// **DANGEROUS**: Destroys collection and all NFTs within this collection. Users irrecoverably lose their assets and may lose real money.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- ///
- /// # Arguments
- ///
- /// * collection_id: collection to destroy.
- #[weight = <SelfWeightOf<T>>::destroy_collection()]
- #[transactional]
- pub fn destroy_collection(origin, collection_id: CollectionId) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- let collection = <CollectionHandle<T>>::try_get(collection_id)?;
- collection.check_is_owner(&sender)?;
-
- // =========
-
- match collection.mode {
- CollectionMode::ReFungible => PalletRefungible::destroy_collection(RefungibleHandle::cast(collection), &sender)?,
- CollectionMode::Fungible(_) => PalletFungible::destroy_collection(FungibleHandle::cast(collection), &sender)?,
- CollectionMode::NFT => PalletNonfungible::destroy_collection(NonfungibleHandle::cast(collection), &sender)?,
- }
-
- <NftTransferBasket<T>>::remove_prefix(collection_id, None);
- <FungibleTransferBasket<T>>::remove_prefix(collection_id, None);
- <ReFungibleTransferBasket<T>>::remove_prefix((collection_id,), None);
-
- <VariableMetaDataBasket<T>>::remove_prefix(collection_id, None);
- <NftApproveBasket<T>>::remove_prefix(collection_id, None);
- <FungibleApproveBasket<T>>::remove_prefix(collection_id, None);
- <RefungibleApproveBasket<T>>::remove_prefix((collection_id,), None);
-
- Ok(())
- }
-
- /// Add an address to allow list.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * address.
- #[weight = <SelfWeightOf<T>>::add_to_allow_list()]
- #[transactional]
- pub fn add_to_allow_list(origin, collection_id: CollectionId, address: T::CrossAccountId) -> DispatchResult{
-
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let collection = <CollectionHandle<T>>::try_get(collection_id)?;
-
- <PalletCommon<T>>::toggle_allowlist(
- &collection,
- &sender,
- &address,
- true,
- )?;
-
- Ok(())
- }
-
- /// Remove an address from allow list.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * address.
- #[weight = <SelfWeightOf<T>>::remove_from_allow_list()]
- #[transactional]
- pub fn remove_from_allow_list(origin, collection_id: CollectionId, address: T::CrossAccountId) -> DispatchResult{
-
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let collection = <CollectionHandle<T>>::try_get(collection_id)?;
-
- <PalletCommon<T>>::toggle_allowlist(
- &collection,
- &sender,
- &address,
- false,
- )?;
-
- Ok(())
- }
-
- /// Toggle between normal and allow list access for the methods with access for `Anyone`.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * mode: [AccessMode]
- #[weight = <SelfWeightOf<T>>::set_public_access_mode()]
- #[transactional]
- pub fn set_public_access_mode(origin, collection_id: CollectionId, mode: AccessMode) -> DispatchResult
- {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
-
- target_collection.access = mode;
- target_collection.save()
- }
-
- /// Allows Anyone to create tokens if:
- /// * Allow List is enabled, and
- /// * Address is added to allow list, and
- /// * This method was called with True parameter
- ///
- /// # Permissions
- /// * Collection Owner
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
- #[weight = <SelfWeightOf<T>>::set_mint_permission()]
- #[transactional]
- pub fn set_mint_permission(origin, collection_id: CollectionId, mint_permission: bool) -> DispatchResult
- {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
-
- target_collection.mint_mode = mint_permission;
- target_collection.save()
- }
-
- /// Change the owner of the collection.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * new_owner.
- #[weight = <SelfWeightOf<T>>::change_collection_owner()]
- #[transactional]
- pub fn change_collection_owner(origin, collection_id: CollectionId, new_owner: T::AccountId) -> DispatchResult {
-
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
-
- target_collection.owner = new_owner;
- target_collection.save()
- }
-
- /// Adds an admin of the Collection.
- /// NFT Collection can be controlled by multiple admin addresses (some which can also be servers, for example). Admins can issue and burn NFTs, as well as add and remove other admins, but cannot change NFT or Collection ownership.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- /// * Collection Admin.
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the Collection to add admin for.
- ///
- /// * new_admin_id: Address of new admin to add.
- #[weight = <SelfWeightOf<T>>::add_collection_admin()]
- #[transactional]
- pub fn add_collection_admin(origin, collection_id: CollectionId, new_admin_id: T::CrossAccountId) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let collection = <CollectionHandle<T>>::try_get(collection_id)?;
-
- <PalletCommon<T>>::toggle_admin(&collection, &sender, &new_admin_id, true)
- }
-
- /// Remove admin address of the Collection. An admin address can remove itself. List of admins may become empty, in which case only Collection Owner will be able to add an Admin.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- /// * Collection Admin.
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the Collection to remove admin for.
- ///
- /// * account_id: Address of admin to remove.
- #[weight = <SelfWeightOf<T>>::remove_collection_admin()]
- #[transactional]
- pub fn remove_collection_admin(origin, collection_id: CollectionId, account_id: T::CrossAccountId) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let collection = <CollectionHandle<T>>::try_get(collection_id)?;
-
- <PalletCommon<T>>::toggle_admin(&collection, &sender, &account_id, false)
- }
-
- /// # Permissions
- ///
- /// * Collection Owner
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * new_sponsor.
- #[weight = <SelfWeightOf<T>>::set_collection_sponsor()]
- #[transactional]
- pub fn set_collection_sponsor(origin, collection_id: CollectionId, new_sponsor: T::AccountId) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
-
- target_collection.sponsorship = SponsorshipState::Unconfirmed(new_sponsor);
- target_collection.save()
- }
-
- /// # Permissions
- ///
- /// * Sponsor.
- ///
- /// # Arguments
- ///
- /// * collection_id.
- #[weight = <SelfWeightOf<T>>::confirm_sponsorship()]
- #[transactional]
- pub fn confirm_sponsorship(origin, collection_id: CollectionId) -> DispatchResult {
- let sender = ensure_signed(origin)?;
-
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- ensure!(
- target_collection.sponsorship.pending_sponsor() == Some(&sender),
- Error::<T>::ConfirmUnsetSponsorFail
- );
-
- target_collection.sponsorship = SponsorshipState::Confirmed(sender);
- target_collection.save()
- }
-
- /// Switch back to pay-per-own-transaction model.
- ///
- /// # Permissions
- ///
- /// * Collection owner.
- ///
- /// # Arguments
- ///
- /// * collection_id.
- #[weight = <SelfWeightOf<T>>::remove_collection_sponsor()]
- #[transactional]
- pub fn remove_collection_sponsor(origin, collection_id: CollectionId) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
-
- target_collection.sponsorship = SponsorshipState::Disabled;
- target_collection.save()
- }
-
- /// This method creates a concrete instance of NFT Collection created with CreateCollection method.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- /// * Collection Admin.
- /// * Anyone if
- /// * Allow List is enabled, and
- /// * Address is added to allow list, and
- /// * MintPermission is enabled (see SetMintPermission method)
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the collection.
- ///
- /// * owner: Address, initial owner of the NFT.
- ///
- /// * data: Token data to store on chain.
- #[weight = <CommonWeights<T>>::create_item()]
- #[transactional]
- pub fn create_item(origin, collection_id: CollectionId, owner: T::CrossAccountId, data: CreateItemData) -> DispatchResultWithPostInfo {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- dispatch_call::<T, _>(collection_id, |d| d.create_item(sender, owner, data))
- }
-
- /// This method creates multiple items in a collection created with CreateCollection method.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- /// * Collection Admin.
- /// * Anyone if
- /// * Allow List is enabled, and
- /// * Address is added to allow list, and
- /// * MintPermission is enabled (see SetMintPermission method)
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the collection.
- ///
- /// * itemsData: Array items properties. Each property is an array of bytes itself, see [create_item].
- ///
- /// * owner: Address, initial owner of the NFT.
- #[weight = <CommonWeights<T>>::create_multiple_items(items_data.len() as u32)]
- #[transactional]
- pub fn create_multiple_items(origin, collection_id: CollectionId, owner: T::CrossAccountId, items_data: Vec<CreateItemData>) -> DispatchResultWithPostInfo {
- ensure!(!items_data.is_empty(), Error::<T>::EmptyArgument);
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- dispatch_call::<T, _>(collection_id, |d| d.create_multiple_items(sender, owner, items_data))
- }
-
- // TODO! transaction weight
-
- /// Set transfers_enabled value for particular collection
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the collection.
- ///
- /// * value: New flag value.
- #[weight = <SelfWeightOf<T>>::set_transfers_enabled_flag()]
- #[transactional]
- pub fn set_transfers_enabled_flag(origin, collection_id: CollectionId, value: bool) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
-
- // =========
-
- target_collection.limits.transfers_enabled = Some(value);
- target_collection.save()
- }
-
- /// Destroys a concrete instance of NFT.
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- /// * Collection Admin.
- /// * Current NFT Owner.
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the collection.
- ///
- /// * item_id: ID of NFT to burn.
- #[weight = <CommonWeights<T>>::burn_item()]
- #[transactional]
- pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- let post_info = dispatch_call::<T, _>(collection_id, |d| d.burn_item(sender, item_id, value))?;
- if value == 1 {
- <NftTransferBasket<T>>::remove(collection_id, item_id);
- <NftApproveBasket<T>>::remove(collection_id, item_id);
- }
- // Those maps should be cleared only if token disappears completly, need to move this part of logic to pallets?
- // <FungibleApproveBasket<T>>::remove(collection_id, sender.as_sub());
- // <RefungibleApproveBasket<T>>::remove((collection_id, item_id, sender.as_sub()));
- Ok(post_info)
- }
-
- /// Destroys a concrete instance of NFT on behalf of the owner
- /// See also: [`approve`]
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- /// * Collection Admin.
- /// * Current NFT Owner.
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the collection.
- ///
- /// * item_id: ID of NFT to burn.
- ///
- /// * from: owner of item
- #[weight = <CommonWeights<T>>::burn_from()]
- #[transactional]
- pub fn burn_from(origin, collection_id: CollectionId, from: T::CrossAccountId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- dispatch_call::<T, _>(collection_id, |d| d.burn_from(sender, from, item_id, value))
- }
-
- /// Change ownership of the token.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- /// * Current NFT owner
- ///
- /// # Arguments
- ///
- /// * recipient: Address of token recipient.
- ///
- /// * collection_id.
- ///
- /// * item_id: ID of the item
- /// * Non-Fungible Mode: Required.
- /// * Fungible Mode: Ignored.
- /// * Re-Fungible Mode: Required.
- ///
- /// * value: Amount to transfer.
- /// * Non-Fungible Mode: Ignored
- /// * Fungible Mode: Must specify transferred amount
- /// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
- #[weight = <CommonWeights<T>>::transfer()]
- #[transactional]
- pub fn transfer(origin, recipient: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- dispatch_call::<T, _>(collection_id, |d| d.transfer(sender, recipient, item_id, value))
- }
-
- /// Set, change, or remove approved address to transfer the ownership of the NFT.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- /// * Current NFT owner
- ///
- /// # Arguments
- ///
- /// * approved: Address that is approved to transfer this NFT or zero (if needed to remove approval).
- ///
- /// * collection_id.
- ///
- /// * item_id: ID of the item.
- #[weight = <CommonWeights<T>>::approve()]
- #[transactional]
- pub fn approve(origin, spender: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResultWithPostInfo {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- dispatch_call::<T, _>(collection_id, |d| d.approve(sender, spender, item_id, amount))
- }
-
- /// Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.
- ///
- /// # Permissions
- /// * Collection Owner
- /// * Collection Admin
- /// * Current NFT owner
- /// * Address approved by current NFT owner
- ///
- /// # Arguments
- ///
- /// * from: Address that owns token.
- ///
- /// * recipient: Address of token recipient.
- ///
- /// * collection_id.
- ///
- /// * item_id: ID of the item.
- ///
- /// * value: Amount to transfer.
- #[weight = <CommonWeights<T>>::transfer_from()]
- #[transactional]
- pub fn transfer_from(origin, from: T::CrossAccountId, recipient: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, value: u128 ) -> DispatchResultWithPostInfo {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- dispatch_call::<T, _>(collection_id, |d| d.transfer_from(sender, from, recipient, item_id, value))
- }
-
- /// Set off-chain data schema.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * schema: String representing the offchain data schema.
- #[weight = <CommonWeights<T>>::set_variable_metadata(data.len() as u32)]
- #[transactional]
- pub fn set_variable_meta_data (
- origin,
- collection_id: CollectionId,
- item_id: TokenId,
- data: Vec<u8>
- ) -> DispatchResultWithPostInfo {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
- dispatch_call::<T, _>(collection_id, |d| d.set_variable_metadata(sender, item_id, data))
- }
-
- /// Set meta_update_permission value for particular collection
- ///
- /// # Permissions
- ///
- /// * Collection Owner.
- ///
- /// # Arguments
- ///
- /// * collection_id: ID of the collection.
- ///
- /// * value: New flag value.
- #[weight = <SelfWeightOf<T>>::set_meta_update_permission_flag()]
- #[transactional]
- pub fn set_meta_update_permission_flag(origin, collection_id: CollectionId, value: MetaUpdatePermission) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
-
- ensure!(
- target_collection.meta_update_permission != MetaUpdatePermission::None,
- <CommonError<T>>::MetadataFlagFrozen,
- );
- target_collection.check_is_owner(&sender)?;
-
- target_collection.meta_update_permission = value;
-
- target_collection.save()
- }
-
- /// Set schema standard
- /// ImageURL
- /// Unique
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * schema: SchemaVersion: enum
- #[weight = <SelfWeightOf<T>>::set_schema_version()]
- #[transactional]
- pub fn set_schema_version(
- origin,
- collection_id: CollectionId,
- version: SchemaVersion
- ) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner_or_admin(&sender)?;
- target_collection.schema_version = version;
- target_collection.save()
- }
-
- /// Set off-chain data schema.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * schema: String representing the offchain data schema.
- #[weight = <SelfWeightOf<T>>::set_offchain_schema(schema.len() as u32)]
- #[transactional]
- pub fn set_offchain_schema(
- origin,
- collection_id: CollectionId,
- schema: Vec<u8>
- ) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner_or_admin(&sender)?;
-
- // check schema limit
- ensure!(schema.len() as u32 <= OFFCHAIN_SCHEMA_LIMIT, "");
-
- target_collection.offchain_schema = schema;
- target_collection.save()
- }
-
- /// Set const on-chain data schema.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * schema: String representing the const on-chain data schema.
- #[weight = <SelfWeightOf<T>>::set_const_on_chain_schema(schema.len() as u32)]
- #[transactional]
- pub fn set_const_on_chain_schema (
- origin,
- collection_id: CollectionId,
- schema: Vec<u8>
- ) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner_or_admin(&sender)?;
-
- // check schema limit
- ensure!(schema.len() as u32 <= CONST_ON_CHAIN_SCHEMA_LIMIT, "");
-
- target_collection.const_on_chain_schema = schema;
- target_collection.save()
- }
-
- /// Set variable on-chain data schema.
- ///
- /// # Permissions
- ///
- /// * Collection Owner
- /// * Collection Admin
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * schema: String representing the variable on-chain data schema.
- #[weight = <SelfWeightOf<T>>::set_const_on_chain_schema(schema.len() as u32)]
- #[transactional]
- pub fn set_variable_on_chain_schema (
- origin,
- collection_id: CollectionId,
- schema: Vec<u8>
- ) -> DispatchResult {
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner_or_admin(&sender)?;
-
- // check schema limit
- ensure!(schema.len() as u32 <= VARIABLE_ON_CHAIN_SCHEMA_LIMIT, "");
-
- target_collection.variable_on_chain_schema = schema;
- target_collection.save()
- }
-
- #[weight = <SelfWeightOf<T>>::set_collection_limits()]
- #[transactional]
- pub fn set_collection_limits(
- origin,
- collection_id: CollectionId,
- new_limit: CollectionLimits,
- ) -> DispatchResult {
- let mut new_limit = new_limit;
- let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
- let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_owner(&sender)?;
- let old_limit = &target_collection.limits;
-
- macro_rules! limit_default {
- ($old:ident, $new:ident, $($field:ident $(($arg:expr))? => $check:expr),* $(,)?) => {{
- $(
- if let Some($new) = $new.$field {
- let $old = $old.$field($($arg)?);
- let _ = $new;
- let _ = $old;
- $check
- } else {
- $new.$field = $old.$field
- }
- )*
- }};
- }
-
- limit_default!(old_limit, new_limit,
- account_token_ownership_limit => ensure!(
- new_limit <= MAX_TOKEN_OWNERSHIP,
- <Error<T>>::CollectionLimitBoundsExceeded,
- ),
- sponsor_transfer_timeout(match target_collection.mode {
- CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,
- CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- }) => ensure!(
- new_limit <= MAX_SPONSOR_TIMEOUT,
- <Error<T>>::CollectionLimitBoundsExceeded,
- ),
- sponsored_data_size => ensure!(
- new_limit <= CUSTOM_DATA_LIMIT,
- <Error<T>>::CollectionLimitBoundsExceeded,
- ),
- token_limit => ensure!(
- old_limit >= new_limit && new_limit > 0,
- <CommonError<T>>::CollectionTokenLimitExceeded
- ),
- owner_can_transfer => ensure!(
- old_limit || !new_limit,
- <Error<T>>::OwnerPermissionsCantBeReverted,
- ),
- owner_can_destroy => ensure!(
- old_limit || !new_limit,
- <Error<T>>::OwnerPermissionsCantBeReverted,
- ),
- sponsored_data_rate_limit => {},
- transfers_enabled => {},
- );
-
- target_collection.limits = new_limit;
-
- target_collection.save()
- }
- }
-}
pallets/nft/src/mock.rsdiffbeforeafterboth--- a/pallets/nft/src/mock.rs
+++ /dev/null
@@ -1,177 +0,0 @@
-#![allow(clippy::from_over_into)]
-
-use crate as pallet_template;
-use sp_core::H256;
-use frame_support::{parameter_types, traits::Everything, weights::IdentityFee};
-use sp_runtime::{
- traits::{BlakeTwo256, IdentityLookup},
- testing::Header,
-};
-use pallet_transaction_payment::{CurrencyAdapter};
-use frame_system as system;
-use pallet_evm::AddressMapping;
-use crate::{EvmBackwardsAddressMapping, CrossAccountId};
-use codec::{Encode, Decode};
-use scale_info::TypeInfo;
-
-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>},
- TemplateModule: pallet_template::{Pallet, Call, Storage},
- Balances: pallet_balances::{Pallet, Call, Storage},
- }
-);
-
-parameter_types! {
- pub const BlockHashCount: u64 = 250;
- pub const SS58Prefix: u8 = 42;
-}
-
-impl system::Config for Test {
- type BaseCallFilter = Everything;
- type BlockWeights = ();
- type BlockLength = ();
- type DbWeight = ();
- type Origin = Origin;
- type Call = Call;
- type Index = u64;
- type BlockNumber = u64;
- type Hash = H256;
- type Hashing = BlakeTwo256;
- type AccountId = u64;
- type Lookup = IdentityLookup<Self::AccountId>;
- type Header = Header;
- type Event = ();
- 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 = ();
-}
-
-parameter_types! {
- pub const ExistentialDeposit: u64 = 1;
- pub const MaxLocks: u32 = 50;
-}
-//frame_system::Module<Test>;
-impl pallet_balances::Config for Test {
- type AccountStore = System;
- type Balance = u64;
- type DustRemoval = ();
- type Event = ();
- type ExistentialDeposit = ExistentialDeposit;
- type WeightInfo = ();
- type MaxLocks = MaxLocks;
- type MaxReserves = ();
- type ReserveIdentifier = [u8; 8];
-}
-
-parameter_types! {
- pub const TransactionByteFee: u64 = 1;
- pub const OperationalFeeMultiplier: u8 = 5;
-}
-
-impl pallet_transaction_payment::Config for Test {
- type OnChargeTransaction = CurrencyAdapter<pallet_balances::Pallet<Test>, ()>;
- type TransactionByteFee = TransactionByteFee;
- type WeightToFee = IdentityFee<u64>;
- type FeeMultiplierUpdate = ();
- type OperationalFeeMultiplier = OperationalFeeMultiplier;
-}
-
-parameter_types! {
- pub const MinimumPeriod: u64 = 1;
-}
-impl pallet_timestamp::Config for Test {
- type Moment = u64;
- type OnTimestampSet = ();
- type MinimumPeriod = MinimumPeriod;
- type WeightInfo = ();
-}
-
-parameter_types! {
- pub const CollectionCreationPrice: u32 = 0;
- pub TreasuryAccountId: u64 = 1234;
- pub EthereumChainId: u32 = 1111;
-}
-
-pub struct TestEvmAddressMapping;
-impl AddressMapping<u64> for TestEvmAddressMapping {
- fn into_account_id(_addr: sp_core::H160) -> u64 {
- unimplemented!()
- }
-}
-
-pub struct TestEvmBackwardsAddressMapping;
-impl EvmBackwardsAddressMapping<u64> for TestEvmBackwardsAddressMapping {
- fn from_account_id(_account_id: u64) -> sp_core::H160 {
- unimplemented!()
- }
-}
-
-#[derive(Encode, Decode, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, TypeInfo)]
-pub struct TestCrossAccountId(u64, sp_core::H160);
-impl CrossAccountId<u64> for TestCrossAccountId {
- fn from_sub(sub: u64) -> Self {
- let mut eth = [0; 20];
- eth[12..20].copy_from_slice(&sub.to_be_bytes());
- Self(sub, sp_core::H160(eth))
- }
- fn as_sub(&self) -> &u64 {
- &self.0
- }
- fn from_eth(eth: sp_core::H160) -> Self {
- let mut sub_raw = [0; 8];
- sub_raw.copy_from_slice(ð.0[0..8]);
- let sub = u64::from_be_bytes(sub_raw);
- Self(sub, eth)
- }
- fn as_eth(&self) -> &sp_core::H160 {
- &self.1
- }
-}
-
-pub struct TestEtheremTransactionSender;
-impl pallet_ethereum::EthereumTransactionSender for TestEtheremTransactionSender {
- fn submit_logs_transaction(
- _tx: pallet_ethereum::Transaction,
- _logs: Vec<pallet_ethereum::Log>,
- ) -> Result<(), sp_runtime::DispatchError> {
- Ok(())
- }
-}
-
-impl pallet_evm_coder_substrate::Config for Test {
- type EthereumTransactionSender = TestEtheremTransactionSender;
-}
-
-impl pallet_template::Config for Test {
- type Event = ();
- type WeightInfo = ();
- type CollectionCreationPrice = CollectionCreationPrice;
- type Currency = pallet_balances::Pallet<Test>;
- type TreasuryAccountId = TreasuryAccountId;
- type EvmAddressMapping = TestEvmAddressMapping;
- type EvmBackwardsAddressMapping = TestEvmBackwardsAddressMapping;
- type CrossAccountId = TestCrossAccountId;
-}
-
-// Build genesis storage according to the mock runtime.
-pub fn new_test_ext() -> sp_io::TestExternalities {
- system::GenesisConfig::default()
- .build_storage::<Test>()
- .unwrap()
- .into()
-}
pallets/nft/src/sponsorship.rsdiffbeforeafterboth--- a/pallets/nft/src/sponsorship.rs
+++ /dev/null
@@ -1,282 +0,0 @@
-use crate::{
- Config, Call, CreateItemBasket, VariableMetaDataBasket, ReFungibleTransferBasket,
- FungibleTransferBasket, NftTransferBasket, CreateItemData, CollectionMode, NftApproveBasket,
- FungibleApproveBasket, RefungibleApproveBasket,
-};
-use core::marker::PhantomData;
-use up_sponsorship::SponsorshipHandler;
-use frame_support::{
- traits::{IsSubType},
- storage::{StorageMap, StorageDoubleMap, StorageNMap},
-};
-use nft_data_structs::{
- CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MetaUpdatePermission,
- NFT_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId,
-};
-use pallet_common::{CollectionHandle};
-use pallet_common::account::CrossAccountId;
-
-pub fn withdraw_transfer<T: Config>(
- collection: &CollectionHandle<T>,
- who: &T::CrossAccountId,
- item_id: &TokenId,
-) -> Option<()> {
- // preliminary sponsoring correctness check
- match collection.mode {
- CollectionMode::NFT => {
- let owner = pallet_nonfungible::TokenData::<T>::get((collection.id, item_id))?.owner;
- if !owner.conv_eq(who) {
- return None;
- }
- }
- CollectionMode::Fungible(_) => {
- if item_id != &TokenId::default() {
- return None;
- }
- if <pallet_fungible::Balance<T>>::get((collection.id, who)) == 0 {
- return None;
- }
- }
- CollectionMode::ReFungible => {
- if !<pallet_refungible::Owned<T>>::get((collection.id, who, item_id)) {
- return None;
- }
- }
- }
-
- // sponsor timeout
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
- let limit = collection
- .limits
- .sponsor_transfer_timeout(match collection.mode {
- CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,
- CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- });
-
- let last_tx_block = match collection.mode {
- CollectionMode::NFT => <NftTransferBasket<T>>::get(collection.id, item_id),
- CollectionMode::Fungible(_) => {
- <FungibleTransferBasket<T>>::get(collection.id, who.as_sub())
- }
- CollectionMode::ReFungible => {
- <ReFungibleTransferBasket<T>>::get((collection.id, item_id, who.as_sub()))
- }
- };
-
- if let Some(last_tx_block) = last_tx_block {
- let timeout = last_tx_block + limit.into();
- if block_number < timeout {
- return None;
- }
- }
-
- match collection.mode {
- CollectionMode::NFT => <NftTransferBasket<T>>::insert(collection.id, item_id, block_number),
- CollectionMode::Fungible(_) => {
- <FungibleTransferBasket<T>>::insert(collection.id, who.as_sub(), block_number)
- }
- CollectionMode::ReFungible => <ReFungibleTransferBasket<T>>::insert(
- (collection.id, item_id, who.as_sub()),
- block_number,
- ),
- };
-
- Some(())
-}
-
-pub fn withdraw_create_item<T: Config>(
- collection: &CollectionHandle<T>,
- who: &T::AccountId,
- _properties: &CreateItemData,
-) -> Option<()> {
- if _properties.data_size() as u32 > collection.limits.sponsored_data_size() {
- return None;
- }
-
- // sponsor timeout
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
- let limit = collection
- .limits
- .sponsor_transfer_timeout(match _properties {
- CreateItemData::NFT(_) => NFT_SPONSOR_TRANSFER_TIMEOUT,
- CreateItemData::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- CreateItemData::ReFungible(_) => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
- });
-
- if let Some(last_tx_block) = <CreateItemBasket<T>>::get((collection.id, &who)) {
- let timeout = last_tx_block + limit.into();
- if block_number < timeout {
- return None;
- }
- }
-
- CreateItemBasket::<T>::insert((collection.id, who.clone()), block_number);
-
- Some(())
-}
-
-pub fn withdraw_set_variable_meta_data<T: Config>(
- who: &T::CrossAccountId,
- collection: &CollectionHandle<T>,
- item_id: &TokenId,
- data: &[u8],
-) -> Option<()> {
- // TODO: make it work for admins
- if collection.meta_update_permission != MetaUpdatePermission::ItemOwner {
- return None;
- }
- // preliminary sponsoring correctness check
- match collection.mode {
- CollectionMode::NFT => {
- let owner = pallet_nonfungible::TokenData::<T>::get((collection.id, item_id))?.owner;
- if !owner.conv_eq(who) {
- return None;
- }
- }
- CollectionMode::Fungible(_) => {
- if item_id != &TokenId::default() {
- return None;
- }
- if <pallet_fungible::Balance<T>>::get((collection.id, who)) == 0 {
- return None;
- }
- }
- CollectionMode::ReFungible => {
- if !<pallet_refungible::Owned<T>>::get((collection.id, who, item_id)) {
- return None;
- }
- }
- }
-
- // Can't sponsor fungible collection, this tx will be rejected
- // as invalid
- if matches!(collection.mode, CollectionMode::Fungible(_)) {
- return None;
- }
- if data.len() > collection.limits.sponsored_data_size() as usize {
- return None;
- }
-
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
- let limit = collection.limits.sponsored_data_rate_limit()?;
-
- if let Some(last_tx_block) = VariableMetaDataBasket::<T>::get(collection.id, item_id) {
- let timeout = last_tx_block + limit.into();
- if block_number < timeout {
- return None;
- }
- }
-
- <VariableMetaDataBasket<T>>::insert(collection.id, item_id, block_number);
-
- Some(())
-}
-
-pub fn withdraw_approve<T: Config>(
- collection: &CollectionHandle<T>,
- who: &T::AccountId,
- item_id: &TokenId,
-) -> Option<()> {
- // sponsor timeout
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
- let limit = collection.limits.sponsor_approve_timeout();
-
- let last_tx_block = match collection.mode {
- CollectionMode::NFT => <NftApproveBasket<T>>::get(collection.id, item_id),
- CollectionMode::Fungible(_) => <FungibleApproveBasket<T>>::get(collection.id, who),
- CollectionMode::ReFungible => {
- <RefungibleApproveBasket<T>>::get((collection.id, item_id, who))
- }
- };
-
- if let Some(last_tx_block) = last_tx_block {
- let timeout = last_tx_block + limit.into();
- if block_number < timeout {
- return None;
- }
- }
-
- match collection.mode {
- CollectionMode::NFT => <NftApproveBasket<T>>::insert(collection.id, item_id, block_number),
- CollectionMode::Fungible(_) => {
- <FungibleApproveBasket<T>>::insert(collection.id, who, block_number)
- }
- CollectionMode::ReFungible => {
- <RefungibleApproveBasket<T>>::insert((collection.id, item_id, who), block_number)
- }
- };
-
- Some(())
-}
-
-fn load<T: Config>(id: CollectionId) -> Option<(T::AccountId, CollectionHandle<T>)> {
- let collection = CollectionHandle::new(id)?;
- let sponsor = collection.sponsorship.sponsor().cloned()?;
- Some((sponsor, collection))
-}
-
-pub struct NftSponsorshipHandler<T>(PhantomData<T>);
-impl<T, C> SponsorshipHandler<T::AccountId, C> for NftSponsorshipHandler<T>
-where
- T: Config,
- C: IsSubType<Call<T>>,
-{
- fn get_sponsor(who: &T::AccountId, call: &C) -> Option<T::AccountId> {
- match IsSubType::<Call<T>>::is_sub_type(call)? {
- Call::create_item {
- collection_id,
- data,
- ..
- } => {
- let (sponsor, collection) = load(*collection_id)?;
- withdraw_create_item::<T>(&collection, who, data).map(|()| sponsor)
- }
- Call::transfer {
- collection_id,
- item_id,
- ..
- } => {
- let (sponsor, collection) = load(*collection_id)?;
- withdraw_transfer::<T>(
- &collection,
- &T::CrossAccountId::from_sub(who.clone()),
- item_id,
- )
- .map(|()| sponsor)
- }
- Call::transfer_from {
- collection_id,
- item_id,
- from,
- ..
- } => {
- let (sponsor, collection) = load(*collection_id)?;
- withdraw_transfer::<T>(&collection, from, item_id).map(|()| sponsor)
- }
- Call::approve {
- collection_id,
- item_id,
- ..
- } => {
- let (sponsor, collection) = load(*collection_id)?;
- withdraw_approve::<T>(&collection, who, item_id).map(|()| sponsor)
- }
- Call::set_variable_meta_data {
- collection_id,
- item_id,
- data,
- } => {
- let (sponsor, collection) = load(*collection_id)?;
- withdraw_set_variable_meta_data::<T>(
- &T::CrossAccountId::from_sub(who.clone()),
- &collection,
- item_id,
- data,
- )
- .map(|()| sponsor)
- }
- _ => None,
- }
- }
-}
pallets/nft/src/tests.rsdiffbeforeafterboth--- a/pallets/nft/src/tests.rs
+++ /dev/null
@@ -1,2291 +0,0 @@
-// Tests to be written here
-use super::*;
-use crate::mock::*;
-use crate::{AccessMode, CollectionMode, Ownership, CreateItemData};
-use nft_data_structs::{
- CreateNftData, CreateFungibleData, CreateReFungibleData, CollectionId, TokenId,
- MAX_DECIMAL_POINTS,
-};
-use frame_support::{assert_noop, assert_ok};
-use sp_std::convert::TryInto;
-
-fn default_nft_data() -> CreateNftData {
- CreateNftData {
- const_data: vec![1, 2, 3].try_into().unwrap(),
- variable_data: vec![3, 2, 1].try_into().unwrap(),
- }
-}
-
-fn default_fungible_data() -> CreateFungibleData {
- CreateFungibleData { value: 5 }
-}
-
-fn default_re_fungible_data() -> CreateReFungibleData {
- CreateReFungibleData {
- const_data: vec![1, 2, 3].try_into().unwrap(),
- variable_data: vec![3, 2, 1].try_into().unwrap(),
- pieces: 1023,
- }
-}
-
-fn create_test_collection_for_owner(
- mode: &CollectionMode,
- owner: u64,
- id: CollectionId,
-) -> CollectionId {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
- let origin1 = Origin::signed(owner);
- assert_ok!(TemplateModule::create_collection(
- origin1,
- col_name1,
- col_desc1,
- token_prefix1,
- mode.clone()
- ));
-
- let saved_col_name: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let saved_description: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let saved_prefix: Vec<u8> = b"token_prefix1\0".to_vec();
- assert_eq!(TemplateModule::collection_id(id).unwrap().owner, owner);
- assert_eq!(
- TemplateModule::collection_id(id).unwrap().name,
- saved_col_name
- );
- assert_eq!(TemplateModule::collection_id(id).unwrap().mode, *mode);
- assert_eq!(
- TemplateModule::collection_id(id).unwrap().description,
- saved_description
- );
- assert_eq!(
- TemplateModule::collection_id(id).unwrap().token_prefix,
- saved_prefix
- );
- id
-}
-
-fn create_test_collection(mode: &CollectionMode, id: CollectionId) -> CollectionId {
- create_test_collection_for_owner(&mode, 1, id)
-}
-
-fn create_test_item(collection_id: CollectionId, data: &CreateItemData) {
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_item(
- origin1,
- collection_id,
- account(1),
- data.clone()
- ));
-}
-
-fn account(sub: u64) -> TestCrossAccountId {
- TestCrossAccountId::from_sub(sub)
-}
-
-// Use cases tests region
-// #region
-
-#[test]
-fn set_version_schema() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- assert_ok!(TemplateModule::set_schema_version(
- origin1,
- collection_id,
- SchemaVersion::Unique
- ));
- assert_eq!(
- TemplateModule::collection_id(collection_id)
- .unwrap()
- .schema_version,
- SchemaVersion::Unique
- );
- });
-}
-
-#[test]
-fn create_fungible_collection_fails_with_large_decimal_numbers() {
- new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
- let origin1 = Origin::signed(1);
- assert_noop!(
- TemplateModule::create_collection(
- origin1,
- col_name1,
- col_desc1,
- token_prefix1,
- CollectionMode::Fungible(MAX_DECIMAL_POINTS + 1)
- ),
- Error::<Test>::CollectionDecimalPointLimitExceeded
- );
- });
-}
-
-#[test]
-fn create_nft_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.clone().into());
- let item = TemplateModule::nft_item_id(collection_id, 1).unwrap();
- assert_eq!(item.const_data, data.const_data.into_inner());
- assert_eq!(item.variable_data, data.variable_data.into_inner());
- });
-}
-
-// Use cases tests region
-// #region
-#[test]
-fn create_nft_multiple_items() {
- new_test_ext().execute_with(|| {
- create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let items_data = vec![default_nft_data(), default_nft_data(), default_nft_data()];
-
- assert_ok!(TemplateModule::create_multiple_items(
- origin1,
- 1,
- account(1),
- items_data
- .clone()
- .into_iter()
- .map(|d| { d.into() })
- .collect()
- ));
- for (index, data) in items_data.into_iter().enumerate() {
- let item = TemplateModule::nft_item_id(1, (index + 1) as TokenId).unwrap();
- assert_eq!(item.const_data.to_vec(), data.const_data.into_inner());
- assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner());
- }
- });
-}
-
-#[test]
-fn create_refungible_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
-
- let data = default_re_fungible_data();
- create_test_item(collection_id, &data.clone().into());
- let item = TemplateModule::refungible_item_id(collection_id, 1).unwrap();
- assert_eq!(item.const_data, data.const_data.into_inner());
- assert_eq!(item.variable_data, data.variable_data.into_inner());
- assert_eq!(
- item.owner[0],
- Ownership {
- owner: account(1),
- fraction: 1023
- }
- );
- });
-}
-
-#[test]
-fn create_multiple_refungible_items() {
- new_test_ext().execute_with(|| {
- create_test_collection(&CollectionMode::ReFungible, 1);
-
- let origin1 = Origin::signed(1);
-
- let items_data = vec![
- default_re_fungible_data(),
- default_re_fungible_data(),
- default_re_fungible_data(),
- ];
-
- assert_ok!(TemplateModule::create_multiple_items(
- origin1,
- 1,
- account(1),
- items_data
- .clone()
- .into_iter()
- .map(|d| { d.into() })
- .collect()
- ));
- for (index, data) in items_data.into_iter().enumerate() {
- let item = TemplateModule::refungible_item_id(1, (index + 1) as TokenId).unwrap();
- assert_eq!(item.const_data.to_vec(), data.const_data.into_inner());
- assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner());
- assert_eq!(
- item.owner[0],
- Ownership {
- owner: account(1),
- fraction: 1023
- }
- );
- }
- });
-}
-
-#[test]
-fn create_fungible_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
-
- let data = default_fungible_data();
- create_test_item(collection_id, &data.into());
-
- assert_eq!(TemplateModule::fungible_item_id(collection_id, 1).value, 5);
- });
-}
-
-//#[test]
-// fn create_multiple_fungible_items() {
-// new_test_ext().execute_with(|| {
-// default_limits();
-
-// create_test_collection(&CollectionMode::Fungible(3), 1);
-
-// let origin1 = Origin::signed(1);
-
-// let items_data = vec![default_fungible_data(), default_fungible_data(), default_fungible_data()];
-
-// assert_ok!(TemplateModule::create_multiple_items(
-// origin1.clone(),
-// 1,
-// 1,
-// items_data.clone().into_iter().map(|d| { d.into() }).collect()
-// ));
-
-// for (index, _) in items_data.iter().enumerate() {
-// assert_eq!(TemplateModule::fungible_item_id(1, (index + 1) as TokenId).value, 5);
-// }
-// assert_eq!(TemplateModule::balance_count(1, 1), 3000);
-// assert_eq!(TemplateModule::address_tokens(1, 1), [1, 2, 3]);
-// });
-// }
-
-#[test]
-fn transfer_fungible_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- let data = default_fungible_data();
- create_test_item(collection_id, &data.into());
-
- assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 5);
- assert_eq!(TemplateModule::balance_count(1, 1), 5);
-
- // change owner scenario
- assert_ok!(TemplateModule::transfer(origin1, account(2), 1, 1, 5));
- assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 0);
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- assert_eq!(TemplateModule::balance_count(1, 2), 5);
-
- // split item scenario
- assert_ok!(TemplateModule::transfer(
- origin2.clone(),
- account(3),
- 1,
- 1,
- 3
- ));
- assert_eq!(TemplateModule::balance_count(1, 2), 2);
- assert_eq!(TemplateModule::balance_count(1, 3), 3);
-
- // split item and new owner has account scenario
- assert_ok!(TemplateModule::transfer(origin2, account(3), 1, 1, 1));
- assert_eq!(TemplateModule::fungible_item_id(1, 2).value, 1);
- assert_eq!(TemplateModule::fungible_item_id(1, 3).value, 4);
- assert_eq!(TemplateModule::balance_count(1, 2), 1);
- assert_eq!(TemplateModule::balance_count(1, 3), 4);
- });
-}
-
-#[test]
-fn transfer_refungible_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
-
- let data = default_re_fungible_data();
- create_test_item(collection_id, &data.clone().into());
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
- {
- let item = TemplateModule::refungible_item_id(collection_id, 1).unwrap();
- assert_eq!(item.const_data, data.const_data.into_inner());
- assert_eq!(item.variable_data, data.variable_data.into_inner());
- assert_eq!(
- item.owner[0],
- Ownership {
- owner: account(1),
- fraction: 1023
- }
- );
- }
- assert_eq!(TemplateModule::balance_count(1, 1), 1023);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
-
- // change owner scenario
- assert_ok!(TemplateModule::transfer(origin1, account(2), 1, 1, 1023));
- assert_eq!(
- TemplateModule::refungible_item_id(1, 1).unwrap().owner[0],
- Ownership {
- owner: account(2),
- fraction: 1023
- }
- );
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- assert_eq!(TemplateModule::balance_count(1, 2), 1023);
- // assert_eq!(TemplateModule::address_tokens(1, 1), []);
- assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
-
- // split item scenario
- assert_ok!(TemplateModule::transfer(
- origin2.clone(),
- account(3),
- 1,
- 1,
- 500
- ));
- {
- let item = TemplateModule::refungible_item_id(1, 1).unwrap();
- assert_eq!(
- item.owner[0],
- Ownership {
- owner: account(2),
- fraction: 523
- }
- );
- assert_eq!(
- item.owner[1],
- Ownership {
- owner: account(3),
- fraction: 500
- }
- );
- }
- assert_eq!(TemplateModule::balance_count(1, 2), 523);
- assert_eq!(TemplateModule::balance_count(1, 3), 500);
- assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
- assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
-
- // split item and new owner has account scenario
- assert_ok!(TemplateModule::transfer(origin2, account(3), 1, 1, 200));
- {
- let item = TemplateModule::refungible_item_id(1, 1).unwrap();
- assert_eq!(
- item.owner[0],
- Ownership {
- owner: account(2),
- fraction: 323
- }
- );
- assert_eq!(
- item.owner[1],
- Ownership {
- owner: account(3),
- fraction: 700
- }
- );
- }
- assert_eq!(TemplateModule::balance_count(1, 2), 323);
- assert_eq!(TemplateModule::balance_count(1, 3), 700);
- assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
- assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
- });
-}
-
-#[test]
-fn transfer_nft_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
-
- let origin1 = Origin::signed(1);
- // default scenario
- assert_ok!(TemplateModule::transfer(origin1, account(2), 1, 1, 1000));
- assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(2));
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- assert_eq!(TemplateModule::balance_count(1, 2), 1);
- // assert_eq!(TemplateModule::address_tokens(1, 1), []);
- assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
- });
-}
-
-#[test]
-fn nft_approve_and_transfer_from() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
-
- // neg transfer
- assert_noop!(
- TemplateModule::transfer_from(origin2.clone(), account(1), account(2), 1, 1, 1),
- Error::<Test>::NoPermission
- );
-
- // do approve
- assert_ok!(TemplateModule::approve(origin1, account(2), 1, 1, 5));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5);
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5);
-
- assert_ok!(TemplateModule::transfer_from(
- origin2,
- account(1),
- account(3),
- 1,
- 1,
- 1
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 4);
- });
-}
-
-#[test]
-fn nft_approve_and_transfer_from_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.clone().into());
-
- assert_eq!(
- &TemplateModule::nft_item_id(1, 1).unwrap().const_data,
- &data.const_data.into_inner()
- );
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- 1,
- true
- ));
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- 1,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(2)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(3)
- ));
-
- // do approve
- assert_ok!(TemplateModule::approve(
- origin1.clone(),
- account(2),
- 1,
- 1,
- 5
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5);
- assert_ok!(TemplateModule::approve(origin1, account(3), 1, 1, 5));
- assert_eq!(TemplateModule::approved(1, (1, 1, 3)), 5);
-
- assert_ok!(TemplateModule::transfer_from(
- origin2,
- account(1),
- account(3),
- 1,
- 1,
- 1
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 4);
- });
-}
-
-#[test]
-fn refungible_approve_and_transfer_from() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- let data = default_re_fungible_data();
- create_test_item(collection_id, &data.into());
-
- assert_eq!(TemplateModule::balance_count(1, 1), 1023);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- 1,
- true
- ));
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- 1,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(2)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(3)
- ));
-
- // do approve
- assert_ok!(TemplateModule::approve(origin1, account(2), 1, 1, 1023));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1023);
-
- assert_ok!(TemplateModule::transfer_from(
- origin2,
- account(1),
- account(3),
- 1,
- 1,
- 100
- ));
- assert_eq!(TemplateModule::balance_count(1, 1), 923);
- assert_eq!(TemplateModule::balance_count(1, 3), 100);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
- assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
-
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 923);
- });
-}
-
-#[test]
-fn fungible_approve_and_transfer_from() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
-
- let data = default_fungible_data();
- create_test_item(collection_id, &data.into());
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_eq!(TemplateModule::balance_count(1, 1), 5);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- 1,
- true
- ));
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- 1,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(2)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(3)
- ));
-
- // do approve
- assert_ok!(TemplateModule::approve(
- origin1.clone(),
- account(2),
- 1,
- 1,
- 5
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5);
- assert_ok!(TemplateModule::approve(origin1, account(3), 1, 1, 5));
- assert_eq!(TemplateModule::approved(1, (1, 1, 3)), 5);
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5);
-
- assert_ok!(TemplateModule::transfer_from(
- origin2.clone(),
- account(1),
- account(3),
- 1,
- 1,
- 4
- ));
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::balance_count(1, 3), 4);
-
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1);
-
- assert_noop!(
- TemplateModule::transfer_from(origin2, account(1), account(3), 1, 1, 4),
- Error::<Test>::NoPermission
- );
- });
-}
-
-#[test]
-fn change_collection_owner() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::change_collection_owner(
- origin1,
- collection_id,
- 2
- ));
- assert_eq!(
- TemplateModule::collection_id(collection_id).unwrap().owner,
- 2
- );
- });
-}
-
-#[test]
-fn destroy_collection() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::destroy_collection(origin1, collection_id));
- });
-}
-
-#[test]
-fn burn_nft_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- // check balance (collection with id = 1, user id = 1)
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
-
- // burn item
- assert_ok!(TemplateModule::burn_item(
- origin1.clone(),
- collection_id,
- 1,
- 1
- ));
- assert_noop!(
- TemplateModule::burn_item(origin1, collection_id, 1, 1),
- Error::<Test>::TokenNotFound
- );
-
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- });
-}
-
-#[test]
-fn burn_fungible_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- let data = default_fungible_data();
- create_test_item(collection_id, &data.into());
-
- // check balance (collection with id = 1, user id = 1)
- assert_eq!(TemplateModule::balance_count(1, 1), 5);
-
- // burn item
- assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 5));
- assert_noop!(
- TemplateModule::burn_item(origin1, 1, 1, 5),
- Error::<Test>::TokenValueNotEnough
- );
-
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- });
-}
-
-#[test]
-fn burn_refungible_item() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- collection_id,
- true
- ));
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
-
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- 1,
- account(2)
- ));
-
- let data = default_re_fungible_data();
- create_test_item(collection_id, &data.into());
-
- // check balance (collection with id = 1, user id = 2)
- assert_eq!(TemplateModule::balance_count(1, 1), 1023);
-
- // burn item
- assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 1023));
- assert_noop!(
- TemplateModule::burn_item(origin1, 1, 1, 1023),
- Error::<Test>::TokenNotFound
- );
-
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- });
-}
-
-#[test]
-fn add_collection_admin() {
- new_test_ext().execute_with(|| {
- let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
- create_test_collection_for_owner(&CollectionMode::NFT, 2, 2);
- create_test_collection_for_owner(&CollectionMode::NFT, 3, 3);
-
- let origin1 = Origin::signed(1);
-
- // collection admin
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- collection1_id,
- account(2)
- ));
- assert_ok!(TemplateModule::add_collection_admin(
- origin1,
- collection1_id,
- account(3)
- ));
-
- assert!(TemplateModule::admin_list_collection(collection1_id).contains(&account(2)),);
- assert!(TemplateModule::admin_list_collection(collection1_id).contains(&account(3)),);
- });
-}
-
-#[test]
-fn remove_collection_admin() {
- new_test_ext().execute_with(|| {
- let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
- create_test_collection_for_owner(&CollectionMode::NFT, 2, 2);
- create_test_collection_for_owner(&CollectionMode::NFT, 3, 3);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- // collection admin
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- collection1_id,
- account(2)
- ));
- assert_ok!(TemplateModule::add_collection_admin(
- origin1,
- collection1_id,
- account(3)
- ));
-
- assert!(TemplateModule::admin_list_collection(1).contains(&account(2)),);
- assert!(TemplateModule::admin_list_collection(1).contains(&account(3)),);
-
- // remove admin
- assert_ok!(TemplateModule::remove_collection_admin(
- origin2,
- 1,
- account(3)
- ));
- assert!(!TemplateModule::admin_list_collection(1).contains(&account(3)),);
- });
-}
-
-#[test]
-fn balance_of() {
- new_test_ext().execute_with(|| {
- let nft_collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3), 2);
- let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible, 3);
-
- // check balance before
- assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 0);
- assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 0);
- assert_eq!(
- TemplateModule::balance_count(re_fungible_collection_id, 1),
- 0
- );
-
- let nft_data = default_nft_data();
- create_test_item(nft_collection_id, &nft_data.into());
-
- let fungible_data = default_fungible_data();
- create_test_item(fungible_collection_id, &fungible_data.into());
-
- let re_fungible_data = default_re_fungible_data();
- create_test_item(re_fungible_collection_id, &re_fungible_data.into());
-
- // check balance (collection with id = 1, user id = 1)
- assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);
- assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 5);
- assert_eq!(
- TemplateModule::balance_count(re_fungible_collection_id, 1),
- 1023
- );
- assert_eq!(
- TemplateModule::nft_item_id(nft_collection_id, 1)
- .unwrap()
- .owner,
- account(1)
- );
- assert_eq!(
- TemplateModule::fungible_item_id(fungible_collection_id, 1).value,
- 5
- );
- assert_eq!(
- TemplateModule::refungible_item_id(re_fungible_collection_id, 1)
- .unwrap()
- .owner[0]
- .owner,
- account(1)
- );
- });
-}
-
-#[test]
-fn approve() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- let origin1 = Origin::signed(1);
-
- // approve
- assert_ok!(TemplateModule::approve(origin1, account(2), 1, 1, 1));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1);
- });
-}
-
-#[test]
-fn transfer_from() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- // approve
- assert_ok!(TemplateModule::approve(
- origin1.clone(),
- account(2),
- 1,
- 1,
- 1
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- 1,
- true
- ));
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- 1,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(2)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(origin1, 1, account(3)));
-
- assert_ok!(TemplateModule::transfer_from(
- origin2,
- account(1),
- account(2),
- 1,
- 1,
- 1
- ));
-
- // after transfer
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- assert_eq!(TemplateModule::balance_count(1, 2), 1);
- });
-}
-
-// #endregion
-
-// Coverage tests region
-// #region
-
-#[test]
-fn owner_can_add_address_to_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1,
- collection_id,
- account(2)
- ));
- assert!(TemplateModule::allow_list(collection_id, 2));
- });
-}
-
-#[test]
-fn admin_can_add_address_to_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::add_collection_admin(
- origin1,
- collection_id,
- account(2)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin2,
- collection_id,
- account(3)
- ));
- assert!(TemplateModule::allow_list(collection_id, 3));
- });
-}
-
-#[test]
-fn nonprivileged_user_cannot_add_address_to_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin2 = Origin::signed(2);
- assert_noop!(
- TemplateModule::add_to_allow_list(origin2, collection_id, account(3)),
- Error::<Test>::NoPermission
- );
- });
-}
-
-#[test]
-fn nobody_can_add_address_to_allow_list_of_nonexisting_collection() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
-
- assert_noop!(
- TemplateModule::add_to_allow_list(origin1, 1, account(2)),
- Error::<Test>::CollectionNotFound
- );
- });
-}
-
-#[test]
-fn nobody_can_add_address_to_allow_list_of_deleted_collection() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::destroy_collection(
- origin1.clone(),
- collection_id
- ));
- assert_noop!(
- TemplateModule::add_to_allow_list(origin1, collection_id, account(2)),
- Error::<Test>::CollectionNotFound
- );
- });
-}
-
-// If address is already added to allow list, nothing happens
-#[test]
-fn address_is_already_added_to_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1,
- collection_id,
- account(2)
- ));
- assert!(TemplateModule::allow_list(collection_id, 2));
- });
-}
-
-#[test]
-fn owner_can_remove_address_from_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
- assert_ok!(TemplateModule::remove_from_allow_list(
- origin1,
- collection_id,
- account(2)
- ));
- assert!(!TemplateModule::allow_list(collection_id, 2));
- });
-}
-
-#[test]
-fn admin_can_remove_address_from_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1,
- collection_id,
- account(3)
- ));
- assert_ok!(TemplateModule::remove_from_allow_list(
- origin2,
- collection_id,
- account(3)
- ));
- assert!(!TemplateModule::allow_list(collection_id, 3));
- });
-}
-
-#[test]
-fn nonprivileged_user_cannot_remove_address_from_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1,
- collection_id,
- account(2)
- ));
- assert_noop!(
- TemplateModule::remove_from_allow_list(origin2, collection_id, account(2)),
- Error::<Test>::NoPermission
- );
- assert!(TemplateModule::allow_list(collection_id, 2));
- });
-}
-
-#[test]
-fn nobody_can_remove_address_from_allow_list_of_nonexisting_collection() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
-
- assert_noop!(
- TemplateModule::remove_from_allow_list(origin1, 1, account(2)),
- Error::<Test>::CollectionNotFound
- );
- });
-}
-
-#[test]
-fn nobody_can_remove_address_from_allow_list_of_deleted_collection() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
- assert_ok!(TemplateModule::destroy_collection(origin1, collection_id));
- assert_noop!(
- TemplateModule::remove_from_allow_list(origin2, collection_id, account(2)),
- Error::<Test>::CollectionNotFound
- );
- assert!(!TemplateModule::allow_list(collection_id, 2));
- });
-}
-
-// If address is already removed from allow list, nothing happens
-#[test]
-fn address_is_already_removed_from_allow_list() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
- assert_ok!(TemplateModule::remove_from_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
- assert_ok!(TemplateModule::remove_from_allow_list(
- origin1,
- collection_id,
- account(2)
- ));
- assert!(!TemplateModule::allow_list(collection_id, 2));
- });
-}
-
-// If Public Access mode is set to AllowList, tokens can’t be transferred from a non-allowlisted address with transfer or transferFrom (2 tests)
-#[test]
-fn allow_list_test_1() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- assert_noop!(
- TemplateModule::transfer(origin1, account(3), 1, 1, 1),
- Error::<Test>::AddresNotInAllowList
- );
- });
-}
-
-#[test]
-fn allow_list_test_2() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(2)
- ));
-
- // do approve
- assert_ok!(TemplateModule::approve(
- origin1.clone(),
- account(1),
- 1,
- 1,
- 1
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 1)), 1);
-
- assert_ok!(TemplateModule::remove_from_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
-
- assert_noop!(
- TemplateModule::transfer_from(origin1, account(1), account(3), 1, 1, 1),
- Error::<Test>::AddresNotInAllowList
- );
- });
-}
-
-// If Public Access mode is set to AllowList, tokens can’t be transferred to a non-allowlisted address with transfer or transferFrom (2 tests)
-#[test]
-fn allow_list_test_3() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- 1,
- account(1)
- ));
-
- assert_noop!(
- TemplateModule::transfer(origin1, account(3), 1, 1, 1),
- Error::<Test>::AddresNotInAllowList
- );
- });
-}
-
-#[test]
-fn allow_list_test_4() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- // do approve
- assert_ok!(TemplateModule::approve(
- origin1.clone(),
- account(1),
- 1,
- 1,
- 1
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 1)), 1);
-
- assert_ok!(TemplateModule::remove_from_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- assert_noop!(
- TemplateModule::transfer_from(origin1, account(1), account(3), 1, 1, 1),
- Error::<Test>::AddresNotInAllowList
- );
- });
-}
-
-// If Public Access mode is set to AllowList, tokens can’t be destroyed by a non-allowlisted address (even if it owned them before enabling AllowList mode)
-#[test]
-fn allow_list_test_5() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_noop!(
- TemplateModule::burn_item(origin1.clone(), 1, 1, 5),
- Error::<Test>::AddresNotInAllowList
- );
- });
-}
-
-// If Public Access mode is set to AllowList, token transfers can’t be Approved by a non-allowlisted address (see Approve method).
-#[test]
-fn allow_list_test_6() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
-
- // do approve
- assert_noop!(
- TemplateModule::approve(origin1, account(1), 1, 1, 5),
- Error::<Test>::AddresNotInAllowList
- );
- });
-}
-
-// If Public Access mode is set to AllowList, tokens can be transferred from a allowlisted address with transfer or transferFrom (2 tests) and
-// tokens can be transferred from a allowlisted address with transfer or transferFrom (2 tests)
-#[test]
-fn allow_list_test_7() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- assert_ok!(TemplateModule::transfer(origin1, account(2), 1, 1, 1));
- });
-}
-
-#[test]
-fn allow_list_test_8() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
-
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(1)
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(2)
- ));
-
- // do approve
- assert_ok!(TemplateModule::approve(
- origin1.clone(),
- account(1),
- 1,
- 1,
- 5
- ));
- assert_eq!(TemplateModule::approved(1, (1, 1, 1)), 5);
-
- assert_ok!(TemplateModule::transfer_from(
- origin1,
- account(1),
- account(2),
- 1,
- 1,
- 1
- ));
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens can be created by owner.
-#[test]
-fn allow_list_test_9() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1,
- collection_id,
- false
- ));
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens can be created by admin.
-#[test]
-fn allow_list_test_10() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- collection_id,
- false
- ));
-
- assert_ok!(TemplateModule::add_collection_admin(
- origin1,
- collection_id,
- account(2)
- ));
-
- assert_ok!(TemplateModule::create_item(
- origin2,
- collection_id,
- account(2),
- default_nft_data().into()
- ));
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens cannot be created by non-privileged and allow listed address.
-#[test]
-fn allow_list_test_11() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- collection_id,
- false
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1,
- collection_id,
- account(2)
- ));
-
- assert_noop!(
- TemplateModule::create_item(origin2, 1, account(2), default_nft_data().into()),
- Error::<Test>::PublicMintingNotAllowed
- );
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens cannot be created by non-privileged and non-allow listed address.
-#[test]
-fn allow_list_test_12() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1,
- collection_id,
- false
- ));
-
- assert_noop!(
- TemplateModule::create_item(origin2, 1, account(2), default_nft_data().into()),
- Error::<Test>::PublicMintingNotAllowed
- );
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by owner.
-#[test]
-fn allow_list_test_13() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1,
- collection_id,
- true
- ));
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by admin.
-#[test]
-fn allow_list_test_14() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- collection_id,
- true
- ));
-
- assert_ok!(TemplateModule::add_collection_admin(
- origin1,
- collection_id,
- account(2)
- ));
-
- assert_ok!(TemplateModule::create_item(
- origin2,
- 1,
- account(2),
- default_nft_data().into()
- ));
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens cannot be created by non-privileged and non-allow listed address.
-#[test]
-fn allow_list_test_15() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1,
- collection_id,
- true
- ));
-
- assert_noop!(
- TemplateModule::create_item(origin2, 1, account(2), default_nft_data().into()),
- Error::<Test>::AddresNotInAllowList
- );
- });
-}
-
-// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by non-privileged and allow listed address.
-#[test]
-fn allow_list_test_16() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_public_access_mode(
- origin1.clone(),
- collection_id,
- AccessMode::AllowList
- ));
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- collection_id,
- true
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1,
- collection_id,
- account(2)
- ));
-
- assert_ok!(TemplateModule::create_item(
- origin2,
- 1,
- account(2),
- default_nft_data().into()
- ));
- });
-}
-
-// Total number of collections. Positive test
-#[test]
-fn total_number_collections_bound() {
- new_test_ext().execute_with(|| {
- create_test_collection(&CollectionMode::NFT, 1);
- });
-}
-
-// Total number of collections. Negotive test
-#[test]
-fn total_number_collections_bound_neg() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
-
- for i in 0..COLLECTION_NUMBER_LIMIT {
- create_test_collection(&CollectionMode::NFT, i + 1);
- }
-
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
- // 11-th collection in chain. Expects error
- assert_noop!(
- TemplateModule::create_collection(
- origin1,
- col_name1,
- col_desc1,
- token_prefix1,
- CollectionMode::NFT
- ),
- Error::<Test>::TotalCollectionsLimitExceeded
- );
- });
-}
-
-// Owned tokens by a single address. Positive test
-#[test]
-fn owned_tokens_bound() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.clone().into());
- create_test_item(collection_id, &data.into());
- });
-}
-
-// Owned tokens by a single address. Negotive test
-#[test]
-fn owned_tokens_bound_neg() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- for _ in 0..ACCOUNT_TOKEN_OWNERSHIP_LIMIT {
- let data = default_nft_data();
- create_test_item(collection_id, &data.clone().into());
- }
-
- let data = default_nft_data();
- assert_noop!(
- TemplateModule::create_item(origin1, 1, account(1), data.into()),
- Error::<Test>::AccountTokenLimitExceeded
- );
- });
-}
-
-// Number of collection admins. Positive test
-#[test]
-fn collection_admins_bound() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- collection_id,
- account(2)
- ));
- assert_ok!(TemplateModule::add_collection_admin(
- origin1,
- collection_id,
- account(3)
- ));
- });
-}
-
-// Number of collection admins. Negotive test
-#[test]
-fn collection_admins_bound_neg() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- for i in 0..COLLECTION_ADMINS_LIMIT {
- assert_ok!(TemplateModule::add_collection_admin(
- origin1.clone(),
- collection_id,
- account(2 + i)
- ));
- }
- assert_noop!(
- TemplateModule::add_collection_admin(
- origin1,
- collection_id,
- account(3 + COLLECTION_ADMINS_LIMIT)
- ),
- Error::<Test>::CollectionAdminsLimitExceeded
- );
- });
-}
-// #endregion
-
-#[test]
-fn set_const_on_chain_schema() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::set_const_on_chain_schema(
- origin1,
- collection_id,
- b"test const on chain schema".to_vec()
- ));
-
- assert_eq!(
- TemplateModule::collection_id(collection_id)
- .unwrap()
- .const_on_chain_schema,
- b"test const on chain schema".to_vec()
- );
- assert_eq!(
- TemplateModule::collection_id(collection_id)
- .unwrap()
- .variable_on_chain_schema,
- b"".to_vec()
- );
- });
-}
-
-#[test]
-fn set_variable_on_chain_schema() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::set_variable_on_chain_schema(
- origin1,
- collection_id,
- b"test variable on chain schema".to_vec()
- ));
-
- assert_eq!(
- TemplateModule::collection_id(collection_id)
- .unwrap()
- .const_on_chain_schema,
- b"".to_vec()
- );
- assert_eq!(
- TemplateModule::collection_id(collection_id)
- .unwrap()
- .variable_on_chain_schema,
- b"test variable on chain schema".to_vec()
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_token_stores_variable_meta_data() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(1, &data.into());
-
- let variable_data = b"test data".to_vec();
- assert_ok!(TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ));
-
- assert_eq!(
- TemplateModule::nft_item_id(collection_id, 1)
- .unwrap()
- .variable_data,
- variable_data
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_re_fungible_token_stores_variable_meta_data() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_re_fungible_data();
- create_test_item(1, &data.into());
-
- let variable_data = b"test data".to_vec();
- assert_ok!(TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ));
-
- assert_eq!(
- TemplateModule::refungible_item_id(collection_id, 1)
- .unwrap()
- .variable_data,
- variable_data
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_fungible_token_fails() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_fungible_data();
- create_test_item(1, &data.into());
-
- let variable_data = b"test data".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data),
- Error::<Test>::CantStoreMetadataInFungibleTokens
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_token_fails_for_big_data() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(1, &data.into());
-
- let variable_data = b"test set_variable_meta_data method, bigger than limits.".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data),
- Error::<Test>::TokenVariableDataLimitExceeded
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_re_fungible_token_fails_for_big_data() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_re_fungible_data();
- create_test_item(1, &data.into());
-
- let variable_data = b"test set_variable_meta_data method, bigger than limits.".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data),
- Error::<Test>::TokenVariableDataLimitExceeded
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_item_owner_permission_flag() {
- new_test_ext().execute_with(|| {
- //default_limits();
-
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
-
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(1, &data.into());
-
- assert_ok!(TemplateModule::set_meta_update_permission_flag(
- origin1.clone(),
- collection_id,
- MetaUpdatePermission::ItemOwner,
- ));
-
- let variable_data = b"ten chars.".to_vec();
- assert_ok!(TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ));
-
- assert_eq!(
- TemplateModule::nft_item_id(collection_id, 1)
- .unwrap()
- .variable_data,
- variable_data
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_item_owner_permission_flag_neg() {
- new_test_ext().execute_with(|| {
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
-
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin1.clone(),
- collection_id,
- true
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin1.clone(),
- collection_id,
- account(1)
- ));
-
- let data = default_nft_data();
- create_test_item(1, &data.into());
-
- assert_ok!(TemplateModule::set_meta_update_permission_flag(
- origin1.clone(),
- collection_id,
- MetaUpdatePermission::ItemOwner,
- ));
-
- let variable_data = b"1234567890123".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ),
- Error::<Test>::TokenVariableDataLimitExceeded
- );
- })
-}
-
-#[test]
-fn collection_transfer_flag_works() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
-
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::set_transfers_enabled_flag(origin1, 1, true));
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
-
- let origin1 = Origin::signed(1);
-
- // default scenario
- assert_ok!(TemplateModule::transfer(origin1, account(2), 1, 1, 1000));
- assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(2));
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- assert_eq!(TemplateModule::balance_count(1, 2), 1);
-
- assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_admin_flag() {
- new_test_ext().execute_with(|| {
- // default_limits();
-
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin2.clone(),
- collection_id,
- true
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin2.clone(),
- collection_id,
- account(1)
- ));
-
- assert_ok!(TemplateModule::add_collection_admin(
- origin2.clone(),
- collection_id,
- account(1)
- ));
-
- let data = default_nft_data();
- create_test_item(1, &data.into());
-
- assert_ok!(TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::Admin,
- ));
-
- let variable_data = b"test.".to_vec();
- assert_ok!(TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ));
-
- assert_eq!(
- TemplateModule::nft_item_id(collection_id, 1)
- .unwrap()
- .variable_data,
- variable_data
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_admin_flag_neg() {
- new_test_ext().execute_with(|| {
- // default_limits();
-
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
-
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_mint_permission(
- origin2.clone(),
- collection_id,
- true
- ));
- assert_ok!(TemplateModule::add_to_allow_list(
- origin2.clone(),
- collection_id,
- account(1)
- ));
-
- let data = default_nft_data();
- create_test_item(1, &data.into());
-
- assert_ok!(TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::Admin,
- ));
-
- let variable_data = b"test.".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ),
- Error::<Test>::NoPermission
- );
- });
-}
-
-#[test]
-fn set_variable_meta_flag_after_freeze() {
- new_test_ext().execute_with(|| {
- // default_limits();
-
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
-
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::None,
- ));
- assert_noop!(
- TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::Admin
- ),
- Error::<Test>::MetadataFlagFrozen
- );
- });
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_none_flag_neg() {
- new_test_ext().execute_with(|| {
- // default_limits();
-
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
- let origin1 = Origin::signed(1);
-
- let data = default_nft_data();
- create_test_item(1, &data.into());
-
- assert_ok!(TemplateModule::set_meta_update_permission_flag(
- origin1.clone(),
- collection_id,
- MetaUpdatePermission::None,
- ));
-
- let variable_data = b"test.".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(
- origin1.clone(),
- collection_id,
- 1,
- variable_data.clone()
- ),
- Error::<Test>::MetadataUpdateDenied
- );
- });
-}
-
-#[test]
-fn collection_transfer_flag_works_neg() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
-
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::set_transfers_enabled_flag(
- origin1, 1, false
- ));
-
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
-
- let origin1 = Origin::signed(1);
-
- // default scenario
- assert_noop!(
- TemplateModule::transfer(origin1, account(2), 1, 1, 1000),
- Error::<Test>::TransferNotAllowed
- );
- assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(1));
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::balance_count(1, 2), 0);
-
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
- });
-}
pallets/nft/src/weights.rsdiffbeforeafterboth--- a/pallets/nft/src/weights.rs
+++ /dev/null
@@ -1,315 +0,0 @@
-// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
-
-//! Autogenerated weights for pallet_nft
-//!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2021-10-21, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128
-
-// Executed Command:
-// target/release/nft
-// benchmark
-// --pallet
-// pallet-nft
-// --wasm-execution
-// compiled
-// --extrinsic
-// *
-// --template
-// .maintain/frame-weight-template.hbs
-// --steps=50
-// --repeat=20
-// --output=./pallets/nft/src/weights.rs
-
-
-#![cfg_attr(rustfmt, rustfmt_skip)]
-#![allow(unused_parens)]
-#![allow(unused_imports)]
-#![allow(clippy::unnecessary_cast)]
-
-use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
-use sp_std::marker::PhantomData;
-
-/// Weight functions needed for pallet_nft.
-pub trait WeightInfo {
- fn create_collection() -> Weight;
- fn destroy_collection() -> Weight;
- fn add_to_allow_list() -> Weight;
- fn remove_from_allow_list() -> Weight;
- fn set_public_access_mode() -> Weight;
- fn set_mint_permission() -> Weight;
- fn change_collection_owner() -> Weight;
- fn add_collection_admin() -> Weight;
- fn remove_collection_admin() -> Weight;
- fn set_collection_sponsor() -> Weight;
- fn confirm_sponsorship() -> Weight;
- fn remove_collection_sponsor() -> Weight;
- fn set_transfers_enabled_flag() -> Weight;
- fn set_offchain_schema(b: u32, ) -> Weight;
- fn set_const_on_chain_schema(b: u32, ) -> Weight;
- fn set_variable_on_chain_schema(b: u32, ) -> Weight;
- fn set_schema_version() -> Weight;
- fn set_collection_limits() -> Weight;
- fn set_meta_update_permission_flag() -> Weight;
-}
-
-/// Weights for pallet_nft using the Substrate node and recommended hardware.
-pub struct SubstrateWeight<T>(PhantomData<T>);
-impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
- // Storage: Common CreatedCollectionCount (r:1 w:1)
- // Storage: Common DestroyedCollectionCount (r:1 w:0)
- // Storage: System Account (r:2 w:2)
- // Storage: Common CollectionById (r:0 w:1)
- fn create_collection() -> Weight {
- (23_803_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(4 as Weight))
- .saturating_add(T::DbWeight::get().writes(4 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Common DestroyedCollectionCount (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:0 w:1)
- // Storage: Nonfungible TokensBurnt (r:0 w:1)
- fn destroy_collection() -> Weight {
- (27_831_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(2 as Weight))
- .saturating_add(T::DbWeight::get().writes(4 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common Allowlist (r:0 w:1)
- fn add_to_allow_list() -> Weight {
- (6_629_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common Allowlist (r:0 w:1)
- fn remove_from_allow_list() -> Weight {
- (6_596_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_public_access_mode() -> Weight {
- (6_338_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_mint_permission() -> Weight {
- (6_383_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn change_collection_owner() -> Weight {
- (6_493_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common IsAdmin (r:0 w:1)
- fn add_collection_admin() -> Weight {
- (6_850_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common IsAdmin (r:0 w:1)
- fn remove_collection_admin() -> Weight {
- (6_615_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_collection_sponsor() -> Weight {
- (6_430_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn confirm_sponsorship() -> Weight {
- (6_125_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn remove_collection_sponsor() -> Weight {
- (6_236_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_transfers_enabled_flag() -> Weight {
- (6_500_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_offchain_schema(_b: u32, ) -> Weight {
- (6_538_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_const_on_chain_schema(_b: u32, ) -> Weight {
- (6_542_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_variable_on_chain_schema(b: u32, ) -> Weight {
- (6_092_000 as Weight)
- // Standard Error: 0
- .saturating_add((2_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_schema_version() -> Weight {
- (6_470_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_collection_limits() -> Weight {
- (6_841_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_meta_update_permission_flag() -> Weight {
- (6_278_000 as Weight)
- .saturating_add(T::DbWeight::get().reads(1 as Weight))
- .saturating_add(T::DbWeight::get().writes(1 as Weight))
- }
-}
-
-// For backwards compatibility and tests
-impl WeightInfo for () {
- // Storage: Common CreatedCollectionCount (r:1 w:1)
- // Storage: Common DestroyedCollectionCount (r:1 w:0)
- // Storage: System Account (r:2 w:2)
- // Storage: Common CollectionById (r:0 w:1)
- fn create_collection() -> Weight {
- (23_803_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(4 as Weight))
- .saturating_add(RocksDbWeight::get().writes(4 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Common DestroyedCollectionCount (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:0 w:1)
- // Storage: Nonfungible TokensBurnt (r:0 w:1)
- fn destroy_collection() -> Weight {
- (27_831_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(2 as Weight))
- .saturating_add(RocksDbWeight::get().writes(4 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common Allowlist (r:0 w:1)
- fn add_to_allow_list() -> Weight {
- (6_629_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common Allowlist (r:0 w:1)
- fn remove_from_allow_list() -> Weight {
- (6_596_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_public_access_mode() -> Weight {
- (6_338_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_mint_permission() -> Weight {
- (6_383_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn change_collection_owner() -> Weight {
- (6_493_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common IsAdmin (r:0 w:1)
- fn add_collection_admin() -> Weight {
- (6_850_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Common IsAdmin (r:0 w:1)
- fn remove_collection_admin() -> Weight {
- (6_615_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_collection_sponsor() -> Weight {
- (6_430_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn confirm_sponsorship() -> Weight {
- (6_125_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn remove_collection_sponsor() -> Weight {
- (6_236_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_transfers_enabled_flag() -> Weight {
- (6_500_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_offchain_schema(_b: u32, ) -> Weight {
- (6_538_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_const_on_chain_schema(_b: u32, ) -> Weight {
- (6_542_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_variable_on_chain_schema(b: u32, ) -> Weight {
- (6_092_000 as Weight)
- // Standard Error: 0
- .saturating_add((2_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_schema_version() -> Weight {
- (6_470_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_collection_limits() -> Weight {
- (6_841_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
- // Storage: Common CollectionById (r:1 w:1)
- fn set_meta_update_permission_flag() -> Weight {
- (6_278_000 as Weight)
- .saturating_add(RocksDbWeight::get().reads(1 as Weight))
- .saturating_add(RocksDbWeight::get().writes(1 as Weight))
- }
-}
\ No newline at end of file
pallets/nonfungible/Cargo.tomldiffbeforeafterboth--- a/pallets/nonfungible/Cargo.toml
+++ b/pallets/nonfungible/Cargo.toml
@@ -16,7 +16,7 @@
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
pallet-common = { default-features = false, path = '../common' }
-nft-data-structs = { default-features = false, path = '../../primitives/nft' }
+up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
ethereum = { version = "0.10.0", default-features = false }
@@ -32,7 +32,7 @@
"frame-system/std",
"sp-runtime/std",
"sp-std/std",
- "nft-data-structs/std",
+ "up-data-structs/std",
"pallet-common/std",
"evm-coder/std",
"ethereum/std",
pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -4,7 +4,7 @@
use sp_std::prelude::*;
use pallet_common::benchmarking::{create_collection_raw, create_data};
use frame_benchmarking::{benchmarks, account};
-use nft_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH};
+use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH};
use pallet_common::bench_init;
use core::convert::TryInto;
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -1,7 +1,7 @@
use core::marker::PhantomData;
use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight};
-use nft_data_structs::TokenId;
+use up_data_structs::TokenId;
use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
use sp_runtime::DispatchError;
use sp_std::vec::Vec;
@@ -47,11 +47,11 @@
}
fn map_create_data<T: Config>(
- data: nft_data_structs::CreateItemData,
+ data: up_data_structs::CreateItemData,
to: &T::CrossAccountId,
) -> Result<CreateItemData<T>, DispatchError> {
match data {
- nft_data_structs::CreateItemData::NFT(data) => Ok(CreateItemData {
+ up_data_structs::CreateItemData::NFT(data) => Ok(CreateItemData {
const_data: data.const_data,
variable_data: data.variable_data,
owner: to.clone(),
@@ -65,7 +65,7 @@
&self,
sender: T::CrossAccountId,
to: T::CrossAccountId,
- data: nft_data_structs::CreateItemData,
+ data: up_data_structs::CreateItemData,
) -> DispatchResultWithPostInfo {
with_weight(
<Pallet<T>>::create_item(self, &sender, map_create_data(data, &to)?),
@@ -77,7 +77,7 @@
&self,
sender: T::CrossAccountId,
to: T::CrossAccountId,
- data: Vec<nft_data_structs::CreateItemData>,
+ data: Vec<up_data_structs::CreateItemData>,
) -> DispatchResultWithPostInfo {
let data = data
.into_iter()
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -4,7 +4,7 @@
};
use evm_coder::{ToLog, execution::*, generate_stubgen, solidity, solidity_interface, types::*, weight};
use frame_support::BoundedVec;
-use nft_data_structs::TokenId;
+use up_data_structs::TokenId;
use pallet_evm_coder_substrate::dispatch_to_evm;
use sp_core::{H160, U256};
use sp_std::{vec::Vec, vec};
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -2,7 +2,7 @@
use erc::ERC721Events;
use frame_support::{BoundedVec, ensure};
-use nft_data_structs::{
+use up_data_structs::{
AccessMode, CUSTOM_DATA_LIMIT, Collection, CollectionId, CustomDataLimit, TokenId,
};
use pallet_common::{
@@ -42,7 +42,7 @@
pub mod pallet {
use super::*;
use frame_support::{Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key};
- use nft_data_structs::{CollectionId, TokenId};
+ use up_data_structs::{CollectionId, TokenId};
use super::weights::WeightInfo;
#[pallet::error]
@@ -59,7 +59,7 @@
}
#[pallet::pallet]
- #[pallet::generate_store(pub trait Store)]
+ #[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(_);
#[pallet::storage]
@@ -185,9 +185,18 @@
.checked_add(1)
.ok_or(ArithmeticError::Overflow)?;
+ let balance = <AccountBalance<T>>::get((collection.id, token_data.owner.clone()))
+ .checked_sub(1)
+ .ok_or(ArithmeticError::Overflow)?;
+
+ if balance == 0 {
+ <AccountBalance<T>>::remove((collection.id, token_data.owner.clone()));
+ } else {
+ <AccountBalance<T>>::insert((collection.id, token_data.owner.clone()), balance);
+ }
// =========
- <Owned<T>>::remove((collection.id, &token_data.owner, token));
+ <Owned<T>>::remove((collection.id, &token_data.owner.clone(), token));
<TokensBurnt<T>>::insert(collection.id, burnt);
<TokenData<T>>::remove((collection.id, token));
let old_spender = <Allowance<T>>::take((collection.id, token));
pallets/nonfungible/src/weights.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/weights.rs
+++ b/pallets/nonfungible/src/weights.rs
@@ -7,7 +7,7 @@
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128
// Executed Command:
-// target/release/nft
+// target/release/unique-collator
// benchmark
// --pallet
// pallet-nonfungible
pallets/refungible/Cargo.tomldiffbeforeafterboth--- a/pallets/refungible/Cargo.toml
+++ b/pallets/refungible/Cargo.toml
@@ -16,7 +16,7 @@
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
pallet-common = { default-features = false, path = '../common' }
-nft-data-structs = { default-features = false, path = '../../primitives/nft' }
+up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
frame-benchmarking = { default-features = false, optional = true, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
scale-info = { version = "1.0.0", default-features = false, features = [
"derive",
@@ -29,7 +29,7 @@
"frame-system/std",
"sp-runtime/std",
"sp-std/std",
- "nft-data-structs/std",
+ "up-data-structs/std",
"pallet-common/std",
'frame-benchmarking/std',
]
pallets/refungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/refungible/src/benchmarking.rs
+++ b/pallets/refungible/src/benchmarking.rs
@@ -4,7 +4,7 @@
use sp_std::prelude::*;
use pallet_common::benchmarking::{create_collection_raw, create_data};
use frame_benchmarking::{benchmarks, account};
-use nft_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH};
+use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH};
use pallet_common::bench_init;
use core::convert::TryInto;
use core::iter::IntoIterator;
pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -2,7 +2,7 @@
use sp_std::collections::btree_map::BTreeMap;
use frame_support::{dispatch::DispatchResultWithPostInfo, fail, weights::Weight};
-use nft_data_structs::TokenId;
+use up_data_structs::TokenId;
use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
use sp_runtime::DispatchError;
use sp_std::vec::Vec;
@@ -67,11 +67,11 @@
}
fn map_create_data<T: Config>(
- data: nft_data_structs::CreateItemData,
+ data: up_data_structs::CreateItemData,
to: &T::CrossAccountId,
) -> Result<CreateItemData<T>, DispatchError> {
match data {
- nft_data_structs::CreateItemData::ReFungible(data) => Ok(CreateItemData {
+ up_data_structs::CreateItemData::ReFungible(data) => Ok(CreateItemData {
const_data: data.const_data,
variable_data: data.variable_data,
users: {
@@ -89,7 +89,7 @@
&self,
sender: T::CrossAccountId,
to: T::CrossAccountId,
- data: nft_data_structs::CreateItemData,
+ data: up_data_structs::CreateItemData,
) -> DispatchResultWithPostInfo {
with_weight(
<Pallet<T>>::create_item(self, &sender, map_create_data(data, &to)?),
@@ -101,7 +101,7 @@
&self,
sender: T::CrossAccountId,
to: T::CrossAccountId,
- data: Vec<nft_data_structs::CreateItemData>,
+ data: Vec<up_data_structs::CreateItemData>,
) -> DispatchResultWithPostInfo {
let data = data
.into_iter()
pallets/refungible/src/erc.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -1,4 +1,4 @@
-use nft_data_structs::TokenId;
+use up_data_structs::TokenId;
use pallet_common::erc::CommonEvmHandler;
use crate::{Config, RefungibleHandle};
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -1,7 +1,7 @@
#![cfg_attr(not(feature = "std"), no_std)]
use frame_support::{ensure, BoundedVec};
-use nft_data_structs::{
+use up_data_structs::{
AccessMode, CUSTOM_DATA_LIMIT, Collection, CollectionId, CustomDataLimit,
MAX_REFUNGIBLE_PIECES, TokenId,
};
@@ -37,7 +37,7 @@
pub mod pallet {
use super::*;
use frame_support::{Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key};
- use nft_data_structs::{CollectionId, TokenId};
+ use up_data_structs::{CollectionId, TokenId};
use super::weights::WeightInfo;
#[pallet::error]
@@ -54,7 +54,7 @@
}
#[pallet::pallet]
- #[pallet::generate_store(pub trait Store)]
+ #[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(_);
#[pallet::storage]
@@ -175,6 +175,8 @@
<TotalSupply<T>>::remove_prefix((id,), None);
<Balance<T>>::remove_prefix((id,), None);
<Allowance<T>>::remove_prefix((id,), None);
+ <Owned<T>>::remove_prefix((id,), None);
+ <AccountBalance<T>>::remove_prefix((id,), None);
Ok(())
}
@@ -464,7 +466,11 @@
token: TokenId,
amount: u128,
) {
- <Allowance<T>>::insert((collection.id, token, sender, spender), amount);
+ if amount == 0 {
+ <Allowance<T>>::remove((collection.id, token, sender, spender));
+ } else {
+ <Allowance<T>>::insert((collection.id, token, sender, spender), amount);
+ }
// TODO: ERC20 approval event
<PalletCommon<T>>::deposit_event(CommonEvent::Approved(
collection.id,
pallets/refungible/src/weights.rsdiffbeforeafterboth--- a/pallets/refungible/src/weights.rs
+++ b/pallets/refungible/src/weights.rs
@@ -7,7 +7,7 @@
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128
// Executed Command:
-// target/release/nft
+// target/release/unique-collator
// benchmark
// --pallet
// pallet-refungible
pallets/scheduler/Cargo.tomldiffbeforeafterboth--- a/pallets/scheduler/Cargo.toml
+++ b/pallets/scheduler/Cargo.toml
@@ -1,12 +1,12 @@
[package]
name = "pallet-unq-scheduler"
-version = "3.0.0"
-authors = ["Parity Technologies <admin@parity.io>"]
+version = "0.1.0"
+authors = ["Unique Network <support@uniquenetwork.io>"]
edition = "2021"
-license = "Unlicense"
-homepage = "https://substrate.dev"
-repository = "https://github.com/paritytech/substrate/"
-description = "FRAME example pallet"
+license = "All Rights Reserved"
+homepage = "https://unique.network"
+repository = "https://github.com/UniqueNetwork/unique-chain"
+description = "Unique Scheduler pallet"
readme = "README.md"
[dependencies]
pallets/scheduler/src/lib.rsdiffbeforeafterboth--- a/pallets/scheduler/src/lib.rs
+++ b/pallets/scheduler/src/lib.rs
@@ -738,9 +738,7 @@
use super::*;
use frame_support::{
- Hashable, assert_err, assert_noop, assert_ok, ord_parameter_types, parameter_types,
- traits::{Contains, OnFinalize, OnInitialize},
- weights::constants::RocksDbWeight,
+ ord_parameter_types, parameter_types, traits::Contains, weights::constants::RocksDbWeight,
};
use sp_core::H256;
use sp_runtime::{
@@ -749,7 +747,6 @@
traits::{BlakeTwo256, IdentityLookup},
};
use frame_system::{EnsureOneOf, EnsureRoot, EnsureSignedBy};
- use substrate_test_utils::assert_eq_uvec;
use crate as scheduler;
mod logger {
@@ -758,9 +755,6 @@
thread_local! {
static LOG: RefCell<Vec<(OriginCaller, u32)>> = RefCell::new(Vec::new());
- }
- pub fn log() -> Vec<(OriginCaller, u32)> {
- LOG.with(|log| log.borrow().clone())
}
pub trait Config: system::Config {
type Event: From<Event> + Into<<Self as system::Config>::Event>;
@@ -871,24 +865,5 @@
type MaxScheduledPerBlock = MaxScheduledPerBlock;
type WeightInfo = ();
type SponsorshipHandler = ();
- }
-
- pub fn new_test_ext() -> sp_io::TestExternalities {
- let t = system::GenesisConfig::default()
- .build_storage::<Test>()
- .unwrap();
- t.into()
- }
-
- fn run_to_block(n: u64) {
- while System::block_number() < n {
- Scheduler::on_finalize(System::block_number());
- System::set_block_number(System::block_number() + 1);
- Scheduler::on_initialize(System::block_number());
- }
- }
-
- fn root() -> OriginCaller {
- system::RawOrigin::Root.into()
}
}
pallets/unique/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/Cargo.toml
@@ -0,0 +1,150 @@
+################################################################################
+# Package
+
+[package]
+authors = ['Unique Network <support@uniquenetwork.io>']
+description = 'Unique Pallet'
+edition = '2018'
+homepage = 'https://unique.network'
+license = 'All Rights Reserved'
+name = 'pallet-unique'
+repository = 'https://github.com/UniqueNetwork/unique-chain'
+version = '0.1.0'
+
+[package.metadata.docs.rs]
+targets = ['x86_64-unknown-linux-gnu']
+
+[features]
+default = ['std']
+runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks']
+std = [
+ 'codec/std',
+ 'serde/std',
+ 'frame-support/std',
+ 'frame-system/std',
+ 'pallet-balances/std',
+ 'pallet-evm/std',
+ 'pallet-timestamp/std',
+ 'pallet-randomness-collective-flip/std',
+ 'pallet-transaction-payment/std',
+ 'pallet-common/std',
+ 'pallet-fungible/std',
+ 'pallet-nonfungible/std',
+ 'pallet-refungible/std',
+ 'fp-evm/std',
+ 'up-data-structs/std',
+ 'up-sponsorship/std',
+ 'up-evm-mapping/std',
+ 'sp-std/std',
+ 'sp-api/std',
+ 'sp-runtime/std',
+ 'frame-benchmarking/std',
+ 'ethereum/std',
+ 'rlp/std',
+
+ 'primitive-types/std',
+ 'evm-coder/std',
+ 'pallet-evm-coder-substrate/std',
+]
+limit-testing = ["up-data-structs/limit-testing"]
+
+################################################################################
+# Substrate Dependencies
+
+[dependencies.codec]
+default-features = false
+features = ['derive']
+package = 'parity-scale-codec'
+version = '2.3.0'
+
+[dependencies.frame-benchmarking]
+default-features = false
+optional = true
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.frame-support]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.frame-system]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.pallet-balances]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.pallet-timestamp]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.pallet-randomness-collective-flip]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.sp-std]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.pallet-transaction-payment]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.serde]
+default-features = false
+features = ['derive']
+version = '1.0.130'
+
+[dependencies.sp-runtime]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.sp-core]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+[dependencies.sp-io]
+default-features = false
+git = 'https://github.com/paritytech/substrate.git'
+branch = 'polkadot-v0.9.12'
+
+
+################################################################################
+# Local Dependencies
+[dependencies]
+up-data-structs = { default-features = false, path = "../../primitives/data-structs" }
+
+scale-info = { version = "1.0.0", default-features = false, features = [
+ "derive",
+] }
+ethereum = { version = "0.10.0", default-features = false }
+rlp = { default-features = false, version = "0.5.0" }
+sp-api = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.12" }
+
+up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring" }
+up-evm-mapping = { default-features = false, path = "../../primitives/evm-mapping" }
+evm-coder = { default-features = false, path = "../../crates/evm-coder" }
+pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
+primitive-types = { version = "0.10.1", default-features = false, features = [
+ "serde_no_std",
+] }
+
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
+fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.12-weights" }
+hex-literal = "0.3.3"
+
+pallet-common = { default-features = false, path = "../common" }
+pallet-fungible = { default-features = false, path = "../fungible" }
+pallet-nonfungible = { default-features = false, path = "../nonfungible" }
+pallet-refungible = { default-features = false, path = "../refungible" }
pallets/unique/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/benchmarking.rs
@@ -0,0 +1,173 @@
+#![cfg(feature = "runtime-benchmarks")]
+
+use super::*;
+use crate::Pallet;
+use frame_system::RawOrigin;
+use frame_benchmarking::{benchmarks, account};
+use up_data_structs::*;
+use core::convert::TryInto;
+use sp_runtime::DispatchError;
+use pallet_common::benchmarking::{create_data, create_u16_data};
+
+const SEED: u32 = 1;
+
+fn create_collection_helper<T: Config>(
+ owner: T::AccountId,
+ mode: CollectionMode,
+) -> Result<CollectionId, DispatchError> {
+ T::Currency::deposit_creating(&owner, T::CollectionCreationPrice::get());
+ let col_name = create_u16_data(MAX_COLLECTION_NAME_LENGTH)
+ .try_into()
+ .unwrap();
+ let col_desc = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH)
+ .try_into()
+ .unwrap();
+ let token_prefix = create_data(MAX_TOKEN_PREFIX_LENGTH).try_into().unwrap();
+ <Pallet<T>>::create_collection(
+ RawOrigin::Signed(owner).into(),
+ col_name,
+ col_desc,
+ token_prefix,
+ mode,
+ )?;
+ Ok(<pallet_common::CreatedCollectionCount<T>>::get())
+}
+fn create_nft_collection<T: Config>(owner: T::AccountId) -> Result<CollectionId, DispatchError> {
+ create_collection_helper::<T>(owner, CollectionMode::NFT)
+}
+
+benchmarks! {
+
+ create_collection {
+ let col_name: Vec<u16> = create_u16_data(MAX_COLLECTION_NAME_LENGTH);
+ let col_desc: Vec<u16> = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH);
+ let token_prefix: Vec<u8> = create_data(MAX_TOKEN_PREFIX_LENGTH);
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = account("caller", 0, SEED);
+ T::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
+ }: _(RawOrigin::Signed(caller.clone()), col_name.clone(), col_desc.clone(), token_prefix.clone(), mode)
+ verify {
+ assert_eq!(<pallet_common::CollectionById<T>>::get(CollectionId(1)).unwrap().owner, caller);
+ }
+
+ destroy_collection {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection)
+
+ add_to_allow_list {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let allowlist_account: T::AccountId = account("admin", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))
+
+ remove_from_allow_list {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let allowlist_account: T::AccountId = account("admin", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ <Pallet<T>>::add_to_allow_list(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(allowlist_account.clone()))?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))
+
+ set_public_access_mode {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, AccessMode::AllowList)
+
+ set_mint_permission {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, true)
+
+ change_collection_owner {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ let new_owner: T::AccountId = account("admin", 0, SEED);
+ }: _(RawOrigin::Signed(caller.clone()), collection, new_owner)
+
+ add_collection_admin {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ let new_admin: T::AccountId = account("admin", 0, SEED);
+ }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))
+
+ remove_collection_admin {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ let new_admin: T::AccountId = account("admin", 0, SEED);
+ <Pallet<T>>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(new_admin.clone()))?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))
+
+ set_collection_sponsor {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, caller.clone())
+
+ confirm_sponsorship {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ <Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), collection, caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection)
+
+ remove_collection_sponsor {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ <Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), collection, caller.clone())?;
+ <Pallet<T>>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), collection)?;
+ }: _(RawOrigin::Signed(caller.clone()), collection)
+
+ set_transfers_enabled_flag {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, false)
+
+ set_offchain_schema {
+ let b in 0..OFFCHAIN_SCHEMA_LIMIT;
+
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ let data = create_data(b as usize);
+ }: set_offchain_schema(RawOrigin::Signed(caller.clone()), collection, data)
+
+ set_const_on_chain_schema {
+ let b in 0..CONST_ON_CHAIN_SCHEMA_LIMIT;
+
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ let data = create_data(b as usize);
+ }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)
+
+ set_variable_on_chain_schema {
+ let b in 0..VARIABLE_ON_CHAIN_SCHEMA_LIMIT;
+
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ let data = create_data(b as usize);
+ }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)
+
+ set_schema_version {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: set_schema_version(RawOrigin::Signed(caller.clone()), collection, SchemaVersion::Unique)
+
+ set_collection_limits{
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+
+ let cl = CollectionLimits {
+ account_token_ownership_limit: Some(0),
+ sponsored_data_size: Some(0),
+ token_limit: Some(1),
+ sponsor_transfer_timeout: Some(0),
+ sponsor_approve_timeout: None,
+ owner_can_destroy: Some(true),
+ owner_can_transfer: Some(true),
+ sponsored_data_rate_limit: None,
+ transfers_enabled: Some(true),
+ };
+ }: set_collection_limits(RawOrigin::Signed(caller.clone()), collection, cl)
+
+ set_meta_update_permission_flag {
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), collection, MetaUpdatePermission::Admin)
+}
pallets/unique/src/common.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/common.rs
@@ -0,0 +1,52 @@
+use core::marker::PhantomData;
+use frame_support::{weights::Weight};
+use pallet_common::{CommonWeightInfo};
+
+use pallet_fungible::{common::CommonWeights as FungibleWeights};
+use pallet_nonfungible::{common::CommonWeights as NonfungibleWeights};
+use pallet_refungible::{common::CommonWeights as RefungibleWeights};
+
+use crate::{Config, dispatch::dispatch_weight};
+
+macro_rules! max_weight_of {
+ ($method:ident ( $($args:tt)* )) => {
+ <FungibleWeights<T>>::$method($($args)*)
+ .max(<NonfungibleWeights<T>>::$method($($args)*))
+ .max(<RefungibleWeights<T>>::$method($($args)*))
+ };
+}
+
+pub struct CommonWeights<T: Config>(PhantomData<T>);
+impl<T: Config> CommonWeightInfo for CommonWeights<T> {
+ fn create_item() -> up_data_structs::Weight {
+ dispatch_weight::<T>() + max_weight_of!(create_item())
+ }
+
+ fn create_multiple_items(amount: u32) -> Weight {
+ dispatch_weight::<T>() + max_weight_of!(create_multiple_items(amount))
+ }
+
+ fn burn_item() -> Weight {
+ dispatch_weight::<T>() + max_weight_of!(burn_item())
+ }
+
+ fn transfer() -> up_data_structs::Weight {
+ dispatch_weight::<T>() + max_weight_of!(transfer())
+ }
+
+ fn approve() -> up_data_structs::Weight {
+ dispatch_weight::<T>() + max_weight_of!(approve())
+ }
+
+ fn transfer_from() -> up_data_structs::Weight {
+ dispatch_weight::<T>() + max_weight_of!(transfer_from())
+ }
+
+ fn set_variable_metadata(bytes: u32) -> up_data_structs::Weight {
+ dispatch_weight::<T>() + max_weight_of!(set_variable_metadata(bytes))
+ }
+
+ fn burn_from() -> Weight {
+ dispatch_weight::<T>() + max_weight_of!(burn_from())
+ }
+}
pallets/unique/src/dispatch.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/dispatch.rs
@@ -0,0 +1,88 @@
+use frame_support::{
+ dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo},
+ traits::Get,
+ weights::Weight,
+};
+use up_data_structs::{CollectionId, CollectionMode, Pays, PostDispatchInfo};
+use pallet_common::{CollectionHandle, CommonCollectionOperations};
+use pallet_fungible::FungibleHandle;
+use pallet_nonfungible::NonfungibleHandle;
+use pallet_refungible::RefungibleHandle;
+
+use crate::Config;
+
+// TODO: move to benchmarking
+/// Price of [`dispatch_call`] call with noop `call` argument
+pub fn dispatch_weight<T: Config>() -> Weight {
+ // Read collection
+ <T as frame_system::Config>::DbWeight::get().reads(1)
+ // Dynamic dispatch?
+ + 6_000_000
+ // submit_logs is measured as part of collection pallets
+}
+
+pub enum Dispatched<T: Config> {
+ Fungible(FungibleHandle<T>),
+ Nonfungible(NonfungibleHandle<T>),
+ Refungible(RefungibleHandle<T>),
+}
+impl<T: Config> Dispatched<T> {
+ pub fn dispatch(handle: CollectionHandle<T>) -> Self {
+ match handle.mode {
+ CollectionMode::Fungible(_) => Self::Fungible(FungibleHandle::cast(handle)),
+ CollectionMode::NFT => Self::Nonfungible(NonfungibleHandle::cast(handle)),
+ CollectionMode::ReFungible => Self::Refungible(RefungibleHandle::cast(handle)),
+ }
+ }
+ fn into_inner(self) -> CollectionHandle<T> {
+ match self {
+ Dispatched::Fungible(f) => f.into_inner(),
+ Dispatched::Nonfungible(f) => f.into_inner(),
+ Dispatched::Refungible(f) => f.into_inner(),
+ }
+ }
+ pub fn as_dyn(&self) -> &dyn CommonCollectionOperations<T> {
+ match self {
+ Dispatched::Fungible(h) => h,
+ Dispatched::Nonfungible(h) => h,
+ Dispatched::Refungible(h) => h,
+ }
+ }
+}
+
+/// Helper function to implement substrate calls for common collection methods
+pub fn dispatch_call<
+ T: Config,
+ C: FnOnce(&dyn pallet_common::CommonCollectionOperations<T>) -> DispatchResultWithPostInfo,
+>(
+ collection: CollectionId,
+ call: C,
+) -> DispatchResultWithPostInfo {
+ let handle =
+ CollectionHandle::try_get(collection).map_err(|error| DispatchErrorWithPostInfo {
+ post_info: PostDispatchInfo {
+ actual_weight: Some(dispatch_weight::<T>()),
+ pays_fee: Pays::Yes,
+ },
+ error,
+ })?;
+ let dispatched = Dispatched::dispatch(handle);
+ let mut result = call(dispatched.as_dyn());
+ match &mut result {
+ Ok(PostDispatchInfo {
+ actual_weight: Some(weight),
+ ..
+ })
+ | Err(DispatchErrorWithPostInfo {
+ post_info: PostDispatchInfo {
+ actual_weight: Some(weight),
+ ..
+ },
+ ..
+ }) => *weight += dispatch_weight::<T>(),
+ _ => {}
+ }
+
+ dispatched.into_inner().submit_logs();
+ result
+}
pallets/unique/src/eth/mod.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/eth/mod.rs
@@ -0,0 +1,80 @@
+pub mod sponsoring;
+
+use fp_evm::PrecompileResult;
+use pallet_common::{
+ CollectionById,
+ erc::CommonEvmHandler,
+ eth::{map_eth_to_id, map_eth_to_token_id},
+};
+use pallet_fungible::FungibleHandle;
+use pallet_nonfungible::NonfungibleHandle;
+use pallet_refungible::{RefungibleHandle, erc::RefungibleTokenHandle};
+use sp_std::borrow::ToOwned;
+use sp_std::vec::Vec;
+use sp_core::{H160, U256};
+use crate::{CollectionMode, Config, dispatch::Dispatched};
+use pallet_common::CollectionHandle;
+
+pub struct UniqueErcSupport<T: Config>(core::marker::PhantomData<T>);
+
+impl<T: Config> pallet_evm::OnMethodCall<T> for UniqueErcSupport<T> {
+ fn is_reserved(target: &H160) -> bool {
+ map_eth_to_id(target).is_some()
+ }
+ fn is_used(target: &H160) -> bool {
+ map_eth_to_id(target)
+ .map(<CollectionById<T>>::contains_key)
+ .unwrap_or(false)
+ }
+ fn get_code(target: &H160) -> Option<Vec<u8>> {
+ if let Some(collection_id) = map_eth_to_id(target) {
+ let collection = <CollectionById<T>>::get(collection_id)?;
+ Some(
+ match collection.mode {
+ CollectionMode::NFT => <NonfungibleHandle<T>>::CODE,
+ CollectionMode::Fungible(_) => <FungibleHandle<T>>::CODE,
+ CollectionMode::ReFungible => <RefungibleHandle<T>>::CODE,
+ }
+ .to_owned(),
+ )
+ } else if let Some((collection_id, _token_id)) = map_eth_to_token_id(target) {
+ let collection = <CollectionById<T>>::get(collection_id)?;
+ if collection.mode != CollectionMode::ReFungible {
+ return None;
+ }
+ // TODO: check token existence
+ Some(<RefungibleTokenHandle<T>>::CODE.to_owned())
+ } else {
+ None
+ }
+ }
+ fn call(
+ source: &H160,
+ target: &H160,
+ gas_limit: u64,
+ input: &[u8],
+ value: U256,
+ ) -> Option<PrecompileResult> {
+ if let Some(collection_id) = map_eth_to_id(target) {
+ let collection = <CollectionHandle<T>>::new_with_gas_limit(collection_id, gas_limit)?;
+ let dispatched = Dispatched::dispatch(collection);
+
+ match dispatched {
+ Dispatched::Fungible(h) => h.call(source, input, value),
+ Dispatched::Nonfungible(h) => h.call(source, input, value),
+ Dispatched::Refungible(h) => h.call(source, input, value),
+ }
+ } else if let Some((collection_id, token_id)) = map_eth_to_token_id(target) {
+ let collection = <CollectionHandle<T>>::new_with_gas_limit(collection_id, gas_limit)?;
+ if collection.mode != CollectionMode::ReFungible {
+ return None;
+ }
+
+ let handle = RefungibleHandle::cast(collection);
+ // TODO: check token existence
+ RefungibleTokenHandle(handle, token_id).call(source, input, value)
+ } else {
+ None
+ }
+ }
+}
pallets/unique/src/eth/sponsoring.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/eth/sponsoring.rs
@@ -0,0 +1,74 @@
+//! Implements EVM sponsoring logic via OnChargeEVMTransaction
+
+use crate::{Config, sponsorship::*};
+use evm_coder::{Call, abi::AbiReader};
+use pallet_common::{CollectionHandle, eth::map_eth_to_id};
+use sp_core::H160;
+use sp_std::prelude::*;
+use up_sponsorship::SponsorshipHandler;
+use core::marker::PhantomData;
+use core::convert::TryInto;
+use up_data_structs::TokenId;
+use up_evm_mapping::EvmBackwardsAddressMapping;
+use pallet_common::account::CrossAccountId;
+
+use pallet_nonfungible::erc::{UniqueNFTCall, ERC721UniqueExtensionsCall, ERC721Call};
+use pallet_fungible::erc::{UniqueFungibleCall, ERC20Call};
+
+pub struct UniqueEthSponsorshipHandler<T: Config>(PhantomData<*const T>);
+impl<T: Config> SponsorshipHandler<H160, (H160, Vec<u8>)> for UniqueEthSponsorshipHandler<T> {
+ fn get_sponsor(who: &H160, call: &(H160, Vec<u8>)) -> Option<H160> {
+ let collection_id = map_eth_to_id(&call.0)?;
+ let collection = <CollectionHandle<T>>::new(collection_id)?;
+ let sponsor = collection.sponsorship.sponsor()?.clone();
+ let sponsor =
+ <T as pallet_common::Config>::EvmBackwardsAddressMapping::from_account_id(sponsor);
+ let who = T::CrossAccountId::from_eth(*who);
+ let (method_id, mut reader) = AbiReader::new_call(&call.1).ok()?;
+ match &collection.mode {
+ crate::CollectionMode::NFT => {
+ let call = <UniqueNFTCall<T>>::parse(method_id, &mut reader).ok()??;
+ match call {
+ UniqueNFTCall::ERC721UniqueExtensions(
+ ERC721UniqueExtensionsCall::Transfer { token_id, .. },
+ ) => {
+ let token_id: TokenId = token_id.try_into().ok()?;
+ withdraw_transfer::<T>(&collection, &who, &token_id).map(|()| sponsor)
+ }
+ UniqueNFTCall::ERC721(ERC721Call::TransferFrom { token_id, from, .. }) => {
+ let token_id: TokenId = token_id.try_into().ok()?;
+ let from = T::CrossAccountId::from_eth(from);
+ withdraw_transfer::<T>(&collection, &from, &token_id).map(|()| sponsor)
+ }
+ UniqueNFTCall::ERC721(ERC721Call::Approve { token_id, .. }) => {
+ let token_id: TokenId = token_id.try_into().ok()?;
+ withdraw_approve::<T>(&collection, who.as_sub(), &token_id)
+ .map(|()| sponsor)
+ }
+ _ => None,
+ }
+ }
+ crate::CollectionMode::Fungible(_) => {
+ let call = <UniqueFungibleCall<T>>::parse(method_id, &mut reader).ok()??;
+ #[allow(clippy::single_match)]
+ match call {
+ UniqueFungibleCall::ERC20(ERC20Call::Transfer { .. }) => {
+ withdraw_transfer::<T>(&collection, &who, &TokenId::default())
+ .map(|()| sponsor)
+ }
+ UniqueFungibleCall::ERC20(ERC20Call::TransferFrom { from, .. }) => {
+ let from = T::CrossAccountId::from_eth(from);
+ withdraw_transfer::<T>(&collection, &from, &TokenId::default())
+ .map(|()| sponsor)
+ }
+ UniqueFungibleCall::ERC20(ERC20Call::Approve { .. }) => {
+ withdraw_approve::<T>(&collection, who.as_sub(), &TokenId::default())
+ .map(|()| sponsor)
+ }
+ _ => None,
+ }
+ }
+ _ => None,
+ }
+ }
+}
pallets/unique/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/lib.rs
@@ -0,0 +1,955 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
+#![recursion_limit = "1024"]
+#![cfg_attr(not(feature = "std"), no_std)]
+#![allow(
+ clippy::too_many_arguments,
+ clippy::unnecessary_mut_passed,
+ clippy::unused_unit
+)]
+
+extern crate alloc;
+
+pub use serde::{Serialize, Deserialize};
+
+pub use frame_support::{
+ construct_runtime, decl_module, decl_storage, decl_error,
+ dispatch::DispatchResult,
+ ensure, fail, parameter_types,
+ traits::{
+ ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced, Randomness,
+ IsSubType, WithdrawReasons,
+ },
+ weights::{
+ constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
+ DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
+ WeightToFeePolynomial, DispatchClass,
+ },
+ StorageValue, transactional,
+ pallet_prelude::DispatchResultWithPostInfo,
+};
+use scale_info::TypeInfo;
+use frame_system::{self as system, ensure_signed};
+use sp_runtime::{sp_std::prelude::Vec};
+use up_data_structs::{
+ MAX_DECIMAL_POINTS, MAX_SPONSOR_TIMEOUT, MAX_TOKEN_OWNERSHIP, CUSTOM_DATA_LIMIT,
+ VARIABLE_ON_CHAIN_SCHEMA_LIMIT, CONST_ON_CHAIN_SCHEMA_LIMIT, OFFCHAIN_SCHEMA_LIMIT,
+ FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ NFT_SPONSOR_TRANSFER_TIMEOUT, AccessMode, Collection, CreateItemData, CollectionLimits,
+ CollectionId, CollectionMode, TokenId, SchemaVersion, SponsorshipState, MetaUpdatePermission,
+};
+use pallet_common::{
+ account::CrossAccountId, CollectionHandle, Pallet as PalletCommon, Error as CommonError,
+ CommonWeightInfo,
+};
+use pallet_refungible::{Pallet as PalletRefungible, RefungibleHandle};
+use pallet_fungible::{Pallet as PalletFungible, FungibleHandle};
+use pallet_nonfungible::{Pallet as PalletNonfungible, NonfungibleHandle};
+
+#[cfg(test)]
+mod mock;
+
+#[cfg(test)]
+mod tests;
+
+mod eth;
+mod sponsorship;
+pub use sponsorship::UniqueSponsorshipHandler;
+pub use eth::sponsoring::UniqueEthSponsorshipHandler;
+
+pub use eth::UniqueErcSupport;
+
+pub mod common;
+use common::CommonWeights;
+pub mod dispatch;
+use dispatch::dispatch_call;
+
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
+pub mod weights;
+use weights::WeightInfo;
+
+decl_error! {
+ /// Error for non-fungible-token module.
+ pub enum Error for Module<T: Config> {
+ /// Decimal_points parameter must be lower than MAX_DECIMAL_POINTS constant, currently it is 30.
+ CollectionDecimalPointLimitExceeded,
+ /// This address is not set as sponsor, use setCollectionSponsor first.
+ ConfirmUnsetSponsorFail,
+ /// Length of items properties must be greater than 0.
+ EmptyArgument,
+ /// Collection limit bounds per collection exceeded
+ CollectionLimitBoundsExceeded,
+ /// Tried to enable permissions which are only permitted to be disabled
+ OwnerPermissionsCantBeReverted,
+ }
+}
+pub trait Config:
+ system::Config
+ + pallet_evm_coder_substrate::Config
+ + pallet_common::Config
+ + pallet_nonfungible::Config
+ + pallet_refungible::Config
+ + pallet_fungible::Config
+ + Sized
+ + TypeInfo
+{
+ /// Weight information for extrinsics in this pallet.
+ type WeightInfo: WeightInfo;
+}
+
+type SelfWeightOf<T> = <T as Config>::WeightInfo;
+
+// # Used definitions
+//
+// ## User control levels
+//
+// chain-controlled - key is uncontrolled by user
+// i.e autoincrementing index
+// can use non-cryptographic hash
+// real - key is controlled by user
+// but it is hard to generate enough colliding values, i.e owner of signed txs
+// can use non-cryptographic hash
+// controlled - key is completly controlled by users
+// i.e maps with mutable keys
+// should use cryptographic hash
+//
+// ## User control level downgrade reasons
+//
+// ?1 - chain-controlled -> controlled
+// collections/tokens can be destroyed, resulting in massive holes
+// ?2 - chain-controlled -> controlled
+// same as ?1, but can be only added, resulting in easier exploitation
+// ?3 - real -> controlled
+// no confirmation required, so addresses can be easily generated
+decl_storage! {
+ trait Store for Module<T: Config> as Unique {
+
+ //#region Private members
+ /// Used for migrations
+ ChainVersion: u64;
+ //#endregion
+
+ //#region Tokens transfer rate limit baskets
+ /// (Collection id (controlled?2), who created (real))
+ /// TODO: Off chain worker should remove from this map when collection gets removed
+ pub CreateItemBasket get(fn create_item_basket): map hasher(blake2_128_concat) (CollectionId, T::AccountId) => Option<T::BlockNumber>;
+ /// Collection id (controlled?2), token id (controlled?2)
+ pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
+ /// Collection id (controlled?2), owning user (real)
+ pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
+ /// Collection id (controlled?2), token id (controlled?2)
+ pub ReFungibleTransferBasket get(fn refungible_transfer_basket): nmap hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
+ //#endregion
+
+ /// Variable metadata sponsoring
+ /// Collection id (controlled?2), token id (controlled?2)
+ pub VariableMetaDataBasket get(fn variable_meta_data_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
+ /// Approval sponsoring
+ pub NftApproveBasket get(fn nft_approve_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
+ pub FungibleApproveBasket get(fn fungible_approve_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
+ pub RefungibleApproveBasket get(fn refungible_approve_basket): nmap hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
+ }
+}
+
+decl_module! {
+ pub struct Module<T: Config> for enum Call
+ where
+ origin: T::Origin
+ {
+ type Error = Error<T>;
+
+ fn on_initialize(_now: T::BlockNumber) -> Weight {
+ 0
+ }
+
+ /// This method creates a Collection of NFTs. Each Token may have multiple properties encoded as an array of bytes of certain length. The initial owner of the collection is set to the address that signed the transaction and can be changed later.
+ ///
+ /// # Permissions
+ ///
+ /// * Anyone.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_name: UTF-16 string with collection name (limit 64 characters), will be stored as zero-terminated.
+ ///
+ /// * collection_description: UTF-16 string with collection description (limit 256 characters), will be stored as zero-terminated.
+ ///
+ /// * token_prefix: UTF-8 string with token prefix.
+ ///
+ /// * mode: [CollectionMode] collection type and type dependent data.
+ // returns collection ID
+ #[weight = <SelfWeightOf<T>>::create_collection()]
+ #[transactional]
+ pub fn create_collection(origin,
+ collection_name: Vec<u16>,
+ collection_description: Vec<u16>,
+ token_prefix: Vec<u8>,
+ mode: CollectionMode) -> DispatchResult {
+
+ // Anyone can create a collection
+ let who = ensure_signed(origin)?;
+
+ // Create new collection
+ let new_collection = Collection {
+ owner: who,
+ name: collection_name,
+ mode: mode.clone(),
+ mint_mode: false,
+ access: AccessMode::Normal,
+ description: collection_description,
+ token_prefix,
+ offchain_schema: Vec::new(),
+ schema_version: SchemaVersion::ImageURL,
+ sponsorship: SponsorshipState::Disabled,
+ variable_on_chain_schema: Vec::new(),
+ const_on_chain_schema: Vec::new(),
+ limits: Default::default(),
+ meta_update_permission: Default::default(),
+ };
+
+ let _id = match mode {
+ CollectionMode::NFT => {<PalletNonfungible<T>>::init_collection(new_collection)?},
+ CollectionMode::Fungible(decimal_points) => {
+ // check params
+ ensure!(decimal_points <= MAX_DECIMAL_POINTS, Error::<T>::CollectionDecimalPointLimitExceeded);
+ <PalletFungible<T>>::init_collection(new_collection)?
+ }
+ CollectionMode::ReFungible => {
+ <PalletRefungible<T>>::init_collection(new_collection)?
+ }
+ };
+
+ Ok(())
+ }
+
+ /// **DANGEROUS**: Destroys collection and all NFTs within this collection. Users irrecoverably lose their assets and may lose real money.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: collection to destroy.
+ #[weight = <SelfWeightOf<T>>::destroy_collection()]
+ #[transactional]
+ pub fn destroy_collection(origin, collection_id: CollectionId) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ let collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ collection.check_is_owner(&sender)?;
+
+ // =========
+
+ match collection.mode {
+ CollectionMode::ReFungible => PalletRefungible::destroy_collection(RefungibleHandle::cast(collection), &sender)?,
+ CollectionMode::Fungible(_) => PalletFungible::destroy_collection(FungibleHandle::cast(collection), &sender)?,
+ CollectionMode::NFT => PalletNonfungible::destroy_collection(NonfungibleHandle::cast(collection), &sender)?,
+ }
+
+ <NftTransferBasket<T>>::remove_prefix(collection_id, None);
+ <FungibleTransferBasket<T>>::remove_prefix(collection_id, None);
+ <ReFungibleTransferBasket<T>>::remove_prefix((collection_id,), None);
+
+ <VariableMetaDataBasket<T>>::remove_prefix(collection_id, None);
+ <NftApproveBasket<T>>::remove_prefix(collection_id, None);
+ <FungibleApproveBasket<T>>::remove_prefix(collection_id, None);
+ <RefungibleApproveBasket<T>>::remove_prefix((collection_id,), None);
+
+ Ok(())
+ }
+
+ /// Add an address to allow list.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * address.
+ #[weight = <SelfWeightOf<T>>::add_to_allow_list()]
+ #[transactional]
+ pub fn add_to_allow_list(origin, collection_id: CollectionId, address: T::CrossAccountId) -> DispatchResult{
+
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let collection = <CollectionHandle<T>>::try_get(collection_id)?;
+
+ <PalletCommon<T>>::toggle_allowlist(
+ &collection,
+ &sender,
+ &address,
+ true,
+ )?;
+
+ Ok(())
+ }
+
+ /// Remove an address from allow list.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * address.
+ #[weight = <SelfWeightOf<T>>::remove_from_allow_list()]
+ #[transactional]
+ pub fn remove_from_allow_list(origin, collection_id: CollectionId, address: T::CrossAccountId) -> DispatchResult{
+
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let collection = <CollectionHandle<T>>::try_get(collection_id)?;
+
+ <PalletCommon<T>>::toggle_allowlist(
+ &collection,
+ &sender,
+ &address,
+ false,
+ )?;
+
+ Ok(())
+ }
+
+ /// Toggle between normal and allow list access for the methods with access for `Anyone`.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * mode: [AccessMode]
+ #[weight = <SelfWeightOf<T>>::set_public_access_mode()]
+ #[transactional]
+ pub fn set_public_access_mode(origin, collection_id: CollectionId, mode: AccessMode) -> DispatchResult
+ {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner(&sender)?;
+
+ target_collection.access = mode;
+ target_collection.save()
+ }
+
+ /// Allows Anyone to create tokens if:
+ /// * Allow List is enabled, and
+ /// * Address is added to allow list, and
+ /// * This method was called with True parameter
+ ///
+ /// # Permissions
+ /// * Collection Owner
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
+ #[weight = <SelfWeightOf<T>>::set_mint_permission()]
+ #[transactional]
+ pub fn set_mint_permission(origin, collection_id: CollectionId, mint_permission: bool) -> DispatchResult
+ {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner(&sender)?;
+
+ target_collection.mint_mode = mint_permission;
+ target_collection.save()
+ }
+
+ /// Change the owner of the collection.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * new_owner.
+ #[weight = <SelfWeightOf<T>>::change_collection_owner()]
+ #[transactional]
+ pub fn change_collection_owner(origin, collection_id: CollectionId, new_owner: T::AccountId) -> DispatchResult {
+
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner(&sender)?;
+
+ target_collection.owner = new_owner;
+ target_collection.save()
+ }
+
+ /// Adds an admin of the Collection.
+ /// NFT Collection can be controlled by multiple admin addresses (some which can also be servers, for example). Admins can issue and burn NFTs, as well as add and remove other admins, but cannot change NFT or Collection ownership.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ /// * Collection Admin.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the Collection to add admin for.
+ ///
+ /// * new_admin_id: Address of new admin to add.
+ #[weight = <SelfWeightOf<T>>::add_collection_admin()]
+ #[transactional]
+ pub fn add_collection_admin(origin, collection_id: CollectionId, new_admin_id: T::CrossAccountId) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let collection = <CollectionHandle<T>>::try_get(collection_id)?;
+
+ <PalletCommon<T>>::toggle_admin(&collection, &sender, &new_admin_id, true)
+ }
+
+ /// Remove admin address of the Collection. An admin address can remove itself. List of admins may become empty, in which case only Collection Owner will be able to add an Admin.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ /// * Collection Admin.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the Collection to remove admin for.
+ ///
+ /// * account_id: Address of admin to remove.
+ #[weight = <SelfWeightOf<T>>::remove_collection_admin()]
+ #[transactional]
+ pub fn remove_collection_admin(origin, collection_id: CollectionId, account_id: T::CrossAccountId) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let collection = <CollectionHandle<T>>::try_get(collection_id)?;
+
+ <PalletCommon<T>>::toggle_admin(&collection, &sender, &account_id, false)
+ }
+
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * new_sponsor.
+ #[weight = <SelfWeightOf<T>>::set_collection_sponsor()]
+ #[transactional]
+ pub fn set_collection_sponsor(origin, collection_id: CollectionId, new_sponsor: T::AccountId) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner(&sender)?;
+
+ target_collection.sponsorship = SponsorshipState::Unconfirmed(new_sponsor);
+ target_collection.save()
+ }
+
+ /// # Permissions
+ ///
+ /// * Sponsor.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ #[weight = <SelfWeightOf<T>>::confirm_sponsorship()]
+ #[transactional]
+ pub fn confirm_sponsorship(origin, collection_id: CollectionId) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ ensure!(
+ target_collection.sponsorship.pending_sponsor() == Some(&sender),
+ Error::<T>::ConfirmUnsetSponsorFail
+ );
+
+ target_collection.sponsorship = SponsorshipState::Confirmed(sender);
+ target_collection.save()
+ }
+
+ /// Switch back to pay-per-own-transaction model.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ #[weight = <SelfWeightOf<T>>::remove_collection_sponsor()]
+ #[transactional]
+ pub fn remove_collection_sponsor(origin, collection_id: CollectionId) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner(&sender)?;
+
+ target_collection.sponsorship = SponsorshipState::Disabled;
+ target_collection.save()
+ }
+
+ /// This method creates a concrete instance of NFT Collection created with CreateCollection method.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ /// * Collection Admin.
+ /// * Anyone if
+ /// * Allow List is enabled, and
+ /// * Address is added to allow list, and
+ /// * MintPermission is enabled (see SetMintPermission method)
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the collection.
+ ///
+ /// * owner: Address, initial owner of the NFT.
+ ///
+ /// * data: Token data to store on chain.
+ #[weight = <CommonWeights<T>>::create_item()]
+ #[transactional]
+ pub fn create_item(origin, collection_id: CollectionId, owner: T::CrossAccountId, data: CreateItemData) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ dispatch_call::<T, _>(collection_id, |d| d.create_item(sender, owner, data))
+ }
+
+ /// This method creates multiple items in a collection created with CreateCollection method.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ /// * Collection Admin.
+ /// * Anyone if
+ /// * Allow List is enabled, and
+ /// * Address is added to allow list, and
+ /// * MintPermission is enabled (see SetMintPermission method)
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the collection.
+ ///
+ /// * itemsData: Array items properties. Each property is an array of bytes itself, see [create_item].
+ ///
+ /// * owner: Address, initial owner of the NFT.
+ #[weight = <CommonWeights<T>>::create_multiple_items(items_data.len() as u32)]
+ #[transactional]
+ pub fn create_multiple_items(origin, collection_id: CollectionId, owner: T::CrossAccountId, items_data: Vec<CreateItemData>) -> DispatchResultWithPostInfo {
+ ensure!(!items_data.is_empty(), Error::<T>::EmptyArgument);
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ dispatch_call::<T, _>(collection_id, |d| d.create_multiple_items(sender, owner, items_data))
+ }
+
+ // TODO! transaction weight
+
+ /// Set transfers_enabled value for particular collection
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the collection.
+ ///
+ /// * value: New flag value.
+ #[weight = <SelfWeightOf<T>>::set_transfers_enabled_flag()]
+ #[transactional]
+ pub fn set_transfers_enabled_flag(origin, collection_id: CollectionId, value: bool) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner(&sender)?;
+
+ // =========
+
+ target_collection.limits.transfers_enabled = Some(value);
+ target_collection.save()
+ }
+
+ /// Destroys a concrete instance of NFT.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ /// * Collection Admin.
+ /// * Current NFT Owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the collection.
+ ///
+ /// * item_id: ID of NFT to burn.
+ #[weight = <CommonWeights<T>>::burn_item()]
+ #[transactional]
+ pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ let post_info = dispatch_call::<T, _>(collection_id, |d| d.burn_item(sender, item_id, value))?;
+ if value == 1 {
+ <NftTransferBasket<T>>::remove(collection_id, item_id);
+ <NftApproveBasket<T>>::remove(collection_id, item_id);
+ }
+ // Those maps should be cleared only if token disappears completly, need to move this part of logic to pallets?
+ // <FungibleApproveBasket<T>>::remove(collection_id, sender.as_sub());
+ // <RefungibleApproveBasket<T>>::remove((collection_id, item_id, sender.as_sub()));
+ Ok(post_info)
+ }
+
+ /// Destroys a concrete instance of NFT on behalf of the owner
+ /// See also: [`approve`]
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ /// * Collection Admin.
+ /// * Current NFT Owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the collection.
+ ///
+ /// * item_id: ID of NFT to burn.
+ ///
+ /// * from: owner of item
+ #[weight = <CommonWeights<T>>::burn_from()]
+ #[transactional]
+ pub fn burn_from(origin, collection_id: CollectionId, from: T::CrossAccountId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ dispatch_call::<T, _>(collection_id, |d| d.burn_from(sender, from, item_id, value))
+ }
+
+ /// Change ownership of the token.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ /// * Current NFT owner
+ ///
+ /// # Arguments
+ ///
+ /// * recipient: Address of token recipient.
+ ///
+ /// * collection_id.
+ ///
+ /// * item_id: ID of the item
+ /// * Non-Fungible Mode: Required.
+ /// * Fungible Mode: Ignored.
+ /// * Re-Fungible Mode: Required.
+ ///
+ /// * value: Amount to transfer.
+ /// * Non-Fungible Mode: Ignored
+ /// * Fungible Mode: Must specify transferred amount
+ /// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
+ #[weight = <CommonWeights<T>>::transfer()]
+ #[transactional]
+ pub fn transfer(origin, recipient: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ dispatch_call::<T, _>(collection_id, |d| d.transfer(sender, recipient, item_id, value))
+ }
+
+ /// Set, change, or remove approved address to transfer the ownership of the NFT.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ /// * Current NFT owner
+ ///
+ /// # Arguments
+ ///
+ /// * approved: Address that is approved to transfer this NFT or zero (if needed to remove approval).
+ ///
+ /// * collection_id.
+ ///
+ /// * item_id: ID of the item.
+ #[weight = <CommonWeights<T>>::approve()]
+ #[transactional]
+ pub fn approve(origin, spender: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ dispatch_call::<T, _>(collection_id, |d| d.approve(sender, spender, item_id, amount))
+ }
+
+ /// Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.
+ ///
+ /// # Permissions
+ /// * Collection Owner
+ /// * Collection Admin
+ /// * Current NFT owner
+ /// * Address approved by current NFT owner
+ ///
+ /// # Arguments
+ ///
+ /// * from: Address that owns token.
+ ///
+ /// * recipient: Address of token recipient.
+ ///
+ /// * collection_id.
+ ///
+ /// * item_id: ID of the item.
+ ///
+ /// * value: Amount to transfer.
+ #[weight = <CommonWeights<T>>::transfer_from()]
+ #[transactional]
+ pub fn transfer_from(origin, from: T::CrossAccountId, recipient: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, value: u128 ) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ dispatch_call::<T, _>(collection_id, |d| d.transfer_from(sender, from, recipient, item_id, value))
+ }
+
+ /// Set off-chain data schema.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: String representing the offchain data schema.
+ #[weight = <CommonWeights<T>>::set_variable_metadata(data.len() as u32)]
+ #[transactional]
+ pub fn set_variable_meta_data (
+ origin,
+ collection_id: CollectionId,
+ item_id: TokenId,
+ data: Vec<u8>
+ ) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+
+ dispatch_call::<T, _>(collection_id, |d| d.set_variable_metadata(sender, item_id, data))
+ }
+
+ /// Set meta_update_permission value for particular collection
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner.
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id: ID of the collection.
+ ///
+ /// * value: New flag value.
+ #[weight = <SelfWeightOf<T>>::set_meta_update_permission_flag()]
+ #[transactional]
+ pub fn set_meta_update_permission_flag(origin, collection_id: CollectionId, value: MetaUpdatePermission) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+
+ ensure!(
+ target_collection.meta_update_permission != MetaUpdatePermission::None,
+ <CommonError<T>>::MetadataFlagFrozen,
+ );
+ target_collection.check_is_owner(&sender)?;
+
+ target_collection.meta_update_permission = value;
+
+ target_collection.save()
+ }
+
+ /// Set schema standard
+ /// ImageURL
+ /// Unique
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: SchemaVersion: enum
+ #[weight = <SelfWeightOf<T>>::set_schema_version()]
+ #[transactional]
+ pub fn set_schema_version(
+ origin,
+ collection_id: CollectionId,
+ version: SchemaVersion
+ ) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner_or_admin(&sender)?;
+ target_collection.schema_version = version;
+ target_collection.save()
+ }
+
+ /// Set off-chain data schema.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: String representing the offchain data schema.
+ #[weight = <SelfWeightOf<T>>::set_offchain_schema(schema.len() as u32)]
+ #[transactional]
+ pub fn set_offchain_schema(
+ origin,
+ collection_id: CollectionId,
+ schema: Vec<u8>
+ ) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner_or_admin(&sender)?;
+
+ // check schema limit
+ ensure!(schema.len() as u32 <= OFFCHAIN_SCHEMA_LIMIT, "");
+
+ target_collection.offchain_schema = schema;
+ target_collection.save()
+ }
+
+ /// Set const on-chain data schema.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: String representing the const on-chain data schema.
+ #[weight = <SelfWeightOf<T>>::set_const_on_chain_schema(schema.len() as u32)]
+ #[transactional]
+ pub fn set_const_on_chain_schema (
+ origin,
+ collection_id: CollectionId,
+ schema: Vec<u8>
+ ) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner_or_admin(&sender)?;
+
+ // check schema limit
+ ensure!(schema.len() as u32 <= CONST_ON_CHAIN_SCHEMA_LIMIT, "");
+
+ target_collection.const_on_chain_schema = schema;
+ target_collection.save()
+ }
+
+ /// Set variable on-chain data schema.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: String representing the variable on-chain data schema.
+ #[weight = <SelfWeightOf<T>>::set_const_on_chain_schema(schema.len() as u32)]
+ #[transactional]
+ pub fn set_variable_on_chain_schema (
+ origin,
+ collection_id: CollectionId,
+ schema: Vec<u8>
+ ) -> DispatchResult {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner_or_admin(&sender)?;
+
+ // check schema limit
+ ensure!(schema.len() as u32 <= VARIABLE_ON_CHAIN_SCHEMA_LIMIT, "");
+
+ target_collection.variable_on_chain_schema = schema;
+ target_collection.save()
+ }
+
+ #[weight = <SelfWeightOf<T>>::set_collection_limits()]
+ #[transactional]
+ pub fn set_collection_limits(
+ origin,
+ collection_id: CollectionId,
+ new_limit: CollectionLimits,
+ ) -> DispatchResult {
+ let mut new_limit = new_limit;
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_owner(&sender)?;
+ let old_limit = &target_collection.limits;
+
+ macro_rules! limit_default {
+ ($old:ident, $new:ident, $($field:ident $(($arg:expr))? => $check:expr),* $(,)?) => {{
+ $(
+ if let Some($new) = $new.$field {
+ let $old = $old.$field($($arg)?);
+ let _ = $new;
+ let _ = $old;
+ $check
+ } else {
+ $new.$field = $old.$field
+ }
+ )*
+ }};
+ }
+
+ limit_default!(old_limit, new_limit,
+ account_token_ownership_limit => ensure!(
+ new_limit <= MAX_TOKEN_OWNERSHIP,
+ <Error<T>>::CollectionLimitBoundsExceeded,
+ ),
+ sponsor_transfer_timeout(match target_collection.mode {
+ CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ }) => ensure!(
+ new_limit <= MAX_SPONSOR_TIMEOUT,
+ <Error<T>>::CollectionLimitBoundsExceeded,
+ ),
+ sponsored_data_size => ensure!(
+ new_limit <= CUSTOM_DATA_LIMIT,
+ <Error<T>>::CollectionLimitBoundsExceeded,
+ ),
+ token_limit => ensure!(
+ old_limit >= new_limit && new_limit > 0,
+ <CommonError<T>>::CollectionTokenLimitExceeded
+ ),
+ owner_can_transfer => ensure!(
+ old_limit || !new_limit,
+ <Error<T>>::OwnerPermissionsCantBeReverted,
+ ),
+ owner_can_destroy => ensure!(
+ old_limit || !new_limit,
+ <Error<T>>::OwnerPermissionsCantBeReverted,
+ ),
+ sponsored_data_rate_limit => {},
+ transfers_enabled => {},
+ );
+
+ target_collection.limits = new_limit;
+
+ target_collection.save()
+ }
+ }
+}
pallets/unique/src/mock.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/mock.rs
@@ -0,0 +1,204 @@
+#![allow(clippy::from_over_into)]
+
+use crate as pallet_template;
+use sp_core::H256;
+use frame_support::{parameter_types, traits::Everything, weights::IdentityFee};
+use sp_runtime::{
+ traits::{BlakeTwo256, IdentityLookup},
+ testing::Header,
+};
+use pallet_transaction_payment::{CurrencyAdapter};
+use frame_system as system;
+use pallet_evm::AddressMapping;
+use pallet_common::account::{EvmBackwardsAddressMapping, CrossAccountId};
+use codec::{Encode, Decode};
+use scale_info::TypeInfo;
+
+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>},
+ TemplateModule: pallet_template::{Pallet, Call, Storage},
+ Balances: pallet_balances::{Pallet, Call, Storage},
+ Common: pallet_common::{Pallet, Storage, Event<T>},
+ Fungible: pallet_fungible::{Pallet, Storage},
+ Refungible: pallet_refungible::{Pallet, Storage},
+ Nonfungible: pallet_nonfungible::{Pallet, Storage},
+ }
+);
+
+parameter_types! {
+ pub const BlockHashCount: u64 = 250;
+ pub const SS58Prefix: u8 = 42;
+}
+
+impl system::Config for Test {
+ type BaseCallFilter = Everything;
+ type BlockWeights = ();
+ type BlockLength = ();
+ type DbWeight = ();
+ type Origin = Origin;
+ type Call = Call;
+ type Index = u64;
+ type BlockNumber = u64;
+ type Hash = H256;
+ type Hashing = BlakeTwo256;
+ type AccountId = u64;
+ type Lookup = IdentityLookup<Self::AccountId>;
+ type Header = Header;
+ type Event = ();
+ 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 = ();
+}
+
+parameter_types! {
+ pub const ExistentialDeposit: u64 = 1;
+ pub const MaxLocks: u32 = 50;
+}
+//frame_system::Module<Test>;
+impl pallet_balances::Config for Test {
+ type AccountStore = System;
+ type Balance = u64;
+ type DustRemoval = ();
+ type Event = ();
+ type ExistentialDeposit = ExistentialDeposit;
+ type WeightInfo = ();
+ type MaxLocks = MaxLocks;
+ type MaxReserves = ();
+ type ReserveIdentifier = [u8; 8];
+}
+
+parameter_types! {
+ pub const TransactionByteFee: u64 = 1;
+ pub const OperationalFeeMultiplier: u8 = 5;
+}
+
+impl pallet_transaction_payment::Config for Test {
+ type OnChargeTransaction = CurrencyAdapter<pallet_balances::Pallet<Test>, ()>;
+ type TransactionByteFee = TransactionByteFee;
+ type WeightToFee = IdentityFee<u64>;
+ type FeeMultiplierUpdate = ();
+ type OperationalFeeMultiplier = OperationalFeeMultiplier;
+}
+
+parameter_types! {
+ pub const MinimumPeriod: u64 = 1;
+}
+impl pallet_timestamp::Config for Test {
+ type Moment = u64;
+ type OnTimestampSet = ();
+ type MinimumPeriod = MinimumPeriod;
+ type WeightInfo = ();
+}
+
+parameter_types! {
+ pub const CollectionCreationPrice: u32 = 0;
+ pub TreasuryAccountId: u64 = 1234;
+ pub EthereumChainId: u32 = 1111;
+}
+
+pub struct TestEvmAddressMapping;
+impl AddressMapping<u64> for TestEvmAddressMapping {
+ fn into_account_id(_addr: sp_core::H160) -> u64 {
+ unimplemented!()
+ }
+}
+
+pub struct TestEvmBackwardsAddressMapping;
+impl EvmBackwardsAddressMapping<u64> for TestEvmBackwardsAddressMapping {
+ fn from_account_id(_account_id: u64) -> sp_core::H160 {
+ unimplemented!()
+ }
+}
+
+#[derive(Encode, Decode, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, TypeInfo)]
+pub struct TestCrossAccountId(u64, sp_core::H160);
+impl CrossAccountId<u64> for TestCrossAccountId {
+ fn as_sub(&self) -> &u64 {
+ &self.0
+ }
+ fn as_eth(&self) -> &sp_core::H160 {
+ &self.1
+ }
+ fn from_sub(sub: u64) -> Self {
+ let mut eth = [0; 20];
+ eth[12..20].copy_from_slice(&sub.to_be_bytes());
+ Self(sub, sp_core::H160(eth))
+ }
+ fn from_eth(eth: sp_core::H160) -> Self {
+ let mut sub_raw = [0; 8];
+ sub_raw.copy_from_slice(ð.0[0..8]);
+ let sub = u64::from_be_bytes(sub_raw);
+ Self(sub, eth)
+ }
+ fn conv_eq(&self, other: &Self) -> bool {
+ self.as_sub() == other.as_sub()
+ }
+}
+
+impl Default for TestCrossAccountId {
+ fn default() -> Self {
+ Self::from_sub(0)
+ }
+}
+
+pub struct TestEtheremTransactionSender;
+impl pallet_ethereum::EthereumTransactionSender for TestEtheremTransactionSender {
+ fn submit_logs_transaction(
+ _tx: pallet_ethereum::Transaction,
+ _logs: Vec<pallet_ethereum::Log>,
+ ) -> Result<(), sp_runtime::DispatchError> {
+ Ok(())
+ }
+}
+
+impl pallet_evm_coder_substrate::Config for Test {
+ type EthereumTransactionSender = TestEtheremTransactionSender;
+}
+
+impl pallet_common::Config for Test {
+ type Event = ();
+ type EvmBackwardsAddressMapping = TestEvmBackwardsAddressMapping;
+ type EvmAddressMapping = TestEvmAddressMapping;
+ type CrossAccountId = TestCrossAccountId;
+
+ type Currency = Balances;
+ type CollectionCreationPrice = CollectionCreationPrice;
+ type TreasuryAccountId = TreasuryAccountId;
+}
+
+impl pallet_fungible::Config for Test {
+ type WeightInfo = ();
+}
+impl pallet_refungible::Config for Test {
+ type WeightInfo = ();
+}
+impl pallet_nonfungible::Config for Test {
+ type WeightInfo = ();
+}
+
+impl pallet_template::Config for Test {
+ type WeightInfo = ();
+}
+
+// Build genesis storage according to the mock runtime.
+pub fn new_test_ext() -> sp_io::TestExternalities {
+ system::GenesisConfig::default()
+ .build_storage::<Test>()
+ .unwrap()
+ .into()
+}
pallets/unique/src/sponsorship.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/sponsorship.rs
@@ -0,0 +1,282 @@
+use crate::{
+ Config, Call, CreateItemBasket, VariableMetaDataBasket, ReFungibleTransferBasket,
+ FungibleTransferBasket, NftTransferBasket, CreateItemData, CollectionMode, NftApproveBasket,
+ FungibleApproveBasket, RefungibleApproveBasket,
+};
+use core::marker::PhantomData;
+use up_sponsorship::SponsorshipHandler;
+use frame_support::{
+ traits::{IsSubType},
+ storage::{StorageMap, StorageDoubleMap, StorageNMap},
+};
+use up_data_structs::{
+ CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MetaUpdatePermission,
+ NFT_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId,
+};
+use pallet_common::{CollectionHandle};
+use pallet_common::account::CrossAccountId;
+
+pub fn withdraw_transfer<T: Config>(
+ collection: &CollectionHandle<T>,
+ who: &T::CrossAccountId,
+ item_id: &TokenId,
+) -> Option<()> {
+ // preliminary sponsoring correctness check
+ match collection.mode {
+ CollectionMode::NFT => {
+ let owner = pallet_nonfungible::TokenData::<T>::get((collection.id, item_id))?.owner;
+ if !owner.conv_eq(who) {
+ return None;
+ }
+ }
+ CollectionMode::Fungible(_) => {
+ if item_id != &TokenId::default() {
+ return None;
+ }
+ if <pallet_fungible::Balance<T>>::get((collection.id, who)) == 0 {
+ return None;
+ }
+ }
+ CollectionMode::ReFungible => {
+ if !<pallet_refungible::Owned<T>>::get((collection.id, who, item_id)) {
+ return None;
+ }
+ }
+ }
+
+ // sponsor timeout
+ let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let limit = collection
+ .limits
+ .sponsor_transfer_timeout(match collection.mode {
+ CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ });
+
+ let last_tx_block = match collection.mode {
+ CollectionMode::NFT => <NftTransferBasket<T>>::get(collection.id, item_id),
+ CollectionMode::Fungible(_) => {
+ <FungibleTransferBasket<T>>::get(collection.id, who.as_sub())
+ }
+ CollectionMode::ReFungible => {
+ <ReFungibleTransferBasket<T>>::get((collection.id, item_id, who.as_sub()))
+ }
+ };
+
+ if let Some(last_tx_block) = last_tx_block {
+ let timeout = last_tx_block + limit.into();
+ if block_number < timeout {
+ return None;
+ }
+ }
+
+ match collection.mode {
+ CollectionMode::NFT => <NftTransferBasket<T>>::insert(collection.id, item_id, block_number),
+ CollectionMode::Fungible(_) => {
+ <FungibleTransferBasket<T>>::insert(collection.id, who.as_sub(), block_number)
+ }
+ CollectionMode::ReFungible => <ReFungibleTransferBasket<T>>::insert(
+ (collection.id, item_id, who.as_sub()),
+ block_number,
+ ),
+ };
+
+ Some(())
+}
+
+pub fn withdraw_create_item<T: Config>(
+ collection: &CollectionHandle<T>,
+ who: &T::AccountId,
+ _properties: &CreateItemData,
+) -> Option<()> {
+ if _properties.data_size() as u32 > collection.limits.sponsored_data_size() {
+ return None;
+ }
+
+ // sponsor timeout
+ let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let limit = collection
+ .limits
+ .sponsor_transfer_timeout(match _properties {
+ CreateItemData::NFT(_) => NFT_SPONSOR_TRANSFER_TIMEOUT,
+ CreateItemData::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ CreateItemData::ReFungible(_) => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ });
+
+ if let Some(last_tx_block) = <CreateItemBasket<T>>::get((collection.id, &who)) {
+ let timeout = last_tx_block + limit.into();
+ if block_number < timeout {
+ return None;
+ }
+ }
+
+ CreateItemBasket::<T>::insert((collection.id, who.clone()), block_number);
+
+ Some(())
+}
+
+pub fn withdraw_set_variable_meta_data<T: Config>(
+ who: &T::CrossAccountId,
+ collection: &CollectionHandle<T>,
+ item_id: &TokenId,
+ data: &[u8],
+) -> Option<()> {
+ // TODO: make it work for admins
+ if collection.meta_update_permission != MetaUpdatePermission::ItemOwner {
+ return None;
+ }
+ // preliminary sponsoring correctness check
+ match collection.mode {
+ CollectionMode::NFT => {
+ let owner = pallet_nonfungible::TokenData::<T>::get((collection.id, item_id))?.owner;
+ if !owner.conv_eq(who) {
+ return None;
+ }
+ }
+ CollectionMode::Fungible(_) => {
+ if item_id != &TokenId::default() {
+ return None;
+ }
+ if <pallet_fungible::Balance<T>>::get((collection.id, who)) == 0 {
+ return None;
+ }
+ }
+ CollectionMode::ReFungible => {
+ if !<pallet_refungible::Owned<T>>::get((collection.id, who, item_id)) {
+ return None;
+ }
+ }
+ }
+
+ // Can't sponsor fungible collection, this tx will be rejected
+ // as invalid
+ if matches!(collection.mode, CollectionMode::Fungible(_)) {
+ return None;
+ }
+ if data.len() > collection.limits.sponsored_data_size() as usize {
+ return None;
+ }
+
+ let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let limit = collection.limits.sponsored_data_rate_limit()?;
+
+ if let Some(last_tx_block) = VariableMetaDataBasket::<T>::get(collection.id, item_id) {
+ let timeout = last_tx_block + limit.into();
+ if block_number < timeout {
+ return None;
+ }
+ }
+
+ <VariableMetaDataBasket<T>>::insert(collection.id, item_id, block_number);
+
+ Some(())
+}
+
+pub fn withdraw_approve<T: Config>(
+ collection: &CollectionHandle<T>,
+ who: &T::AccountId,
+ item_id: &TokenId,
+) -> Option<()> {
+ // sponsor timeout
+ let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let limit = collection.limits.sponsor_approve_timeout();
+
+ let last_tx_block = match collection.mode {
+ CollectionMode::NFT => <NftApproveBasket<T>>::get(collection.id, item_id),
+ CollectionMode::Fungible(_) => <FungibleApproveBasket<T>>::get(collection.id, who),
+ CollectionMode::ReFungible => {
+ <RefungibleApproveBasket<T>>::get((collection.id, item_id, who))
+ }
+ };
+
+ if let Some(last_tx_block) = last_tx_block {
+ let timeout = last_tx_block + limit.into();
+ if block_number < timeout {
+ return None;
+ }
+ }
+
+ match collection.mode {
+ CollectionMode::NFT => <NftApproveBasket<T>>::insert(collection.id, item_id, block_number),
+ CollectionMode::Fungible(_) => {
+ <FungibleApproveBasket<T>>::insert(collection.id, who, block_number)
+ }
+ CollectionMode::ReFungible => {
+ <RefungibleApproveBasket<T>>::insert((collection.id, item_id, who), block_number)
+ }
+ };
+
+ Some(())
+}
+
+fn load<T: Config>(id: CollectionId) -> Option<(T::AccountId, CollectionHandle<T>)> {
+ let collection = CollectionHandle::new(id)?;
+ let sponsor = collection.sponsorship.sponsor().cloned()?;
+ Some((sponsor, collection))
+}
+
+pub struct UniqueSponsorshipHandler<T>(PhantomData<T>);
+impl<T, C> SponsorshipHandler<T::AccountId, C> for UniqueSponsorshipHandler<T>
+where
+ T: Config,
+ C: IsSubType<Call<T>>,
+{
+ fn get_sponsor(who: &T::AccountId, call: &C) -> Option<T::AccountId> {
+ match IsSubType::<Call<T>>::is_sub_type(call)? {
+ Call::create_item {
+ collection_id,
+ data,
+ ..
+ } => {
+ let (sponsor, collection) = load(*collection_id)?;
+ withdraw_create_item::<T>(&collection, who, data).map(|()| sponsor)
+ }
+ Call::transfer {
+ collection_id,
+ item_id,
+ ..
+ } => {
+ let (sponsor, collection) = load(*collection_id)?;
+ withdraw_transfer::<T>(
+ &collection,
+ &T::CrossAccountId::from_sub(who.clone()),
+ item_id,
+ )
+ .map(|()| sponsor)
+ }
+ Call::transfer_from {
+ collection_id,
+ item_id,
+ from,
+ ..
+ } => {
+ let (sponsor, collection) = load(*collection_id)?;
+ withdraw_transfer::<T>(&collection, from, item_id).map(|()| sponsor)
+ }
+ Call::approve {
+ collection_id,
+ item_id,
+ ..
+ } => {
+ let (sponsor, collection) = load(*collection_id)?;
+ withdraw_approve::<T>(&collection, who, item_id).map(|()| sponsor)
+ }
+ Call::set_variable_meta_data {
+ collection_id,
+ item_id,
+ data,
+ } => {
+ let (sponsor, collection) = load(*collection_id)?;
+ withdraw_set_variable_meta_data::<T>(
+ &T::CrossAccountId::from_sub(who.clone()),
+ &collection,
+ item_id,
+ data,
+ )
+ .map(|()| sponsor)
+ }
+ _ => None,
+ }
+ }
+}
pallets/unique/src/tests.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/tests.rs
@@ -0,0 +1,2878 @@
+// Tests to be written here
+use super::*;
+use crate::mock::*;
+use crate::{AccessMode, CollectionMode};
+use up_data_structs::{
+ COLLECTION_NUMBER_LIMIT, CollectionId, CreateItemData, CreateFungibleData, CreateNftData,
+ CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, MetaUpdatePermission,
+ TokenId,
+};
+use frame_support::{assert_noop, assert_ok};
+use sp_std::convert::TryInto;
+
+fn default_nft_data() -> CreateNftData {
+ CreateNftData {
+ const_data: vec![1, 2, 3].try_into().unwrap(),
+ variable_data: vec![3, 2, 1].try_into().unwrap(),
+ }
+}
+
+fn default_fungible_data() -> CreateFungibleData {
+ CreateFungibleData { value: 5 }
+}
+
+fn default_re_fungible_data() -> CreateReFungibleData {
+ CreateReFungibleData {
+ const_data: vec![1, 2, 3].try_into().unwrap(),
+ variable_data: vec![3, 2, 1].try_into().unwrap(),
+ pieces: 1023,
+ }
+}
+
+fn create_test_collection_for_owner(
+ mode: &CollectionMode,
+ owner: u64,
+ id: CollectionId,
+) -> CollectionId {
+ let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
+
+ let origin1 = Origin::signed(owner);
+ assert_ok!(TemplateModule::create_collection(
+ origin1,
+ col_name1,
+ col_desc1,
+ token_prefix1,
+ mode.clone()
+ ));
+
+ let saved_col_name: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
+ let saved_description: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
+ let saved_prefix: Vec<u8> = b"token_prefix1\0".to_vec();
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(id)
+ .unwrap()
+ .owner,
+ owner
+ );
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(id).unwrap().name,
+ saved_col_name
+ );
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(id).unwrap().mode,
+ *mode
+ );
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(id)
+ .unwrap()
+ .description,
+ saved_description
+ );
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(id)
+ .unwrap()
+ .token_prefix,
+ saved_prefix
+ );
+ id
+}
+
+fn create_test_collection(mode: &CollectionMode, id: CollectionId) -> CollectionId {
+ create_test_collection_for_owner(&mode, 1, id)
+}
+
+fn create_test_item(collection_id: CollectionId, data: &CreateItemData) {
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::create_item(
+ origin1,
+ collection_id,
+ account(1),
+ data.clone()
+ ));
+}
+
+fn account(sub: u64) -> TestCrossAccountId {
+ TestCrossAccountId::from_sub(sub)
+}
+
+// Use cases tests region
+// #region
+
+#[test]
+fn set_version_schema() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ assert_ok!(TemplateModule::set_schema_version(
+ origin1,
+ collection_id,
+ SchemaVersion::Unique
+ ));
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(collection_id)
+ .unwrap()
+ .schema_version,
+ SchemaVersion::Unique
+ );
+ });
+}
+
+#[test]
+fn create_fungible_collection_fails_with_large_decimal_numbers() {
+ new_test_ext().execute_with(|| {
+ let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
+
+ let origin1 = Origin::signed(1);
+ assert_noop!(
+ TemplateModule::create_collection(
+ origin1,
+ col_name1,
+ col_desc1,
+ token_prefix1,
+ CollectionMode::Fungible(MAX_DECIMAL_POINTS + 1)
+ ),
+ Error::<Test>::CollectionDecimalPointLimitExceeded
+ );
+ });
+}
+
+#[test]
+fn create_nft_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
+
+ let item = <pallet_nonfungible::TokenData<Test>>::get((collection_id, 1)).unwrap();
+ assert_eq!(item.const_data, data.const_data.into_inner());
+ assert_eq!(item.variable_data, data.variable_data.into_inner());
+ });
+}
+
+// Use cases tests region
+// #region
+#[test]
+fn create_nft_multiple_items() {
+ new_test_ext().execute_with(|| {
+ create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let items_data = vec![default_nft_data(), default_nft_data(), default_nft_data()];
+
+ assert_ok!(TemplateModule::create_multiple_items(
+ origin1,
+ CollectionId(1),
+ account(1),
+ items_data
+ .clone()
+ .into_iter()
+ .map(|d| { d.into() })
+ .collect()
+ ));
+ for (index, data) in items_data.into_iter().enumerate() {
+ let item = <pallet_nonfungible::TokenData<Test>>::get((
+ CollectionId(1),
+ TokenId((index + 1) as u32),
+ ))
+ .unwrap();
+ assert_eq!(item.const_data.to_vec(), data.const_data.into_inner());
+ assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner());
+ }
+ });
+}
+
+#[test]
+fn create_refungible_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
+
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.clone().into());
+ let item = <pallet_refungible::TokenData<Test>>::get((collection_id, TokenId(1)));
+ let balance =
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(1)));
+ assert_eq!(item.const_data, data.const_data.into_inner());
+ assert_eq!(item.variable_data, data.variable_data.into_inner());
+ assert_eq!(balance, 1023);
+ });
+}
+
+#[test]
+fn create_multiple_refungible_items() {
+ new_test_ext().execute_with(|| {
+ create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let items_data = vec![
+ default_re_fungible_data(),
+ default_re_fungible_data(),
+ default_re_fungible_data(),
+ ];
+
+ assert_ok!(TemplateModule::create_multiple_items(
+ origin1,
+ CollectionId(1),
+ account(1),
+ items_data
+ .clone()
+ .into_iter()
+ .map(|d| { d.into() })
+ .collect()
+ ));
+ for (index, data) in items_data.into_iter().enumerate() {
+ let item = <pallet_refungible::TokenData<Test>>::get((
+ CollectionId(1),
+ TokenId((index + 1) as u32),
+ ));
+ let balance =
+ <pallet_refungible::Balance<Test>>::get((CollectionId(1), TokenId(1), account(1)));
+ assert_eq!(item.const_data.to_vec(), data.const_data.into_inner());
+ assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner());
+ assert_eq!(balance, 1023);
+ }
+ });
+}
+
+#[test]
+fn create_fungible_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((collection_id, account(1))),
+ 5
+ );
+ });
+}
+
+//#[test]
+// fn create_multiple_fungible_items() {
+// new_test_ext().execute_with(|| {
+// default_limits();
+
+// create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
+
+// let origin1 = Origin::signed(1);
+
+// let items_data = vec![default_fungible_data(), default_fungible_data(), default_fungible_data()];
+
+// assert_ok!(TemplateModule::create_multiple_items(
+// origin1.clone(),
+// 1,
+// 1,
+// items_data.clone().into_iter().map(|d| { d.into() }).collect()
+// ));
+
+// for (index, _) in items_data.iter().enumerate() {
+// assert_eq!(TemplateModule::fungible_item_id(1, (index + 1) as TokenId).value, 5);
+// }
+// assert_eq!(TemplateModule::balance_count(1, 1), 3000);
+// assert_eq!(TemplateModule::address_tokens(1, 1), [1, 2, 3]);
+// });
+// }
+
+#[test]
+fn transfer_fungible_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((CollectionId(1), account(1))),
+ 5
+ );
+
+ // change owner scenario
+ assert_ok!(TemplateModule::transfer(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(0),
+ 5
+ ));
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((CollectionId(1), account(1))),
+ 0
+ );
+
+ // split item scenario
+ assert_ok!(TemplateModule::transfer(
+ origin2.clone(),
+ account(3),
+ CollectionId(1),
+ TokenId(0),
+ 3
+ ));
+
+ // split item and new owner has account scenario
+ assert_ok!(TemplateModule::transfer(
+ origin2,
+ account(3),
+ CollectionId(1),
+ TokenId(0),
+ 1
+ ));
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((CollectionId(1), account(2))),
+ 1
+ );
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((CollectionId(1), account(3))),
+ 4
+ );
+ });
+}
+
+#[test]
+fn transfer_refungible_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
+
+ // Create RFT 1 in 1023 pieces for account 1
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.clone().into());
+ let item = <pallet_refungible::TokenData<Test>>::get((collection_id, TokenId(1)));
+ assert_eq!(item.const_data, data.const_data.into_inner());
+ assert_eq!(item.variable_data, data.variable_data.into_inner());
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(1))),
+ 1023
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ // Account 1 transfers all 1023 pieces of RFT 1 to account 2
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+ assert_ok!(TemplateModule::transfer(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1023
+ ));
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(2))),
+ 1023
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 0
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(2))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ false
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(2), TokenId(1))),
+ true
+ );
+
+ // Account 2 transfers 500 pieces of RFT 1 to account 3
+ assert_ok!(TemplateModule::transfer(
+ origin2.clone(),
+ account(3),
+ CollectionId(1),
+ TokenId(1),
+ 500
+ ));
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(2))),
+ 523
+ );
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(3))),
+ 500
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(2))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(3))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(2), TokenId(1))),
+ true
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(3), TokenId(1))),
+ true
+ );
+
+ // Account 2 transfers 200 more pieces of RFT 1 to account 3 with pre-existing balance
+ assert_ok!(TemplateModule::transfer(
+ origin2,
+ account(3),
+ CollectionId(1),
+ TokenId(1),
+ 200
+ ));
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(2))),
+ 323
+ );
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(3))),
+ 700
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(2))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(3))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(2), TokenId(1))),
+ true
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(3), TokenId(1))),
+ true
+ );
+ });
+}
+
+#[test]
+fn transfer_nft_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ let origin1 = Origin::signed(1);
+ // default scenario
+ assert_ok!(TemplateModule::transfer(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 0
+ );
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(2))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ false
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(2), TokenId(1))),
+ true
+ );
+ });
+}
+
+#[test]
+fn transfer_nft_item_wrong_value() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ let origin1 = Origin::signed(1);
+
+ assert_noop!(
+ TemplateModule::transfer(origin1, account(2), CollectionId(1), TokenId(1), 2)
+ .map_err(|e| e.error),
+ <pallet_nonfungible::Error::<Test>>::NonfungibleItemsHaveNoAmount
+ );
+ });
+}
+
+#[test]
+fn transfer_nft_item_zero_value() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ let origin1 = Origin::signed(1);
+
+ // Transferring 0 amount works on NFT...
+ assert_ok!(TemplateModule::transfer(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 0
+ ));
+ // ... and results in no transfer
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+ });
+}
+
+#[test]
+fn nft_approve_and_transfer_from() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ // neg transfer_from
+ assert_noop!(
+ TemplateModule::transfer_from(
+ origin2.clone(),
+ account(1),
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::TokenValueNotEnough
+ );
+
+ // do approve
+ assert_ok!(TemplateModule::approve(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).unwrap(),
+ account(2)
+ );
+
+ assert_ok!(TemplateModule::transfer_from(
+ origin2,
+ account(1),
+ account(3),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).is_none()
+ );
+ });
+}
+
+#[test]
+fn nft_approve_and_transfer_from_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ // Create NFT 1 for account 1
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
+ assert_eq!(
+ &<pallet_nonfungible::TokenData<Test>>::get((collection_id, TokenId(1)))
+ .unwrap()
+ .const_data,
+ &data.const_data.into_inner()
+ );
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ // Allow allow-list users to mint and add accounts 1, 2, and 3 to allow-list
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ CollectionId(1),
+ true
+ ));
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ CollectionId(1),
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(3)
+ ));
+
+ // Account 1 approves account 2 for NFT 1
+ assert_ok!(TemplateModule::approve(
+ origin1.clone(),
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).unwrap(),
+ account(2)
+ );
+
+ // Account 2 transfers NFT 1 from account 1 to account 3
+ assert_ok!(TemplateModule::transfer_from(
+ origin2,
+ account(1),
+ account(3),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).is_none()
+ );
+ });
+}
+
+#[test]
+fn refungible_approve_and_transfer_from() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ // Create RFT 1 in 1023 pieces for account 1
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(1))),
+ 1023
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ // Allow public minting, enable allow-list and add accounts 1, 2, 3 to allow-list
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ CollectionId(1),
+ true
+ ));
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ CollectionId(1),
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(3)
+ ));
+
+ // Account 1 approves account 2 for 1023 pieces of RFT 1
+ assert_ok!(TemplateModule::approve(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1023
+ ));
+ assert_eq!(
+ <pallet_refungible::Allowance<Test>>::get((
+ CollectionId(1),
+ TokenId(1),
+ account(1),
+ account(2)
+ )),
+ 1023
+ );
+
+ // Account 2 transfers 100 pieces of RFT 1 from account 1 to account 3
+ assert_ok!(TemplateModule::transfer_from(
+ origin2,
+ account(1),
+ account(3),
+ CollectionId(1),
+ TokenId(1),
+ 100
+ ));
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(3))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(1))),
+ 923
+ );
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(3))),
+ 100
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+ assert_eq!(
+ <pallet_refungible::Allowance<Test>>::get((
+ CollectionId(1),
+ TokenId(1),
+ account(1),
+ account(2)
+ )),
+ 923
+ );
+ });
+}
+
+#[test]
+fn fungible_approve_and_transfer_from() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ CollectionId(1),
+ true
+ ));
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ CollectionId(1),
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(3)
+ ));
+
+ // do approve
+ assert_ok!(TemplateModule::approve(
+ origin1.clone(),
+ account(2),
+ CollectionId(1),
+ TokenId(0),
+ 5
+ ));
+ assert_eq!(
+ <pallet_fungible::Allowance<Test>>::get((CollectionId(1), account(1), account(2))),
+ 5
+ );
+ assert_ok!(TemplateModule::approve(
+ origin1,
+ account(3),
+ CollectionId(1),
+ TokenId(0),
+ 5
+ ));
+ assert_eq!(
+ <pallet_fungible::Allowance<Test>>::get((CollectionId(1), account(1), account(2))),
+ 5
+ );
+ assert_eq!(
+ <pallet_fungible::Allowance<Test>>::get((CollectionId(1), account(1), account(3))),
+ 5
+ );
+
+ assert_ok!(TemplateModule::transfer_from(
+ origin2.clone(),
+ account(1),
+ account(3),
+ CollectionId(1),
+ TokenId(0),
+ 4
+ ));
+
+ assert_eq!(
+ <pallet_fungible::Allowance<Test>>::get((CollectionId(1), account(1), account(2))),
+ 1
+ );
+
+ assert_noop!(
+ TemplateModule::transfer_from(
+ origin2,
+ account(1),
+ account(3),
+ CollectionId(1),
+ TokenId(0),
+ 4
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::TokenValueNotEnough
+ );
+ });
+}
+
+#[test]
+fn change_collection_owner() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::change_collection_owner(
+ origin1,
+ collection_id,
+ 2
+ ));
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(collection_id)
+ .unwrap()
+ .owner,
+ 2
+ );
+ });
+}
+
+#[test]
+fn destroy_collection() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::destroy_collection(origin1, collection_id));
+ });
+}
+
+#[test]
+fn burn_nft_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ // check balance (collection with id = 1, user id = 1)
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+
+ // burn item
+ assert_ok!(TemplateModule::burn_item(
+ origin1.clone(),
+ collection_id,
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 0
+ );
+ });
+}
+
+#[test]
+fn burn_same_nft_item_twice() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ // check balance (collection with id = 1, user id = 1)
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+
+ // burn item
+ assert_ok!(TemplateModule::burn_item(
+ origin1.clone(),
+ collection_id,
+ TokenId(1),
+ 1
+ ));
+
+ // burn item again
+ assert_noop!(
+ TemplateModule::burn_item(origin1, collection_id, TokenId(1), 1).map_err(|e| e.error),
+ CommonError::<Test>::TokenNotFound
+ );
+
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 0
+ );
+ });
+}
+
+#[test]
+fn burn_fungible_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ // check balance (collection with id = 1, user id = 1)
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((collection_id, account(1))),
+ 5
+ );
+
+ // burn item
+ assert_ok!(TemplateModule::burn_item(
+ origin1.clone(),
+ CollectionId(1),
+ TokenId(0),
+ 5
+ ));
+ assert_noop!(
+ TemplateModule::burn_item(origin1, CollectionId(1), TokenId(0), 5).map_err(|e| e.error),
+ CommonError::<Test>::TokenValueTooLow
+ );
+
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((collection_id, account(1))),
+ 0
+ );
+ });
+}
+
+#[test]
+fn burn_fungible_item_with_token_id() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ // check balance (collection with id = 1, user id = 1)
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((collection_id, account(1))),
+ 5
+ );
+
+ // Try to burn item using Token ID
+ assert_noop!(
+ TemplateModule::burn_item(origin1, CollectionId(1), TokenId(1), 5).map_err(|e| e.error),
+ <pallet_fungible::Error::<Test>>::FungibleItemsHaveNoId
+ );
+ });
+}
+#[test]
+fn burn_refungible_item() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ collection_id,
+ true
+ ));
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ // check balance (collection with id = 1, user id = 2)
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(1))),
+ 1023
+ );
+
+ // burn item
+ assert_ok!(TemplateModule::burn_item(
+ origin1.clone(),
+ collection_id,
+ TokenId(1),
+ 1023
+ ));
+ assert_noop!(
+ TemplateModule::burn_item(origin1, collection_id, TokenId(1), 1023)
+ .map_err(|e| e.error),
+ CommonError::<Test>::TokenValueTooLow
+ );
+
+ assert_eq!(
+ <pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(1))),
+ 0
+ );
+ });
+}
+
+#[test]
+fn add_collection_admin() {
+ new_test_ext().execute_with(|| {
+ let collection1_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));
+ let origin1 = Origin::signed(1);
+
+ // Add collection admins
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection1_id,
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1,
+ collection1_id,
+ account(3)
+ ));
+
+ // Owner is not an admin by default
+ assert_eq!(
+ <pallet_common::IsAdmin<Test>>::get((CollectionId(1), account(1))),
+ false
+ );
+ assert!(<pallet_common::IsAdmin<Test>>::get((
+ CollectionId(1),
+ account(2)
+ )));
+ assert!(<pallet_common::IsAdmin<Test>>::get((
+ CollectionId(1),
+ account(3)
+ )));
+ });
+}
+
+#[test]
+fn remove_collection_admin() {
+ new_test_ext().execute_with(|| {
+ let collection1_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ // Add collection admins 2 and 3
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection1_id,
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1,
+ collection1_id,
+ account(3)
+ ));
+
+ assert!(<pallet_common::IsAdmin<Test>>::get((
+ CollectionId(1),
+ account(2)
+ )));
+ assert!(<pallet_common::IsAdmin<Test>>::get((
+ CollectionId(1),
+ account(3)
+ )));
+
+ // remove admin 3
+ assert_ok!(TemplateModule::remove_collection_admin(
+ origin2,
+ CollectionId(1),
+ account(3)
+ ));
+
+ // 2 is still admin, 3 is not an admin anymore
+ assert!(<pallet_common::IsAdmin<Test>>::get((
+ CollectionId(1),
+ account(2)
+ )));
+ assert_eq!(
+ <pallet_common::IsAdmin<Test>>::get((CollectionId(1), account(3))),
+ false
+ );
+ });
+}
+
+#[test]
+fn balance_of() {
+ new_test_ext().execute_with(|| {
+ let nft_collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let fungible_collection_id =
+ create_test_collection(&CollectionMode::Fungible(3), CollectionId(2));
+ let re_fungible_collection_id =
+ create_test_collection(&CollectionMode::ReFungible, CollectionId(3));
+
+ // check balance before
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((nft_collection_id, account(1))),
+ 0
+ );
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((fungible_collection_id, account(1))),
+ 0
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((re_fungible_collection_id, account(1))),
+ 0
+ );
+
+ let nft_data = default_nft_data();
+ create_test_item(nft_collection_id, &nft_data.into());
+
+ let fungible_data = default_fungible_data();
+ create_test_item(fungible_collection_id, &fungible_data.into());
+
+ let re_fungible_data = default_re_fungible_data();
+ create_test_item(re_fungible_collection_id, &re_fungible_data.into());
+
+ // check balance (collection with id = 1, user id = 1)
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((nft_collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_fungible::Balance<Test>>::get((fungible_collection_id, account(1))),
+ 5
+ );
+ assert_eq!(
+ <pallet_refungible::AccountBalance<Test>>::get((re_fungible_collection_id, account(1))),
+ 1
+ );
+
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((nft_collection_id, account(1), TokenId(1))),
+ true
+ );
+ assert_eq!(
+ <pallet_refungible::Owned<Test>>::get((
+ re_fungible_collection_id,
+ account(1),
+ TokenId(1)
+ )),
+ true
+ );
+ });
+}
+
+#[test]
+fn approve() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ let origin1 = Origin::signed(1);
+
+ // approve
+ assert_ok!(TemplateModule::approve(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).unwrap(),
+ account(2)
+ );
+ });
+}
+
+#[test]
+fn transfer_from() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ // approve
+ assert_ok!(TemplateModule::approve(
+ origin1.clone(),
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).unwrap(),
+ account(2)
+ );
+
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ CollectionId(1),
+ true
+ ));
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ CollectionId(1),
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ CollectionId(1),
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1,
+ CollectionId(1),
+ account(3)
+ ));
+
+ assert_ok!(TemplateModule::transfer_from(
+ origin2,
+ account(1),
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+
+ // after transfer
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((CollectionId(1), account(1))),
+ 0
+ );
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((CollectionId(1), account(2))),
+ 1
+ );
+ });
+}
+
+// #endregion
+
+// Coverage tests region
+// #region
+
+#[test]
+fn owner_can_add_address_to_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+ assert!(<pallet_common::Allowlist<Test>>::get((
+ collection_id,
+ account(2)
+ )));
+ });
+}
+
+#[test]
+fn admin_can_add_address_to_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin2,
+ collection_id,
+ account(3)
+ ));
+ assert!(<pallet_common::Allowlist<Test>>::get((
+ collection_id,
+ account(3)
+ )));
+ });
+}
+
+#[test]
+fn nonprivileged_user_cannot_add_address_to_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin2 = Origin::signed(2);
+ assert_noop!(
+ TemplateModule::add_to_allow_list(origin2, collection_id, account(3)),
+ CommonError::<Test>::NoPermission
+ );
+ });
+}
+
+#[test]
+fn nobody_can_add_address_to_allow_list_of_nonexisting_collection() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
+
+ assert_noop!(
+ TemplateModule::add_to_allow_list(origin1, CollectionId(1), account(2)),
+ CommonError::<Test>::CollectionNotFound
+ );
+ });
+}
+
+#[test]
+fn nobody_can_add_address_to_allow_list_of_deleted_collection() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::destroy_collection(
+ origin1.clone(),
+ collection_id
+ ));
+ assert_noop!(
+ TemplateModule::add_to_allow_list(origin1, collection_id, account(2)),
+ CommonError::<Test>::CollectionNotFound
+ );
+ });
+}
+
+// If address is already added to allow list, nothing happens
+#[test]
+fn address_is_already_added_to_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+ assert!(<pallet_common::Allowlist<Test>>::get((
+ collection_id,
+ account(2)
+ )));
+ });
+}
+
+#[test]
+fn owner_can_remove_address_from_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+ assert_ok!(TemplateModule::remove_from_allow_list(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+ assert_eq!(
+ <pallet_common::Allowlist<Test>>::get((collection_id, account(2))),
+ false
+ );
+ });
+}
+
+#[test]
+fn admin_can_remove_address_from_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ // Owner adds admin
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ // Owner adds address 3 to allow list
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1,
+ collection_id,
+ account(3)
+ ));
+
+ // Admin removes address 3 from allow list
+ assert_ok!(TemplateModule::remove_from_allow_list(
+ origin2,
+ collection_id,
+ account(3)
+ ));
+ assert_eq!(
+ <pallet_common::Allowlist<Test>>::get((collection_id, account(3))),
+ false
+ );
+ });
+}
+
+#[test]
+fn nonprivileged_user_cannot_remove_address_from_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+ assert_noop!(
+ TemplateModule::remove_from_allow_list(origin2, collection_id, account(2)),
+ CommonError::<Test>::NoPermission
+ );
+ assert!(<pallet_common::Allowlist<Test>>::get((
+ collection_id,
+ account(2)
+ )));
+ });
+}
+
+#[test]
+fn nobody_can_remove_address_from_allow_list_of_nonexisting_collection() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
+
+ assert_noop!(
+ TemplateModule::remove_from_allow_list(origin1, CollectionId(1), account(2)),
+ CommonError::<Test>::CollectionNotFound
+ );
+ });
+}
+
+#[test]
+fn nobody_can_remove_address_from_allow_list_of_deleted_collection() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ // Add account 2 to allow list
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ // Account 2 is in collection allow-list
+ assert!(<pallet_common::Allowlist<Test>>::get((
+ collection_id,
+ account(2)
+ )));
+
+ // Destroy collection
+ assert_ok!(TemplateModule::destroy_collection(origin1, collection_id));
+
+ // Attempt to remove account 2 from collection allow-list => error
+ assert_noop!(
+ TemplateModule::remove_from_allow_list(origin2, collection_id, account(2)),
+ CommonError::<Test>::CollectionNotFound
+ );
+
+ // Account 2 is not found in collection allow-list anyway
+ assert_eq!(
+ <pallet_common::Allowlist<Test>>::get((collection_id, account(2))),
+ false
+ );
+ });
+}
+
+// If address is already removed from allow list, nothing happens
+#[test]
+fn address_is_already_removed_from_allow_list() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+ assert_ok!(TemplateModule::remove_from_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+ assert_eq!(
+ <pallet_common::Allowlist<Test>>::get((collection_id, account(2))),
+ false
+ );
+ assert_ok!(TemplateModule::remove_from_allow_list(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+ assert_eq!(
+ <pallet_common::Allowlist<Test>>::get((collection_id, account(2))),
+ false
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, tokens can’t be transferred from a non-allowlisted address with transfer or transferFrom (2 tests)
+#[test]
+fn allow_list_test_1() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ assert_noop!(
+ TemplateModule::transfer(origin1, account(3), CollectionId(1), TokenId(1), 1)
+ .map_err(|e| e.error),
+ CommonError::<Test>::AddressNotInAllowlist
+ );
+ });
+}
+
+#[test]
+fn allow_list_test_2() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ // do approve
+ assert_ok!(TemplateModule::approve(
+ origin1.clone(),
+ account(1),
+ collection_id,
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).unwrap(),
+ account(1)
+ );
+
+ assert_ok!(TemplateModule::remove_from_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+
+ assert_noop!(
+ TemplateModule::transfer_from(
+ origin1,
+ account(1),
+ account(3),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::AddressNotInAllowlist
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, tokens can’t be transferred to a non-allowlisted address with transfer or transferFrom (2 tests)
+#[test]
+fn allow_list_test_3() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+
+ assert_noop!(
+ TemplateModule::transfer(origin1, account(3), collection_id, TokenId(1), 1)
+ .map_err(|e| e.error),
+ CommonError::<Test>::AddressNotInAllowlist
+ );
+ });
+}
+
+#[test]
+fn allow_list_test_4() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ // do approve
+ assert_ok!(TemplateModule::approve(
+ origin1.clone(),
+ account(1),
+ collection_id,
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).unwrap(),
+ account(1)
+ );
+
+ assert_ok!(TemplateModule::remove_from_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ assert_noop!(
+ TemplateModule::transfer_from(
+ origin1,
+ account(1),
+ account(3),
+ collection_id,
+ TokenId(1),
+ 1
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::AddressNotInAllowlist
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, tokens can’t be destroyed by a non-allowlisted address (even if it owned them before enabling AllowList mode)
+#[test]
+fn allow_list_test_5() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_noop!(
+ TemplateModule::burn_item(origin1.clone(), CollectionId(1), TokenId(1), 1)
+ .map_err(|e| e.error),
+ CommonError::<Test>::AddressNotInAllowlist
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, token transfers can’t be Approved by a non-allowlisted address (see Approve method).
+#[test]
+fn allow_list_test_6() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+
+ // do approve
+ assert_noop!(
+ TemplateModule::approve(origin1, account(1), CollectionId(1), TokenId(1), 1)
+ .map_err(|e| e.error),
+ CommonError::<Test>::AddressNotInAllowlist
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, tokens can be transferred from a allowlisted address with transfer or transferFrom (2 tests) and
+// tokens can be transferred from a allowlisted address with transfer or transferFrom (2 tests)
+#[test]
+fn allow_list_test_7() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ assert_ok!(TemplateModule::transfer(
+ origin1,
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ });
+}
+
+#[test]
+fn allow_list_test_8() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ // Create NFT for account 1
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ let origin1 = Origin::signed(1);
+
+ // Toggle Allow List mode and add accounts 1 and 2
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+
+ // Sself-approve account 1 for NFT 1
+ assert_ok!(TemplateModule::approve(
+ origin1.clone(),
+ account(1),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Allowance<Test>>::get((CollectionId(1), TokenId(1))).unwrap(),
+ account(1)
+ );
+
+ // Transfer from 1 to 2
+ assert_ok!(TemplateModule::transfer_from(
+ origin1,
+ account(1),
+ account(2),
+ CollectionId(1),
+ TokenId(1),
+ 1
+ ));
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens can be created by owner.
+#[test]
+fn allow_list_test_9() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1,
+ collection_id,
+ false
+ ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens can be created by admin.
+#[test]
+fn allow_list_test_10() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ collection_id,
+ false
+ ));
+
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+
+ assert_ok!(TemplateModule::create_item(
+ origin2,
+ collection_id,
+ account(2),
+ default_nft_data().into()
+ ));
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens cannot be created by non-privileged and allow listed address.
+#[test]
+fn allow_list_test_11() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ collection_id,
+ false
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+
+ assert_noop!(
+ TemplateModule::create_item(
+ origin2,
+ CollectionId(1),
+ account(2),
+ default_nft_data().into()
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::PublicMintingNotAllowed
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to false, tokens cannot be created by non-privileged and non-allow listed address.
+#[test]
+fn allow_list_test_12() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1,
+ collection_id,
+ false
+ ));
+
+ assert_noop!(
+ TemplateModule::create_item(
+ origin2,
+ CollectionId(1),
+ account(2),
+ default_nft_data().into()
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::PublicMintingNotAllowed
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by owner.
+#[test]
+fn allow_list_test_13() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1,
+ collection_id,
+ true
+ ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by admin.
+#[test]
+fn allow_list_test_14() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ collection_id,
+ true
+ ));
+
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+
+ assert_ok!(TemplateModule::create_item(
+ origin2,
+ collection_id,
+ account(2),
+ default_nft_data().into()
+ ));
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens cannot be created by non-privileged and non-allow listed address.
+#[test]
+fn allow_list_test_15() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1,
+ collection_id,
+ true
+ ));
+
+ assert_noop!(
+ TemplateModule::create_item(
+ origin2,
+ collection_id,
+ account(2),
+ default_nft_data().into()
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::AddressNotInAllowlist
+ );
+ });
+}
+
+// If Public Access mode is set to AllowList, and Mint Permission is set to true, tokens can be created by non-privileged and allow listed address.
+#[test]
+fn allow_list_test_16() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ collection_id,
+ true
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1,
+ collection_id,
+ account(2)
+ ));
+
+ assert_ok!(TemplateModule::create_item(
+ origin2,
+ collection_id,
+ account(2),
+ default_nft_data().into()
+ ));
+ });
+}
+
+// Total number of collections. Positive test
+#[test]
+fn total_number_collections_bound() {
+ new_test_ext().execute_with(|| {
+ create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ });
+}
+
+#[test]
+fn create_max_collections() {
+ new_test_ext().execute_with(|| {
+ for i in 1..=COLLECTION_NUMBER_LIMIT {
+ create_test_collection(&CollectionMode::NFT, CollectionId(i));
+ }
+ });
+}
+
+// Total number of collections. Negative test
+#[test]
+fn total_number_collections_bound_neg() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
+
+ for i in 1..=COLLECTION_NUMBER_LIMIT {
+ create_test_collection(&CollectionMode::NFT, CollectionId(i));
+ }
+
+ let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
+
+ // 11-th collection in chain. Expects error
+ assert_noop!(
+ TemplateModule::create_collection(
+ origin1,
+ col_name1,
+ col_desc1,
+ token_prefix1,
+ CollectionMode::NFT
+ ),
+ CommonError::<Test>::TotalCollectionsLimitExceeded
+ );
+ });
+}
+
+// Owned tokens by a single address. Positive test
+#[test]
+fn owned_tokens_bound() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
+ create_test_item(collection_id, &data.into());
+ });
+}
+
+// Owned tokens by a single address. Negotive test
+#[test]
+fn owned_tokens_bound_neg() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ for _ in 1..=MAX_TOKEN_OWNERSHIP {
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
+ }
+
+ let data = default_nft_data();
+ assert_noop!(
+ TemplateModule::create_item(origin1, CollectionId(1), account(1), data.into())
+ .map_err(|e| e.error),
+ CommonError::<Test>::AccountTokenLimitExceeded
+ );
+ });
+}
+
+// Number of collection admins. Positive test
+#[test]
+fn collection_admins_bound() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection_id,
+ account(2)
+ ));
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1,
+ collection_id,
+ account(3)
+ ));
+ });
+}
+
+// Number of collection admins. Negotive test
+#[test]
+fn collection_admins_bound_neg() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ for i in 0..COLLECTION_ADMINS_LIMIT {
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin1.clone(),
+ collection_id,
+ account((2 + i).into())
+ ));
+ }
+ assert_noop!(
+ TemplateModule::add_collection_admin(
+ origin1,
+ collection_id,
+ account((3 + COLLECTION_ADMINS_LIMIT).into())
+ ),
+ CommonError::<Test>::CollectionAdminCountExceeded
+ );
+ });
+}
+// #endregion
+
+#[test]
+fn set_const_on_chain_schema() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::set_const_on_chain_schema(
+ origin1,
+ collection_id,
+ b"test const on chain schema".to_vec()
+ ));
+
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(collection_id)
+ .unwrap()
+ .const_on_chain_schema,
+ b"test const on chain schema".to_vec()
+ );
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(collection_id)
+ .unwrap()
+ .variable_on_chain_schema,
+ b"".to_vec()
+ );
+ });
+}
+
+#[test]
+fn set_variable_on_chain_schema() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::set_variable_on_chain_schema(
+ origin1,
+ collection_id,
+ b"test variable on chain schema".to_vec()
+ ));
+
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(collection_id)
+ .unwrap()
+ .const_on_chain_schema,
+ b"".to_vec()
+ );
+ assert_eq!(
+ <pallet_common::CollectionById<Test>>::get(collection_id)
+ .unwrap()
+ .variable_on_chain_schema,
+ b"test variable on chain schema".to_vec()
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_nft_token_stores_variable_meta_data() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(CollectionId(1), &data.into());
+
+ let variable_data = b"test data".to_vec();
+ assert_ok!(TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data.clone()
+ ));
+
+ assert_eq!(
+ <pallet_nonfungible::TokenData<Test>>::get((collection_id, 1))
+ .unwrap()
+ .variable_data,
+ variable_data
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_re_fungible_token_stores_variable_meta_data() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ let variable_data = b"test data".to_vec();
+ assert_ok!(TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data.clone()
+ ));
+
+ assert_eq!(
+ <pallet_refungible::TokenData<Test>>::get((collection_id, TokenId(1))).variable_data,
+ variable_data
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_fungible_token_fails() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ let variable_data = b"test data".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(0),
+ variable_data
+ )
+ .map_err(|e| e.error),
+ <pallet_fungible::Error<Test>>::FungibleItemsDontHaveData
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_nft_token_fails_for_big_data() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ let variable_data = b"test set_variable_meta_data method, bigger than limits.".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::TokenVariableDataLimitExceeded
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_re_fungible_token_fails_for_big_data() {
+ new_test_ext().execute_with(|| {
+ let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.into());
+
+ let variable_data = b"test set_variable_meta_data method, bigger than limits.".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::TokenVariableDataLimitExceeded
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_nft_with_item_owner_permission_flag() {
+ new_test_ext().execute_with(|| {
+ //default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_meta_update_permission_flag(
+ origin1.clone(),
+ collection_id,
+ MetaUpdatePermission::ItemOwner,
+ ));
+
+ let variable_data = b"ten chars.".to_vec();
+ assert_ok!(TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data.clone()
+ ));
+
+ assert_eq!(
+ <pallet_nonfungible::TokenData<Test>>::get((collection_id, TokenId(1)))
+ .unwrap()
+ .variable_data,
+ variable_data
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_nft_with_item_owner_permission_flag_neg() {
+ new_test_ext().execute_with(|| {
+ let collection_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ collection_id,
+ true
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account(1)
+ ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_meta_update_permission_flag(
+ origin1.clone(),
+ collection_id,
+ MetaUpdatePermission::ItemOwner,
+ ));
+
+ let variable_data = b"1234567890123".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data.clone()
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::TokenVariableDataLimitExceeded
+ );
+ })
+}
+
+#[test]
+fn collection_transfer_flag_works() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ assert_ok!(TemplateModule::set_transfers_enabled_flag(
+ origin1,
+ collection_id,
+ true
+ ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ let origin1 = Origin::signed(1);
+
+ // default scenario
+ assert_ok!(TemplateModule::transfer(
+ origin1,
+ account(2),
+ collection_id,
+ TokenId(1),
+ 1
+ ));
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ false
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(2), TokenId(1))),
+ true
+ );
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 0
+ );
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(2))),
+ 1
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_nft_with_admin_flag() {
+ new_test_ext().execute_with(|| {
+ // default_limits();
+
+ let collection_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, 2, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin2.clone(),
+ collection_id,
+ true
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin2.clone(),
+ collection_id,
+ account(1)
+ ));
+
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin2.clone(),
+ collection_id,
+ account(1)
+ ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::Admin,
+ ));
+
+ let variable_data = b"test.".to_vec();
+ assert_ok!(TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data.clone()
+ ));
+
+ assert_eq!(
+ <pallet_nonfungible::TokenData<Test>>::get((collection_id, 1))
+ .unwrap()
+ .variable_data,
+ variable_data
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_nft_with_admin_flag_neg() {
+ new_test_ext().execute_with(|| {
+ // default_limits();
+
+ let collection_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, 2, CollectionId(1));
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin2.clone(),
+ collection_id,
+ true
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin2.clone(),
+ collection_id,
+ account(1)
+ ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::Admin,
+ ));
+
+ let variable_data = b"test.".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ TokenId(1),
+ variable_data.clone()
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::NoPermission
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_flag_after_freeze() {
+ new_test_ext().execute_with(|| {
+ // default_limits();
+
+ let collection_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, 2, CollectionId(1));
+
+ let origin2 = Origin::signed(2);
+
+ assert_ok!(TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::None,
+ ));
+ assert_noop!(
+ TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::Admin
+ ),
+ CommonError::<Test>::MetadataFlagFrozen
+ );
+ });
+}
+
+#[test]
+fn set_variable_meta_data_on_nft_with_none_flag_neg() {
+ new_test_ext().execute_with(|| {
+ // default_limits();
+
+ let collection_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));
+ let origin1 = Origin::signed(1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
+ assert_ok!(TemplateModule::set_meta_update_permission_flag(
+ origin1.clone(),
+ collection_id,
+ MetaUpdatePermission::None,
+ ));
+
+ let variable_data = b"test.".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1.clone(),
+ collection_id,
+ TokenId(1),
+ variable_data.clone()
+ )
+ .map_err(|e| e.error),
+ CommonError::<Test>::NoPermission
+ );
+ });
+}
+
+#[test]
+fn collection_transfer_flag_works_neg() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
+ assert_ok!(TemplateModule::set_transfers_enabled_flag(
+ origin1,
+ collection_id,
+ false
+ ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+
+ let origin1 = Origin::signed(1);
+
+ // default scenario
+ assert_noop!(
+ TemplateModule::transfer(origin1, account(2), CollectionId(1), TokenId(1), 1)
+ .map_err(|e| e.error),
+ CommonError::<Test>::TransferNotAllowed
+ );
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(1))),
+ 1
+ );
+ assert_eq!(
+ <pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(2))),
+ 0
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(1), TokenId(1))),
+ true
+ );
+ assert_eq!(
+ <pallet_nonfungible::Owned<Test>>::get((collection_id, account(2), TokenId(1))),
+ false
+ );
+ });
+}
pallets/unique/src/weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/unique/src/weights.rs
@@ -0,0 +1,315 @@
+// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
+
+//! Autogenerated weights for pallet_unique
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
+//! DATE: 2021-10-21, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128
+
+// Executed Command:
+// target/release/unique-collator
+// benchmark
+// --pallet
+// pallet-unique
+// --wasm-execution
+// compiled
+// --extrinsic
+// *
+// --template
+// .maintain/frame-weight-template.hbs
+// --steps=50
+// --repeat=20
+// --output=./pallets/unique/src/weights.rs
+
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(clippy::unnecessary_cast)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weight functions needed for pallet_unique.
+pub trait WeightInfo {
+ fn create_collection() -> Weight;
+ fn destroy_collection() -> Weight;
+ fn add_to_allow_list() -> Weight;
+ fn remove_from_allow_list() -> Weight;
+ fn set_public_access_mode() -> Weight;
+ fn set_mint_permission() -> Weight;
+ fn change_collection_owner() -> Weight;
+ fn add_collection_admin() -> Weight;
+ fn remove_collection_admin() -> Weight;
+ fn set_collection_sponsor() -> Weight;
+ fn confirm_sponsorship() -> Weight;
+ fn remove_collection_sponsor() -> Weight;
+ fn set_transfers_enabled_flag() -> Weight;
+ fn set_offchain_schema(b: u32, ) -> Weight;
+ fn set_const_on_chain_schema(b: u32, ) -> Weight;
+ fn set_variable_on_chain_schema(b: u32, ) -> Weight;
+ fn set_schema_version() -> Weight;
+ fn set_collection_limits() -> Weight;
+ fn set_meta_update_permission_flag() -> Weight;
+}
+
+/// Weights for pallet_unique using the Substrate node and recommended hardware.
+pub struct SubstrateWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
+ // Storage: Common CreatedCollectionCount (r:1 w:1)
+ // Storage: Common DestroyedCollectionCount (r:1 w:0)
+ // Storage: System Account (r:2 w:2)
+ // Storage: Common CollectionById (r:0 w:1)
+ fn create_collection() -> Weight {
+ (23_803_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Common DestroyedCollectionCount (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:0 w:1)
+ // Storage: Nonfungible TokensBurnt (r:0 w:1)
+ fn destroy_collection() -> Weight {
+ (27_831_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common Allowlist (r:0 w:1)
+ fn add_to_allow_list() -> Weight {
+ (6_629_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common Allowlist (r:0 w:1)
+ fn remove_from_allow_list() -> Weight {
+ (6_596_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_public_access_mode() -> Weight {
+ (6_338_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_mint_permission() -> Weight {
+ (6_383_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn change_collection_owner() -> Weight {
+ (6_493_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common IsAdmin (r:0 w:1)
+ fn add_collection_admin() -> Weight {
+ (6_850_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common IsAdmin (r:0 w:1)
+ fn remove_collection_admin() -> Weight {
+ (6_615_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_collection_sponsor() -> Weight {
+ (6_430_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn confirm_sponsorship() -> Weight {
+ (6_125_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn remove_collection_sponsor() -> Weight {
+ (6_236_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_transfers_enabled_flag() -> Weight {
+ (6_500_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_offchain_schema(_b: u32, ) -> Weight {
+ (6_538_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_const_on_chain_schema(_b: u32, ) -> Weight {
+ (6_542_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_variable_on_chain_schema(b: u32, ) -> Weight {
+ (6_092_000 as Weight)
+ // Standard Error: 0
+ .saturating_add((2_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_schema_version() -> Weight {
+ (6_470_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_collection_limits() -> Weight {
+ (6_841_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_meta_update_permission_flag() -> Weight {
+ (6_278_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+ // Storage: Common CreatedCollectionCount (r:1 w:1)
+ // Storage: Common DestroyedCollectionCount (r:1 w:0)
+ // Storage: System Account (r:2 w:2)
+ // Storage: Common CollectionById (r:0 w:1)
+ fn create_collection() -> Weight {
+ (23_803_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ // Storage: Common DestroyedCollectionCount (r:1 w:1)
+ // Storage: Nonfungible TokensMinted (r:0 w:1)
+ // Storage: Nonfungible TokensBurnt (r:0 w:1)
+ fn destroy_collection() -> Weight {
+ (27_831_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common Allowlist (r:0 w:1)
+ fn add_to_allow_list() -> Weight {
+ (6_629_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common Allowlist (r:0 w:1)
+ fn remove_from_allow_list() -> Weight {
+ (6_596_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_public_access_mode() -> Weight {
+ (6_338_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_mint_permission() -> Weight {
+ (6_383_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn change_collection_owner() -> Weight {
+ (6_493_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common IsAdmin (r:0 w:1)
+ fn add_collection_admin() -> Weight {
+ (6_850_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:0)
+ // Storage: Common IsAdmin (r:0 w:1)
+ fn remove_collection_admin() -> Weight {
+ (6_615_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_collection_sponsor() -> Weight {
+ (6_430_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn confirm_sponsorship() -> Weight {
+ (6_125_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn remove_collection_sponsor() -> Weight {
+ (6_236_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_transfers_enabled_flag() -> Weight {
+ (6_500_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_offchain_schema(_b: u32, ) -> Weight {
+ (6_538_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_const_on_chain_schema(_b: u32, ) -> Weight {
+ (6_542_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_variable_on_chain_schema(b: u32, ) -> Weight {
+ (6_092_000 as Weight)
+ // Standard Error: 0
+ .saturating_add((2_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_schema_version() -> Weight {
+ (6_470_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_collection_limits() -> Weight {
+ (6_841_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionById (r:1 w:1)
+ fn set_meta_update_permission_flag() -> Weight {
+ (6_278_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+}
\ No newline at end of file
primitives/data-structs/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/primitives/data-structs/Cargo.toml
@@ -0,0 +1,39 @@
+[package]
+name = "up-data-structs"
+authors = ["Unique Network <support@uniquenetwork.io>"]
+description = "Unique data structs definitions"
+edition = "2021"
+license = 'All Rights Reserved'
+homepage = "https://unique.network"
+repository = 'https://github.com/UniqueNetwork/unique-chain'
+version = '0.1.0'
+
+[dependencies]
+scale-info = { version = "1.0.0", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "2.3.0", default-features = false, features = [
+ 'derive',
+] }
+serde = { version = "1.0.130", features = [
+ 'derive',
+], default-features = false, optional = true }
+frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
+frame-system = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
+sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
+sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
+sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
+derivative = "2.2.0"
+
+[features]
+default = ["std"]
+std = [
+ "serde1",
+ "serde/std",
+ "codec/std",
+ "frame-system/std",
+ "frame-support/std",
+ "sp-runtime/std",
+ "sp-core/std",
+ "sp-std/std",
+]
+serde1 = ["serde"]
+limit-testing = []
primitives/data-structs/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/primitives/data-structs/src/lib.rs
@@ -0,0 +1,437 @@
+#![cfg_attr(not(feature = "std"), no_std)]
+
+use core::convert::{TryFrom, TryInto};
+
+#[cfg(feature = "serde")]
+pub use serde::{Serialize, Deserialize};
+
+use sp_core::U256;
+use sp_runtime::{ArithmeticError, sp_std::prelude::Vec};
+use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
+pub use frame_support::{
+ BoundedVec, construct_runtime, decl_event, decl_module, decl_storage, decl_error,
+ dispatch::DispatchResult,
+ ensure, fail, parameter_types,
+ traits::{
+ Currency, ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced,
+ Randomness, IsSubType, WithdrawReasons,
+ },
+ weights::{
+ constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
+ DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
+ WeightToFeePolynomial, DispatchClass,
+ },
+ StorageValue, transactional,
+};
+use derivative::Derivative;
+use scale_info::TypeInfo;
+
+pub const MAX_DECIMAL_POINTS: DecimalPoints = 30;
+pub const MAX_REFUNGIBLE_PIECES: u128 = 1_000_000_000_000_000_000_000;
+pub const MAX_SPONSOR_TIMEOUT: u32 = 10_368_000;
+
+pub const MAX_TOKEN_OWNERSHIP: u32 = if cfg!(not(feature = "limit-testing")) {
+ 10_000_000
+} else {
+ 10
+};
+pub const COLLECTION_NUMBER_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) {
+ 100_000
+} else {
+ 10
+};
+pub const CUSTOM_DATA_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) {
+ 2048
+} else {
+ 10
+};
+pub const COLLECTION_ADMINS_LIMIT: u32 = 5;
+pub const COLLECTION_TOKEN_LIMIT: u32 = u32::MAX;
+pub const ACCOUNT_TOKEN_OWNERSHIP_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) {
+ 1_000_000
+} else {
+ 10
+};
+
+// Timeouts for item types in passed blocks
+pub const NFT_SPONSOR_TRANSFER_TIMEOUT: u32 = 5;
+pub const FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT: u32 = 5;
+pub const REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT: u32 = 5;
+
+pub const SPONSOR_APPROVE_TIMEOUT: u32 = 5;
+
+// Schema limits
+pub const OFFCHAIN_SCHEMA_LIMIT: u32 = 1024;
+pub const VARIABLE_ON_CHAIN_SCHEMA_LIMIT: u32 = 1024;
+pub const CONST_ON_CHAIN_SCHEMA_LIMIT: u32 = 1024;
+
+pub const MAX_COLLECTION_NAME_LENGTH: usize = 64;
+pub const MAX_COLLECTION_DESCRIPTION_LENGTH: usize = 256;
+pub const MAX_TOKEN_PREFIX_LENGTH: usize = 16;
+
+/// How much items can be created per single
+/// create_many call
+pub const MAX_ITEMS_PER_BATCH: u32 = 200;
+
+parameter_types! {
+ pub const CustomDataLimit: u32 = CUSTOM_DATA_LIMIT;
+}
+
+#[derive(Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Debug, Default, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct CollectionId(pub u32);
+impl EncodeLike<u32> for CollectionId {}
+impl EncodeLike<CollectionId> for u32 {}
+
+#[derive(Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Debug, Default, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct TokenId(pub u32);
+impl EncodeLike<u32> for TokenId {}
+impl EncodeLike<TokenId> for u32 {}
+
+impl TokenId {
+ pub fn try_next(self) -> Result<TokenId, ArithmeticError> {
+ self.0
+ .checked_add(1)
+ .ok_or(ArithmeticError::Overflow)
+ .map(Self)
+ }
+}
+
+impl From<TokenId> for U256 {
+ fn from(t: TokenId) -> Self {
+ t.0.into()
+ }
+}
+
+impl TryFrom<U256> for TokenId {
+ type Error = &'static str;
+
+ fn try_from(value: U256) -> Result<Self, Self::Error> {
+ Ok(TokenId(value.try_into().map_err(|_| "too large token id")?))
+ }
+}
+
+pub struct OverflowError;
+impl From<OverflowError> for &'static str {
+ fn from(_: OverflowError) -> Self {
+ "overflow occured"
+ }
+}
+
+pub type DecimalPoints = u8;
+
+#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub enum CollectionMode {
+ NFT,
+ // decimal points
+ Fungible(DecimalPoints),
+ ReFungible,
+}
+
+impl CollectionMode {
+ pub fn id(&self) -> u8 {
+ match self {
+ CollectionMode::NFT => 1,
+ CollectionMode::Fungible(_) => 2,
+ CollectionMode::ReFungible => 3,
+ }
+ }
+}
+
+pub trait SponsoringResolve<AccountId, Call> {
+ fn resolve(who: &AccountId, call: &Call) -> Option<AccountId>;
+}
+
+#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub enum AccessMode {
+ Normal,
+ AllowList,
+}
+impl Default for AccessMode {
+ fn default() -> Self {
+ Self::Normal
+ }
+}
+
+#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub enum SchemaVersion {
+ ImageURL,
+ Unique,
+}
+impl Default for SchemaVersion {
+ fn default() -> Self {
+ Self::ImageURL
+ }
+}
+
+#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct Ownership<AccountId> {
+ pub owner: AccountId,
+ pub fraction: u128,
+}
+
+#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub enum SponsorshipState<AccountId> {
+ /// The fees are applied to the transaction sender
+ Disabled,
+ Unconfirmed(AccountId),
+ /// Transactions are sponsored by specified account
+ Confirmed(AccountId),
+}
+
+impl<AccountId> SponsorshipState<AccountId> {
+ pub fn sponsor(&self) -> Option<&AccountId> {
+ match self {
+ Self::Confirmed(sponsor) => Some(sponsor),
+ _ => None,
+ }
+ }
+
+ pub fn pending_sponsor(&self) -> Option<&AccountId> {
+ match self {
+ Self::Unconfirmed(sponsor) | Self::Confirmed(sponsor) => Some(sponsor),
+ _ => None,
+ }
+ }
+
+ pub fn confirmed(&self) -> bool {
+ matches!(self, Self::Confirmed(_))
+ }
+}
+
+impl<T> Default for SponsorshipState<T> {
+ fn default() -> Self {
+ Self::Disabled
+ }
+}
+
+#[derive(Encode, Decode, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct Collection<AccountId> {
+ pub owner: AccountId,
+ pub mode: CollectionMode,
+ pub access: AccessMode,
+ pub name: Vec<u16>, // 64 include null escape char
+ pub description: Vec<u16>, // 256 include null escape char
+ pub token_prefix: Vec<u8>, // 16 include null escape char
+ pub mint_mode: bool,
+ pub offchain_schema: Vec<u8>,
+ pub schema_version: SchemaVersion,
+ pub sponsorship: SponsorshipState<AccountId>,
+ pub limits: CollectionLimits, // Collection private restrictions
+ pub variable_on_chain_schema: Vec<u8>, //
+ pub const_on_chain_schema: Vec<u8>, //
+ pub meta_update_permission: MetaUpdatePermission,
+}
+
+#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct NftItemType<AccountId> {
+ pub owner: AccountId,
+ pub const_data: Vec<u8>,
+ pub variable_data: Vec<u8>,
+}
+
+#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct FungibleItemType {
+ pub value: u128,
+}
+
+#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct ReFungibleItemType<AccountId> {
+ pub owner: Vec<Ownership<AccountId>>,
+ pub const_data: Vec<u8>,
+ pub variable_data: Vec<u8>,
+}
+
+/// All fields are wrapped in `Option`s, where None means chain default
+#[derive(Encode, Decode, Debug, Default, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct CollectionLimits {
+ pub account_token_ownership_limit: Option<u32>,
+ pub sponsored_data_size: Option<u32>,
+ /// None - setVariableMetadata is not sponsored
+ /// Some(v) - setVariableMetadata is sponsored
+ /// if there is v block between txs
+ pub sponsored_data_rate_limit: Option<(Option<u32>,)>,
+ pub token_limit: Option<u32>,
+
+ // Timeouts for item types in passed blocks
+ pub sponsor_transfer_timeout: Option<u32>,
+ pub sponsor_approve_timeout: Option<u32>,
+ pub owner_can_transfer: Option<bool>,
+ pub owner_can_destroy: Option<bool>,
+ pub transfers_enabled: Option<bool>,
+}
+
+impl CollectionLimits {
+ pub fn account_token_ownership_limit(&self) -> u32 {
+ self.account_token_ownership_limit
+ .unwrap_or(ACCOUNT_TOKEN_OWNERSHIP_LIMIT)
+ .min(MAX_TOKEN_OWNERSHIP)
+ }
+ pub fn sponsored_data_size(&self) -> u32 {
+ self.sponsored_data_size
+ .unwrap_or(CUSTOM_DATA_LIMIT)
+ .min(CUSTOM_DATA_LIMIT)
+ }
+ pub fn token_limit(&self) -> u32 {
+ self.token_limit
+ .unwrap_or(COLLECTION_TOKEN_LIMIT)
+ .min(COLLECTION_TOKEN_LIMIT)
+ }
+ pub fn sponsor_transfer_timeout(&self, default: u32) -> u32 {
+ self.sponsor_transfer_timeout
+ .unwrap_or(default)
+ .min(MAX_SPONSOR_TIMEOUT)
+ }
+ pub fn sponsor_approve_timeout(&self) -> u32 {
+ self.sponsor_approve_timeout
+ .unwrap_or(SPONSOR_APPROVE_TIMEOUT)
+ .min(MAX_SPONSOR_TIMEOUT)
+ }
+ pub fn owner_can_transfer(&self) -> bool {
+ self.owner_can_transfer.unwrap_or(true)
+ }
+ pub fn owner_can_destroy(&self) -> bool {
+ self.owner_can_destroy.unwrap_or(true)
+ }
+ pub fn transfers_enabled(&self) -> bool {
+ self.transfers_enabled.unwrap_or(true)
+ }
+ pub fn sponsored_data_rate_limit(&self) -> Option<u32> {
+ self.sponsored_data_rate_limit
+ .unwrap_or((None,))
+ .0
+ .map(|v| v.min(MAX_SPONSOR_TIMEOUT))
+ }
+}
+
+/// BoundedVec doesn't supports serde
+#[cfg(feature = "serde1")]
+mod bounded_serde {
+ use core::convert::TryFrom;
+ use frame_support::{BoundedVec, traits::Get};
+ use serde::{
+ ser::{self, Serialize},
+ de::{self, Deserialize, Error},
+ };
+ use sp_std::vec::Vec;
+
+ pub fn serialize<D, V, S>(value: &BoundedVec<V, S>, serializer: D) -> Result<D::Ok, D::Error>
+ where
+ D: ser::Serializer,
+ V: Serialize,
+ {
+ (value as &Vec<_>).serialize(serializer)
+ }
+
+ pub fn deserialize<'de, D, V, S>(deserializer: D) -> Result<BoundedVec<V, S>, D::Error>
+ where
+ D: de::Deserializer<'de>,
+ V: de::Deserialize<'de>,
+ S: Get<u32>,
+ {
+ // TODO: Implement custom visitor, which will limit vec size at parse time? Will serde only be used by chainspec?
+ let vec = <Vec<V>>::deserialize(deserializer)?;
+ let len = vec.len();
+ TryFrom::try_from(vec).map_err(|_| D::Error::invalid_length(len, &"lesser size"))
+ }
+}
+
+#[derive(Encode, Decode, MaxEncodedLen, Default, PartialEq, Clone, Derivative, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derivative(Debug)]
+pub struct CreateNftData {
+ #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
+ #[derivative(Debug = "ignore")]
+ pub const_data: BoundedVec<u8, CustomDataLimit>,
+ #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
+ #[derivative(Debug = "ignore")]
+ pub variable_data: BoundedVec<u8, CustomDataLimit>,
+}
+
+#[derive(Encode, Decode, MaxEncodedLen, Default, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct CreateFungibleData {
+ pub value: u128,
+}
+
+#[derive(Encode, Decode, MaxEncodedLen, Default, PartialEq, Clone, Derivative, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derivative(Debug)]
+pub struct CreateReFungibleData {
+ #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
+ #[derivative(Debug = "ignore")]
+ pub const_data: BoundedVec<u8, CustomDataLimit>,
+ #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
+ #[derivative(Debug = "ignore")]
+ pub variable_data: BoundedVec<u8, CustomDataLimit>,
+ pub pieces: u128,
+}
+
+#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+pub enum MetaUpdatePermission {
+ ItemOwner,
+ Admin,
+ None,
+}
+
+impl Default for MetaUpdatePermission {
+ fn default() -> Self {
+ Self::ItemOwner
+ }
+}
+
+#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub enum CreateItemData {
+ NFT(CreateNftData),
+ Fungible(CreateFungibleData),
+ ReFungible(CreateReFungibleData),
+}
+
+impl CreateItemData {
+ pub fn data_size(&self) -> usize {
+ match self {
+ CreateItemData::NFT(data) => data.variable_data.len() + data.const_data.len(),
+ CreateItemData::ReFungible(data) => data.variable_data.len() + data.const_data.len(),
+ _ => 0,
+ }
+ }
+}
+
+impl From<CreateNftData> for CreateItemData {
+ fn from(item: CreateNftData) -> Self {
+ CreateItemData::NFT(item)
+ }
+}
+
+impl From<CreateReFungibleData> for CreateItemData {
+ fn from(item: CreateReFungibleData) -> Self {
+ CreateItemData::ReFungible(item)
+ }
+}
+
+impl From<CreateFungibleData> for CreateItemData {
+ fn from(item: CreateFungibleData) -> Self {
+ CreateItemData::Fungible(item)
+ }
+}
+
+#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
+#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+pub struct CollectionStats {
+ pub created: u32,
+ pub destroyed: u32,
+ pub alive: u32,
+}
primitives/nft/Cargo.tomldiffbeforeafterboth--- a/primitives/nft/Cargo.toml
+++ /dev/null
@@ -1,39 +0,0 @@
-[package]
-name = "nft-data-structs"
-authors = ['Substrate DevHub <https://github.com/substrate-developer-hub>']
-description = "Nft data structs definitions"
-edition = "2021"
-license = 'GPL-3.0'
-homepage = "https://substrate.dev"
-repository = 'https://github.com/clover-network/clover'
-version = '0.9.0'
-
-[dependencies]
-scale-info = { version = "1.0.0", default-features = false, features = ["derive"] }
-codec = { package = "parity-scale-codec", version = "2.3.0", default-features = false, features = [
- 'derive',
-] }
-serde = { version = "1.0.130", features = [
- 'derive',
-], default-features = false, optional = true }
-frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
-frame-system = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
-sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
-sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
-sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
-derivative = "2.2.0"
-
-[features]
-default = ["std"]
-std = [
- "serde1",
- "serde/std",
- "codec/std",
- "frame-system/std",
- "frame-support/std",
- "sp-runtime/std",
- "sp-core/std",
- "sp-std/std",
-]
-serde1 = ["serde"]
-limit-testing = []
primitives/nft/src/lib.rsdiffbeforeafterboth--- a/primitives/nft/src/lib.rs
+++ /dev/null
@@ -1,433 +0,0 @@
-#![cfg_attr(not(feature = "std"), no_std)]
-
-use core::convert::{TryFrom, TryInto};
-
-#[cfg(feature = "serde")]
-pub use serde::{Serialize, Deserialize};
-
-use sp_core::U256;
-use sp_runtime::{ArithmeticError, sp_std::prelude::Vec};
-use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
-pub use frame_support::{
- BoundedVec, construct_runtime, decl_event, decl_module, decl_storage, decl_error,
- dispatch::DispatchResult,
- ensure, fail, parameter_types,
- traits::{
- Currency, ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced,
- Randomness, IsSubType, WithdrawReasons,
- },
- weights::{
- constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
- DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
- WeightToFeePolynomial, DispatchClass,
- },
- StorageValue, transactional,
-};
-use derivative::Derivative;
-use scale_info::TypeInfo;
-
-pub const MAX_DECIMAL_POINTS: DecimalPoints = 30;
-pub const MAX_REFUNGIBLE_PIECES: u128 = 1_000_000_000_000_000_000_000;
-pub const MAX_SPONSOR_TIMEOUT: u32 = 10_368_000;
-pub const MAX_TOKEN_OWNERSHIP: u32 = 10_000_000;
-
-pub const COLLECTION_NUMBER_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) {
- 100000
-} else {
- 10
-};
-pub const CUSTOM_DATA_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) {
- 2048
-} else {
- 10
-};
-pub const COLLECTION_ADMINS_LIMIT: u32 = 5;
-pub const COLLECTION_TOKEN_LIMIT: u32 = u32::MAX;
-pub const ACCOUNT_TOKEN_OWNERSHIP_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) {
- 1000000
-} else {
- 10
-};
-
-// Timeouts for item types in passed blocks
-pub const NFT_SPONSOR_TRANSFER_TIMEOUT: u32 = 5;
-pub const FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT: u32 = 5;
-pub const REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT: u32 = 5;
-
-pub const SPONSOR_APPROVE_TIMEOUT: u32 = 5;
-
-// Schema limits
-pub const OFFCHAIN_SCHEMA_LIMIT: u32 = 1024;
-pub const VARIABLE_ON_CHAIN_SCHEMA_LIMIT: u32 = 1024;
-pub const CONST_ON_CHAIN_SCHEMA_LIMIT: u32 = 1024;
-
-pub const MAX_COLLECTION_NAME_LENGTH: usize = 64;
-pub const MAX_COLLECTION_DESCRIPTION_LENGTH: usize = 256;
-pub const MAX_TOKEN_PREFIX_LENGTH: usize = 16;
-
-/// How much items can be created per single
-/// create_many call
-pub const MAX_ITEMS_PER_BATCH: u32 = 200;
-
-parameter_types! {
- pub const CustomDataLimit: u32 = CUSTOM_DATA_LIMIT;
-}
-
-#[derive(Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Debug, Default, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct CollectionId(pub u32);
-impl EncodeLike<u32> for CollectionId {}
-impl EncodeLike<CollectionId> for u32 {}
-
-#[derive(Encode, Decode, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Debug, Default, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct TokenId(pub u32);
-impl EncodeLike<u32> for TokenId {}
-impl EncodeLike<TokenId> for u32 {}
-
-impl TokenId {
- pub fn try_next(self) -> Result<TokenId, ArithmeticError> {
- self.0
- .checked_add(1)
- .ok_or(ArithmeticError::Overflow)
- .map(Self)
- }
-}
-
-impl From<TokenId> for U256 {
- fn from(t: TokenId) -> Self {
- t.0.into()
- }
-}
-
-impl TryFrom<U256> for TokenId {
- type Error = &'static str;
-
- fn try_from(value: U256) -> Result<Self, Self::Error> {
- Ok(TokenId(value.try_into().map_err(|_| "too large token id")?))
- }
-}
-
-pub struct OverflowError;
-impl From<OverflowError> for &'static str {
- fn from(_: OverflowError) -> Self {
- "overflow occured"
- }
-}
-
-pub type DecimalPoints = u8;
-
-#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub enum CollectionMode {
- NFT,
- // decimal points
- Fungible(DecimalPoints),
- ReFungible,
-}
-
-impl CollectionMode {
- pub fn id(&self) -> u8 {
- match self {
- CollectionMode::NFT => 1,
- CollectionMode::Fungible(_) => 2,
- CollectionMode::ReFungible => 3,
- }
- }
-}
-
-pub trait SponsoringResolve<AccountId, Call> {
- fn resolve(who: &AccountId, call: &Call) -> Option<AccountId>;
-}
-
-#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub enum AccessMode {
- Normal,
- AllowList,
-}
-impl Default for AccessMode {
- fn default() -> Self {
- Self::Normal
- }
-}
-
-#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub enum SchemaVersion {
- ImageURL,
- Unique,
-}
-impl Default for SchemaVersion {
- fn default() -> Self {
- Self::ImageURL
- }
-}
-
-#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct Ownership<AccountId> {
- pub owner: AccountId,
- pub fraction: u128,
-}
-
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub enum SponsorshipState<AccountId> {
- /// The fees are applied to the transaction sender
- Disabled,
- Unconfirmed(AccountId),
- /// Transactions are sponsored by specified account
- Confirmed(AccountId),
-}
-
-impl<AccountId> SponsorshipState<AccountId> {
- pub fn sponsor(&self) -> Option<&AccountId> {
- match self {
- Self::Confirmed(sponsor) => Some(sponsor),
- _ => None,
- }
- }
-
- pub fn pending_sponsor(&self) -> Option<&AccountId> {
- match self {
- Self::Unconfirmed(sponsor) | Self::Confirmed(sponsor) => Some(sponsor),
- _ => None,
- }
- }
-
- pub fn confirmed(&self) -> bool {
- matches!(self, Self::Confirmed(_))
- }
-}
-
-impl<T> Default for SponsorshipState<T> {
- fn default() -> Self {
- Self::Disabled
- }
-}
-
-#[derive(Encode, Decode, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct Collection<AccountId> {
- pub owner: AccountId,
- pub mode: CollectionMode,
- pub access: AccessMode,
- pub name: Vec<u16>, // 64 include null escape char
- pub description: Vec<u16>, // 256 include null escape char
- pub token_prefix: Vec<u8>, // 16 include null escape char
- pub mint_mode: bool,
- pub offchain_schema: Vec<u8>,
- pub schema_version: SchemaVersion,
- pub sponsorship: SponsorshipState<AccountId>,
- pub limits: CollectionLimits, // Collection private restrictions
- pub variable_on_chain_schema: Vec<u8>, //
- pub const_on_chain_schema: Vec<u8>, //
- pub meta_update_permission: MetaUpdatePermission,
-}
-
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct NftItemType<AccountId> {
- pub owner: AccountId,
- pub const_data: Vec<u8>,
- pub variable_data: Vec<u8>,
-}
-
-#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct FungibleItemType {
- pub value: u128,
-}
-
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct ReFungibleItemType<AccountId> {
- pub owner: Vec<Ownership<AccountId>>,
- pub const_data: Vec<u8>,
- pub variable_data: Vec<u8>,
-}
-
-/// All fields are wrapped in `Option`s, where None means chain default
-#[derive(Encode, Decode, Debug, Default, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct CollectionLimits {
- pub account_token_ownership_limit: Option<u32>,
- pub sponsored_data_size: Option<u32>,
- /// None - setVariableMetadata is not sponsored
- /// Some(v) - setVariableMetadata is sponsored
- /// if there is v block between txs
- pub sponsored_data_rate_limit: Option<(Option<u32>,)>,
- pub token_limit: Option<u32>,
-
- // Timeouts for item types in passed blocks
- pub sponsor_transfer_timeout: Option<u32>,
- pub sponsor_approve_timeout: Option<u32>,
- pub owner_can_transfer: Option<bool>,
- pub owner_can_destroy: Option<bool>,
- pub transfers_enabled: Option<bool>,
-}
-
-impl CollectionLimits {
- pub fn account_token_ownership_limit(&self) -> u32 {
- self.account_token_ownership_limit
- .unwrap_or(ACCOUNT_TOKEN_OWNERSHIP_LIMIT)
- .min(MAX_TOKEN_OWNERSHIP)
- }
- pub fn sponsored_data_size(&self) -> u32 {
- self.sponsored_data_size
- .unwrap_or(CUSTOM_DATA_LIMIT)
- .min(CUSTOM_DATA_LIMIT)
- }
- pub fn token_limit(&self) -> u32 {
- self.token_limit
- .unwrap_or(COLLECTION_TOKEN_LIMIT)
- .min(COLLECTION_TOKEN_LIMIT)
- }
- pub fn sponsor_transfer_timeout(&self, default: u32) -> u32 {
- self.sponsor_transfer_timeout
- .unwrap_or(default)
- .min(MAX_SPONSOR_TIMEOUT)
- }
- pub fn sponsor_approve_timeout(&self) -> u32 {
- self.sponsor_approve_timeout
- .unwrap_or(SPONSOR_APPROVE_TIMEOUT)
- .min(MAX_SPONSOR_TIMEOUT)
- }
- pub fn owner_can_transfer(&self) -> bool {
- self.owner_can_transfer.unwrap_or(true)
- }
- pub fn owner_can_destroy(&self) -> bool {
- self.owner_can_destroy.unwrap_or(true)
- }
- pub fn transfers_enabled(&self) -> bool {
- self.transfers_enabled.unwrap_or(true)
- }
- pub fn sponsored_data_rate_limit(&self) -> Option<u32> {
- self.sponsored_data_rate_limit
- .unwrap_or((None,))
- .0
- .map(|v| v.min(MAX_SPONSOR_TIMEOUT))
- }
-}
-
-/// BoundedVec doesn't supports serde
-#[cfg(feature = "serde1")]
-mod bounded_serde {
- use core::convert::TryFrom;
- use frame_support::{BoundedVec, traits::Get};
- use serde::{
- ser::{self, Serialize},
- de::{self, Deserialize, Error},
- };
- use sp_std::vec::Vec;
-
- pub fn serialize<D, V, S>(value: &BoundedVec<V, S>, serializer: D) -> Result<D::Ok, D::Error>
- where
- D: ser::Serializer,
- V: Serialize,
- {
- (value as &Vec<_>).serialize(serializer)
- }
-
- pub fn deserialize<'de, D, V, S>(deserializer: D) -> Result<BoundedVec<V, S>, D::Error>
- where
- D: de::Deserializer<'de>,
- V: de::Deserialize<'de>,
- S: Get<u32>,
- {
- // TODO: Implement custom visitor, which will limit vec size at parse time? Will serde only be used by chainspec?
- let vec = <Vec<V>>::deserialize(deserializer)?;
- let len = vec.len();
- TryFrom::try_from(vec).map_err(|_| D::Error::invalid_length(len, &"lesser size"))
- }
-}
-
-#[derive(Encode, Decode, MaxEncodedLen, Default, PartialEq, Clone, Derivative, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-#[derivative(Debug)]
-pub struct CreateNftData {
- #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
- #[derivative(Debug = "ignore")]
- pub const_data: BoundedVec<u8, CustomDataLimit>,
- #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
- #[derivative(Debug = "ignore")]
- pub variable_data: BoundedVec<u8, CustomDataLimit>,
-}
-
-#[derive(Encode, Decode, MaxEncodedLen, Default, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct CreateFungibleData {
- pub value: u128,
-}
-
-#[derive(Encode, Decode, MaxEncodedLen, Default, PartialEq, Clone, Derivative, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-#[derivative(Debug)]
-pub struct CreateReFungibleData {
- #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
- #[derivative(Debug = "ignore")]
- pub const_data: BoundedVec<u8, CustomDataLimit>,
- #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))]
- #[derivative(Debug = "ignore")]
- pub variable_data: BoundedVec<u8, CustomDataLimit>,
- pub pieces: u128,
-}
-
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
-pub enum MetaUpdatePermission {
- ItemOwner,
- Admin,
- None,
-}
-
-impl Default for MetaUpdatePermission {
- fn default() -> Self {
- Self::ItemOwner
- }
-}
-
-#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub enum CreateItemData {
- NFT(CreateNftData),
- Fungible(CreateFungibleData),
- ReFungible(CreateReFungibleData),
-}
-
-impl CreateItemData {
- pub fn data_size(&self) -> usize {
- match self {
- CreateItemData::NFT(data) => data.variable_data.len() + data.const_data.len(),
- CreateItemData::ReFungible(data) => data.variable_data.len() + data.const_data.len(),
- _ => 0,
- }
- }
-}
-
-impl From<CreateNftData> for CreateItemData {
- fn from(item: CreateNftData) -> Self {
- CreateItemData::NFT(item)
- }
-}
-
-impl From<CreateReFungibleData> for CreateItemData {
- fn from(item: CreateReFungibleData) -> Self {
- CreateItemData::ReFungible(item)
- }
-}
-
-impl From<CreateFungibleData> for CreateItemData {
- fn from(item: CreateFungibleData) -> Self {
- CreateItemData::Fungible(item)
- }
-}
-
-#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct CollectionStats {
- pub created: u32,
- pub destroyed: u32,
- pub alive: u32,
-}
primitives/rpc/Cargo.tomldiffbeforeafterboth--- a/primitives/rpc/Cargo.toml
+++ b/primitives/rpc/Cargo.toml
@@ -5,7 +5,7 @@
[dependencies]
pallet-common = { default-features = false, path = '../../pallets/common' }
-nft-data-structs = { default-features = false, path = '../nft' }
+up-data-structs = { default-features = false, path = '../data-structs' }
codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = [
"derive",
] }
@@ -23,5 +23,5 @@
"sp-api/std",
"sp-runtime/std",
"pallet-common/std",
- "nft-data-structs/std",
+ "up-data-structs/std",
]
primitives/rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -1,12 +1,12 @@
#![cfg_attr(not(feature = "std"), no_std)]
-use nft_data_structs::{CollectionId, TokenId, Collection, CollectionStats};
+use up_data_structs::{CollectionId, TokenId, Collection, CollectionStats};
use sp_std::vec::Vec;
use sp_core::H160;
use codec::Decode;
sp_api::decl_runtime_apis! {
- pub trait NftApi<CrossAccountId, AccountId> where
+ pub trait UniqueApi<CrossAccountId, AccountId> where
AccountId: Decode,
CrossAccountId: pallet_common::account::CrossAccountId<AccountId>,
{
runtime/Cargo.tomldiffbeforeafterboth--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -4,12 +4,12 @@
[package]
authors = ['Unique Network <support@uniquenetwork.io>']
build = 'build.rs'
-description = 'Substrate node nft'
+description = 'Unique Runtime'
edition = '2018'
homepage = 'https://unique.network'
license = 'All Rights Reserved'
-name = 'nft-runtime'
-repository = 'https://github.com/usetech-llc/nft_private/'
+name = 'unique-runtime'
+repository = 'https://github.com/UniqueNetwork/unique-chain'
version = '0.9.12'
[package.metadata.docs.rs]
@@ -32,7 +32,7 @@
'pallet-fungible/runtime-benchmarks',
'pallet-refungible/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
- 'pallet-nft/runtime-benchmarks',
+ 'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
@@ -80,10 +80,10 @@
'pallet-fungible/std',
'pallet-refungible/std',
'pallet-nonfungible/std',
- 'pallet-nft/std',
+ 'pallet-unique/std',
'pallet-unq-scheduler/std',
- 'pallet-nft-charge-transaction/std',
- 'nft-data-structs/std',
+ 'pallet-charge-transaction/std',
+ 'up-data-structs/std',
'sp-api/std',
'sp-block-builder/std',
"sp-consensus-aura/std",
@@ -102,7 +102,7 @@
"orml-vesting/std",
]
-limit-testing = ['pallet-nft/limit-testing', 'nft-data-structs/limit-testing']
+limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
################################################################################
# Substrate Dependencies
@@ -376,18 +376,18 @@
"derive",
] }
derivative = "2.2.0"
-pallet-nft = { path = '../pallets/nft', default-features = false, version = '3.0.0' }
+pallet-unique = { path = '../pallets/unique', default-features = false }
up-rpc = { path = "../primitives/rpc", default-features = false }
up-evm-mapping = { path = "../primitives/evm-mapping", default-features = false }
-pallet-inflation = { path = '../pallets/inflation', default-features = false, version = '3.0.0' }
-nft-data-structs = { path = '../primitives/nft', default-features = false, version = '0.9.0' }
+pallet-inflation = { path = '../pallets/inflation', default-features = false }
+up-data-structs = { path = '../primitives/data-structs', default-features = false }
pallet-common = { default-features = false, path = "../pallets/common" }
pallet-fungible = { default-features = false, path = "../pallets/fungible" }
pallet-refungible = { default-features = false, path = "../pallets/refungible" }
pallet-nonfungible = { default-features = false, path = "../pallets/nonfungible" }
-pallet-unq-scheduler = { path = '../pallets/scheduler', default-features = false, version = '3.0.0' }
+pallet-unq-scheduler = { path = '../pallets/scheduler', default-features = false }
# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
-pallet-nft-charge-transaction = { git = "https://github.com/UniqueNetwork/pallet-sponsoring", package = "pallet-template-transaction-payment", default-features = false, version = '3.0.0' }
+pallet-charge-transaction = { git = "https://github.com/UniqueNetwork/pallet-sponsoring", package = "pallet-template-transaction-payment", default-features = false, version = '3.0.0' }
pallet-evm-migration = { path = '../pallets/evm-migration', default-features = false }
pallet-evm-contract-helpers = { path = '../pallets/evm-contract-helpers', default-features = false }
pallet-evm-transaction-payment = { path = '../pallets/evm-transaction-payment', default-features = false }
runtime/src/lib.rsdiffbeforeafterboth--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -53,7 +53,7 @@
WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients,
},
};
-use nft_data_structs::*;
+use up_data_structs::*;
// use pallet_contracts::weights::WeightInfo;
// #[cfg(any(feature = "std", test))]
use frame_system::{
@@ -146,7 +146,7 @@
spec_name: create_runtime_str!("opal"),
impl_name: create_runtime_str!("opal"),
authoring_version: 1,
- spec_version: 912202,
+ spec_version: 912204,
impl_version: 1,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
@@ -287,7 +287,7 @@
type Event = Event;
type OnMethodCall = (
pallet_evm_migration::OnMethodCall<Self>,
- pallet_nft::NftErcSupport<Self>,
+ pallet_unique::UniqueErcSupport<Self>,
pallet_evm_contract_helpers::HelpersOnMethodCall<Self>,
);
type OnCreate = pallet_evm_contract_helpers::HelpersOnCreate<Self>;
@@ -780,9 +780,8 @@
type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;
}
-/// Used for the pallet nft in `./nft.rs`
-impl pallet_nft::Config for Runtime {
- type WeightInfo = pallet_nft::weights::SubstrateWeight<Self>;
+impl pallet_unique::Config for Runtime {
+ type WeightInfo = pallet_unique::weights::SubstrateWeight<Self>;
}
parameter_types! {
@@ -803,11 +802,11 @@
// }
type EvmSponsorshipHandler = (
- pallet_nft::NftEthSponsorshipHandler<Runtime>,
+ pallet_unique::UniqueEthSponsorshipHandler<Runtime>,
pallet_evm_contract_helpers::HelpersContractSponsoring<Runtime>,
);
type SponsorshipHandler = (
- pallet_nft::NftSponsorshipHandler<Runtime>,
+ pallet_unique::UniqueSponsorshipHandler<Runtime>,
//pallet_contract_helpers::ContractSponsorshipHandler<Runtime>,
pallet_evm_transaction_payment::BridgeSponsorshipHandler<Runtime>,
);
@@ -831,7 +830,7 @@
type EvmBackwardsAddressMapping = up_evm_mapping::MapBackwardsAddressTruncated;
}
-impl pallet_nft_charge_transaction::Config for Runtime {
+impl pallet_charge_transaction::Config for Runtime {
type SponsorshipHandler = SponsorshipHandler;
}
@@ -882,10 +881,10 @@
// Unique Pallets
Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
- Nft: pallet_nft::{Pallet, Call, Storage} = 61,
+ Unique: pallet_unique::{Pallet, Call, Storage} = 61,
// Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
// free = 63
- Charging: pallet_nft_charge_transaction::{Pallet, Call, Storage } = 64,
+ Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
// ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
Common: pallet_common::{Pallet, Storage, Event<T>} = 66,
Fungible: pallet_fungible::{Pallet, Storage} = 67,
@@ -945,7 +944,7 @@
system::CheckEra<Runtime>,
system::CheckNonce<Runtime>,
system::CheckWeight<Runtime>,
- pallet_nft_charge_transaction::ChargeTransactionPayment<Runtime>,
+ pallet_charge_transaction::ChargeTransactionPayment<Runtime>,
//pallet_contract_helpers::ContractHelpersExtension<Runtime>,
);
/// Unchecked extrinsic type as expected by this runtime.
@@ -1015,9 +1014,9 @@
}
}
-macro_rules! dispatch_nft_runtime {
+macro_rules! dispatch_unique_runtime {
($collection:ident.$method:ident($($name:ident),*)) => {{
- use pallet_nft::dispatch::Dispatched;
+ use pallet_unique::dispatch::Dispatched;
let collection = Dispatched::dispatch(<pallet_common::CollectionHandle<Runtime>>::new($collection).unwrap());
let dispatch = collection.as_dyn();
@@ -1026,34 +1025,34 @@
}};
}
impl_runtime_apis! {
- impl up_rpc::NftApi<Block, CrossAccountId, AccountId>
+ impl up_rpc::UniqueApi<Block, CrossAccountId, AccountId>
for Runtime
{
fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Vec<TokenId> {
- dispatch_nft_runtime!(collection.account_tokens(account))
+ dispatch_unique_runtime!(collection.account_tokens(account))
}
fn token_exists(collection: CollectionId, token: TokenId) -> bool {
- dispatch_nft_runtime!(collection.token_exists(token))
+ dispatch_unique_runtime!(collection.token_exists(token))
}
fn token_owner(collection: CollectionId, token: TokenId) -> CrossAccountId {
- dispatch_nft_runtime!(collection.token_owner(token))
+ dispatch_unique_runtime!(collection.token_owner(token))
}
fn const_metadata(collection: CollectionId, token: TokenId) -> Vec<u8> {
- dispatch_nft_runtime!(collection.const_metadata(token))
+ dispatch_unique_runtime!(collection.const_metadata(token))
}
fn variable_metadata(collection: CollectionId, token: TokenId) -> Vec<u8> {
- dispatch_nft_runtime!(collection.variable_metadata(token))
+ dispatch_unique_runtime!(collection.variable_metadata(token))
}
fn collection_tokens(collection: CollectionId) -> u32 {
- dispatch_nft_runtime!(collection.collection_tokens())
+ dispatch_unique_runtime!(collection.collection_tokens())
}
fn account_balance(collection: CollectionId, account: CrossAccountId) -> u32 {
- dispatch_nft_runtime!(collection.account_balance(account))
+ dispatch_unique_runtime!(collection.account_balance(account))
}
fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> u128 {
- dispatch_nft_runtime!(collection.balance(account, token))
+ dispatch_unique_runtime!(collection.balance(account, token))
}
fn allowance(
collection: CollectionId,
@@ -1061,11 +1060,11 @@
spender: CrossAccountId,
token: TokenId,
) -> u128 {
- dispatch_nft_runtime!(collection.allowance(sender, spender, token))
+ dispatch_unique_runtime!(collection.allowance(sender, spender, token))
}
fn eth_contract_code(account: H160) -> Option<Vec<u8>> {
- <pallet_nft::NftErcSupport<Runtime>>::get_code(&account)
+ <pallet_unique::UniqueErcSupport<Runtime>>::get_code(&account)
.or_else(|| <pallet_evm_migration::OnMethodCall<Runtime>>::get_code(&account))
.or_else(|| <pallet_evm_contract_helpers::HelpersOnMethodCall<Self>>::get_code(&account))
}
@@ -1079,7 +1078,7 @@
<pallet_common::Pallet<Runtime>>::allowed(collection, user)
}
fn last_token_id(collection: CollectionId) -> TokenId {
- dispatch_nft_runtime!(collection.last_token_id())
+ dispatch_unique_runtime!(collection.last_token_id())
}
fn collection_by_id(collection: CollectionId) -> Option<Collection<AccountId>> {
<pallet_common::CollectionById<Runtime>>::get(collection)
@@ -1365,7 +1364,7 @@
let mut list = Vec::<BenchmarkList>::new();
list_benchmark!(list, extra, pallet_evm_migration, EvmMigration);
- list_benchmark!(list, extra, pallet_nft, Nft);
+ list_benchmark!(list, extra, pallet_unique, Unique);
list_benchmark!(list, extra, pallet_inflation, Inflation);
list_benchmark!(list, extra, pallet_fungible, Fungible);
list_benchmark!(list, extra, pallet_refungible, Refungible);
@@ -1399,7 +1398,7 @@
let params = (&config, &allowlist);
add_benchmark!(params, batches, pallet_evm_migration, EvmMigration);
- add_benchmark!(params, batches, pallet_nft, Nft);
+ add_benchmark!(params, batches, pallet_unique, Unique);
add_benchmark!(params, batches, pallet_inflation, Inflation);
add_benchmark!(params, batches, pallet_fungible, Fungible);
add_benchmark!(params, batches, pallet_refungible, Refungible);
tests/Dockerfile-testsdiffbeforeafterboth--- a/tests/Dockerfile-tests
+++ b/tests/Dockerfile-tests
@@ -7,8 +7,8 @@
RUN apt -y update; apt -y upgrade; apt -y install curl
-RUN mkdir nft_parachain
-WORKDIR /nft_parachain
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
RUN apt-get -y update && \
apt-get -y upgrade && \
tests/README.mddiffbeforeafterboth--- a/tests/README.md
+++ b/tests/README.md
@@ -5,7 +5,7 @@
1. Checkout polkadot in sibling folder with this project
```bash
git clone https://github.com/paritytech/polkadot.git && cd polkadot
-git checkout release-v0.9.9
+git checkout release-v0.9.12
```
2. Build with nightly-2021-11-11
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -1,7 +1,7 @@
{
- "name": "nfttests",
+ "name": "unique-tests",
"version": "1.0.0",
- "description": "Substrate Nft tests",
+ "description": "Unique Chain Tests",
"main": "",
"devDependencies": {
"@polkadot/dev": "0.63.18",
tests/src/addCollectionAdmin.test.tsdiffbeforeafterboth--- a/tests/src/addCollectionAdmin.test.ts
+++ b/tests/src/addCollectionAdmin.test.ts
@@ -23,7 +23,7 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.equal(alice.address);
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await submitTransactionAsync(alice, changeAdminTx);
const adminListAfterAddAdmin = await getAdminList(api, collectionId);
@@ -41,13 +41,13 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.equal(alice.address);
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await submitTransactionAsync(alice, changeAdminTx);
const adminListAfterAddAdmin = await getAdminList(api, collectionId);
expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
- const changeAdminTxCharlie = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
+ const changeAdminTxCharlie = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
await submitTransactionAsync(bob, changeAdminTxCharlie);
const adminListAfterAddNewAdmin = await getAdminList(api, collectionId);
expect(adminListAfterAddNewAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
@@ -63,7 +63,7 @@
const alice = privateKey('//Alice');
const nonOwner = privateKey('//Bob_stash');
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(alice.address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(alice.address));
await expect(submitTransactionExpectFailAsync(nonOwner, changeAdminTx)).to.be.rejected;
const adminListAfterAddAdmin = await getAdminList(api, collectionId);
@@ -80,7 +80,7 @@
const alice = privateKey('//Alice');
const bob = privateKey('//Bob');
- const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const changeOwnerTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;
// Verifying that nothing bad happened (network is live, new collections can be created, etc.)
@@ -94,7 +94,7 @@
const alice = privateKey('//Alice');
const bob = privateKey('//Bob');
await destroyCollectionExpectSuccess(collectionId);
- const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const changeOwnerTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;
// Verifying that nothing bad happened (network is live, new collections can be created, etc.)
@@ -125,7 +125,7 @@
expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(accounts[i]));
}
- const tx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(accounts[chainAdminLimit]));
+ const tx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(accounts[chainAdminLimit]));
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
tests/src/addToAllowList.test.tsdiffbeforeafterboth--- a/tests/src/addToAllowList.test.ts
+++ b/tests/src/addToAllowList.test.ts
@@ -59,7 +59,7 @@
const collectionId = await getCreatedCollectionCount(api) + 1;
const bob = privateKey('//Bob');
- const tx = api.tx.nft.addToAllowList(collectionId, normalizeAccountId(bob.address));
+ const tx = api.tx.unique.addToAllowList(collectionId, normalizeAccountId(bob.address));
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
@@ -71,7 +71,7 @@
// tslint:disable-next-line: no-bitwise
const collectionId = await createCollectionExpectSuccess();
await destroyCollectionExpectSuccess(collectionId);
- const tx = api.tx.nft.addToAllowList(collectionId, normalizeAccountId(bob.address));
+ const tx = api.tx.unique.addToAllowList(collectionId, normalizeAccountId(bob.address));
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
@@ -83,7 +83,7 @@
const collectionId = await createCollectionExpectSuccess();
await enableAllowListExpectSuccess(alice, collectionId);
await enablePublicMintingExpectSuccess(alice, collectionId);
- const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(ferdie.address), 'NFT');
+ const tx = api.tx.unique.createItem(collectionId, normalizeAccountId(ferdie.address), 'NFT');
await expect(submitTransactionExpectFailAsync(ferdie, tx)).to.be.rejected;
});
});
tests/src/addToContractAllowList.test.tsdiffbeforeafterboth--- a/tests/src/addToContractAllowList.test.ts
+++ b/tests/src/addToContractAllowList.test.ts
@@ -24,10 +24,10 @@
const bob = privateKey('//Bob');
const [contract, deployer] = await deployFlipper(api);
- const allowListedBefore = (await api.query.nft.contractAllowList(contract.address, bob.address)).toJSON();
- const addTx = api.tx.nft.addToContractAllowList(contract.address, bob.address);
+ const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();
+ const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);
const addEvents = await submitTransactionAsync(deployer, addTx);
- const allowListedAfter = (await api.query.nft.contractAllowList(contract.address, bob.address)).toJSON();
+ const allowListedAfter = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();
expect(getGenericResult(addEvents).success).to.be.true;
expect(allowListedBefore).to.be.false;
@@ -40,12 +40,12 @@
const bob = privateKey('//Bob');
const [contract, deployer] = await deployFlipper(api);
- const allowListedBefore = (await api.query.nft.contractAllowList(contract.address, bob.address)).toJSON();
- const addTx = api.tx.nft.addToContractAllowList(contract.address, bob.address);
+ const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();
+ const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);
const addEvents = await submitTransactionAsync(deployer, addTx);
- const allowListedAfter = (await api.query.nft.contractAllowList(contract.address, bob.address)).toJSON();
+ const allowListedAfter = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();
const addAgainEvents = await submitTransactionAsync(deployer, addTx);
- const allowListedAgainAfter = (await api.query.nft.contractAllowList(contract.address, bob.address)).toJSON();
+ const allowListedAgainAfter = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();
expect(getGenericResult(addEvents).success).to.be.true;
expect(allowListedBefore).to.be.false;
@@ -64,10 +64,10 @@
const bob = privateKey('//Bob');
const charlieGuineaPig = privateKey('//Charlie');
- const allowListedBefore = (await api.query.nft.contractAllowList(charlieGuineaPig.address, bob.address)).toJSON();
- const addTx = api.tx.nft.addToContractAllowList(charlieGuineaPig.address, bob.address);
+ const allowListedBefore = (await api.query.unique.contractAllowList(charlieGuineaPig.address, bob.address)).toJSON();
+ const addTx = api.tx.unique.addToContractAllowList(charlieGuineaPig.address, bob.address);
await expect(submitTransactionExpectFailAsync(alice, addTx)).to.be.rejected;
- const allowListedAfter = (await api.query.nft.contractAllowList(charlieGuineaPig.address, bob.address)).toJSON();
+ const allowListedAfter = (await api.query.unique.contractAllowList(charlieGuineaPig.address, bob.address)).toJSON();
expect(allowListedBefore).to.be.false;
expect(allowListedAfter).to.be.false;
@@ -79,10 +79,10 @@
const bob = privateKey('//Bob');
const [contract] = await deployFlipper(api);
- const allowListedBefore = (await api.query.nft.contractAllowList(contract.address, bob.address)).toJSON();
- const addTx = api.tx.nft.addToContractAllowList(contract.address, bob.address);
+ const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();
+ const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);
await expect(submitTransactionExpectFailAsync(bob, addTx)).to.be.rejected;
- const allowListedAfter = (await api.query.nft.contractAllowList(contract.address, bob.address)).toJSON();
+ const allowListedAfter = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();
expect(allowListedBefore).to.be.false;
expect(allowListedAfter).to.be.false;
tests/src/allowLists.test.tsdiffbeforeafterboth--- a/tests/src/allowLists.test.ts
+++ b/tests/src/allowLists.test.ts
@@ -189,7 +189,7 @@
await enableAllowListExpectSuccess(alice, collectionId);
await usingApi(async (api) => {
- const tx = api.tx.nft.burnItem(collectionId, itemId, /*normalizeAccountId(Alice.address),*/ 11);
+ const tx = api.tx.unique.burnItem(collectionId, itemId, /*normalizeAccountId(Alice.address),*/ 11);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(alice, tx);
};
tests/src/approve.test.tsdiffbeforeafterboth--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -24,7 +24,6 @@
} from './util/helpers';
chai.use(chaiAsPromised);
-const expect = chai.expect;
describe('Integration Test approve(spender, collection_id, item_id, amount):', () => {
let alice: IKeyringPair;
@@ -102,13 +101,13 @@
});
it('Fungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'Fungible', decimalPoints: 0 }});
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', bob.address);
await approveExpectSuccess(collectionId, itemId, bob, charlie.address);
});
it('ReFungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'ReFungible' } });
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', bob.address);
await approveExpectSuccess(collectionId, itemId, bob, charlie.address);
});
@@ -135,14 +134,14 @@
});
it('Fungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'Fungible', decimalPoints: 0 }});
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', bob.address);
await approveExpectSuccess(collectionId, itemId, bob, charlie.address);
await transferFromExpectSuccess(collectionId, itemId, charlie, bob, alice, 1, 'Fungible');
});
it('ReFungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'ReFungible' } });
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', bob.address);
await approveExpectSuccess(collectionId, itemId, bob, charlie.address);
await transferFromExpectSuccess(collectionId, itemId, charlie, bob, alice, 1, 'ReFungible');
@@ -171,7 +170,7 @@
});
it('Fungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'Fungible', decimalPoints: 0 }});
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', bob.address);
await approveExpectSuccess(collectionId, itemId, bob, charlie.address);
await transferFromExpectSuccess(collectionId, itemId, charlie, bob, alice, 1, 'Fungible');
@@ -179,7 +178,7 @@
});
it('ReFungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'ReFungible' } });
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', bob.address);
await approveExpectSuccess(collectionId, itemId, bob, charlie.address);
await transferFromExpectSuccess(collectionId, itemId, charlie, bob, alice, 1, 'ReFungible');
@@ -203,7 +202,7 @@
});
it('If a user B is approved to transfer 10 Fungible tokens from user A, they can transfer 2 tokens to user C, which will result in decreasing approval from 10 to 8. Then user B can transfer 8 tokens to user D.', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'Fungible', decimalPoints: 0 }});
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', alice.address);
await approveExpectSuccess(collectionId, itemId, alice, bob.address, 10);
await transferFromExpectSuccess(collectionId, itemId, bob, alice, charlie, 2, 'Fungible');
@@ -306,7 +305,7 @@
});
it('Fungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'Fungible', decimalPoints: 0 }});
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', charlie.address);
await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'Fungible');
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
@@ -314,7 +313,7 @@
});
it('ReFungible up to an approved amount', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'ReFungible' } });
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', charlie.address);
await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'ReFungible');
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
@@ -338,7 +337,7 @@
});
it.skip('Owned 10, approval 1: 1, approval 2: 1, resulting approved value: 2. Fungible', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'Fungible', decimalPoints: 0 }});
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
await createItemExpectSuccess(alice, collectionId, 'Fungible', alice.address);
await approveExpectSuccess(collectionId, 0, alice, bob.address, 1);
await approveExpectSuccess(collectionId, 0, alice, charlie.address, 1);
@@ -348,7 +347,7 @@
});
it.skip('Owned 10, approval 1: 1, approval 2: 1, resulting approved value: 2. ReFungible', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'ReFungible' } });
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', alice.address);
await approveExpectSuccess(collectionId, itemId, alice, bob.address, 1);
await approveExpectSuccess(collectionId, itemId, alice, charlie.address, 1);
@@ -359,7 +358,7 @@
// Canceled by changing approve logic
it.skip('Cannot approve for more than total user`s amount (owned: 10, approval 1: 5 - should succeed, approval 2: 6 - should fail). Fungible', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'Fungible', decimalPoints: 0 }});
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
await createItemExpectSuccess(alice, collectionId, 'Fungible', dave.address);
await approveExpectSuccess(collectionId, 0, dave, bob.address, 5);
await approveExpectFail(collectionId, 0, dave, charlie, 6);
@@ -367,7 +366,7 @@
// Canceled by changing approve logic
it.skip('Cannot approve for more than total users amount (owned: 100, approval 1: 50 - should succeed, approval 2: 51 - should fail). ReFungible', async () => {
- const collectionId = await createCollectionExpectSuccess({ mode:{ type: 'ReFungible' } });
+ const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', dave.address);
await approveExpectSuccess(collectionId, itemId, dave, bob.address, 50);
await approveExpectFail(collectionId, itemId, dave, charlie, 51);
tests/src/burnItem.test.tsdiffbeforeafterboth--- a/tests/src/burnItem.test.ts
+++ b/tests/src/burnItem.test.ts
@@ -40,7 +40,7 @@
const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
await usingApi(async (api) => {
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 1);
const events = await submitTransactionAsync(alice, tx);
const result = getGenericResult(events);
@@ -58,7 +58,7 @@
await usingApi(async (api) => {
// Destroy 1 of 10
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 1);
const events = await submitTransactionAsync(alice, tx);
const result = getGenericResult(events);
@@ -77,7 +77,7 @@
const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
await usingApi(async (api) => {
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 100);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 100);
const events = await submitTransactionAsync(alice, tx);
const result = getGenericResult(events);
@@ -97,7 +97,7 @@
await usingApi(async (api) => {
// Transfer 1/100 of the token to Bob
- const transfertx = api.tx.nft.transfer(normalizeAccountId(bob.address), collectionId, tokenId, 1);
+ const transfertx = api.tx.unique.transfer(normalizeAccountId(bob.address), collectionId, tokenId, 1);
const events1 = await submitTransactionAsync(alice, transfertx);
const result1 = getGenericResult(events1);
@@ -106,7 +106,7 @@
const aliceBalanceBefore = await getBalance(api, collectionId, alice.address, tokenId);
// Bob burns his portion
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 1);
const events2 = await submitTransactionAsync(bob, tx);
const result2 = getGenericResult(events2);
@@ -146,7 +146,7 @@
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
await usingApi(async (api) => {
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 1);
const events = await submitTransactionAsync(bob, tx);
const result = getGenericResult(events);
@@ -165,7 +165,7 @@
await usingApi(async (api) => {
// Destroy 1 of 10
- const tx = api.tx.nft.burnFrom(collectionId, normalizeAccountId(alice.address), tokenId, 1);
+ const tx = api.tx.unique.burnFrom(collectionId, normalizeAccountId(alice.address), tokenId, 1);
const events = await submitTransactionAsync(bob, tx);
const result = getGenericResult(events);
@@ -186,7 +186,7 @@
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
await usingApi(async (api) => {
- const tx = api.tx.nft.burnFrom(collectionId, normalizeAccountId(alice.address), tokenId, 100);
+ const tx = api.tx.unique.burnFrom(collectionId, normalizeAccountId(alice.address), tokenId, 100);
const events = await submitTransactionAsync(bob, tx);
const result = getGenericResult(events);
// Get alice balance
@@ -213,7 +213,7 @@
await destroyCollectionExpectSuccess(collectionId);
await usingApi(async (api) => {
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 0);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(alice, tx);
};
@@ -228,7 +228,7 @@
const tokenId = 10;
await usingApi(async (api) => {
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 1);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(alice, tx);
};
@@ -243,7 +243,7 @@
const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
await usingApi(async (api) => {
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 1);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(bob, tx);
};
@@ -259,12 +259,12 @@
await usingApi(async (api) => {
- const burntx = api.tx.nft.burnItem(collectionId, tokenId, 1);
+ const burntx = api.tx.unique.burnItem(collectionId, tokenId, 1);
const events1 = await submitTransactionAsync(alice, burntx);
const result1 = getGenericResult(events1);
expect(result1.success).to.be.true;
- const tx = api.tx.nft.transfer(normalizeAccountId(bob.address), collectionId, tokenId, 1);
+ const tx = api.tx.unique.transfer(normalizeAccountId(bob.address), collectionId, tokenId, 1);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(alice, tx);
};
@@ -282,7 +282,7 @@
await usingApi(async (api) => {
// Destroy 11 of 10
- const tx = api.tx.nft.burnItem(collectionId, tokenId, 11);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, 11);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(alice, tx);
};
tests/src/change-collection-owner.test.tsdiffbeforeafterboth--- a/tests/src/change-collection-owner.test.ts
+++ b/tests/src/change-collection-owner.test.ts
@@ -38,7 +38,7 @@
const collection =await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.deep.eq(alice.address);
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await submitTransactionAsync(alice, changeOwnerTx);
const collectionAfterOwnerChange = await queryCollectionExpectSuccess(api, collectionId);
@@ -57,10 +57,10 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.deep.eq(alice.address);
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await submitTransactionAsync(alice, changeOwnerTx);
- const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);
+ const badChangeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, alice.address);
await expect(submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;
const collectionAfterOwnerChange = await queryCollectionExpectSuccess(api, collectionId);
@@ -78,7 +78,7 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.deep.eq(alice.address);
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await submitTransactionAsync(alice, changeOwnerTx);
const collectionAfterOwnerChange = await queryCollectionExpectSuccess(api, collectionId);
@@ -99,7 +99,7 @@
ownerCanTransfer: true,
ownerCanDestroy: true,
};
- const tx1 = api.tx.nft.setCollectionLimits(
+ const tx1 = api.tx.unique.setCollectionLimits(
collectionId,
collectionLimits,
);
@@ -122,13 +122,13 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.deep.eq(alice.address);
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await submitTransactionAsync(alice, changeOwnerTx);
const collectionAfterOwnerChange = await queryCollectionExpectSuccess(api, collectionId);
expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(bob.address);
- const changeOwnerTx2 = api.tx.nft.changeCollectionOwner(collectionId, charlie.address);
+ const changeOwnerTx2 = api.tx.unique.changeCollectionOwner(collectionId, charlie.address);
await submitTransactionAsync(bob, changeOwnerTx2);
// ownership lost
@@ -145,7 +145,7 @@
const alice = privateKey('//Alice');
const bob = privateKey('//Bob');
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await expect(submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;
const collectionAfterOwnerChange = await queryCollectionExpectSuccess(api, collectionId);
@@ -164,7 +164,7 @@
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await expect(submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;
const collectionAfterOwnerChange = await queryCollectionExpectSuccess(api, collectionId);
@@ -181,7 +181,7 @@
const alice = privateKey('//Alice');
const bob = privateKey('//Bob');
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;
// Verifying that nothing bad happened (network is live, new collections can be created, etc.)
@@ -199,10 +199,10 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.deep.eq(alice.address);
- const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
+ const changeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, bob.address);
await submitTransactionAsync(alice, changeOwnerTx);
- const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);
+ const badChangeOwnerTx = api.tx.unique.changeCollectionOwner(collectionId, alice.address);
await expect(submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;
const collectionAfterOwnerChange = await queryCollectionExpectSuccess(api, collectionId);
@@ -220,7 +220,7 @@
ownerCanTransfer: true,
ownerCanDestroy: true,
};
- const tx1 = api.tx.nft.setCollectionLimits(
+ const tx1 = api.tx.unique.setCollectionLimits(
collectionId,
collectionLimits,
);
tests/src/check-event/burnItemEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/burnItemEvent.test.ts
+++ b/tests/src/check-event/burnItemEvent.test.ts
@@ -10,7 +10,7 @@
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import {createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage} from '../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess, uniqueEventMessage} from '../util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -29,9 +29,9 @@
await usingApi(async (api: ApiPromise) => {
const collectionID = await createCollectionExpectSuccess();
const itemID = await createItemExpectSuccess(alice, collectionID, 'NFT');
- const burnItem = api.tx.nft.burnItem(collectionID, itemID, 1);
+ const burnItem = api.tx.unique.burnItem(collectionID, itemID, 1);
const events = await submitTransactionAsync(alice, burnItem);
- const msg = JSON.stringify(nftEventMessage(events));
+ const msg = JSON.stringify(uniqueEventMessage(events));
expect(msg).to.be.contain(checkSection);
expect(msg).to.be.contain(checkTreasury);
expect(msg).to.be.contain(checkSystem);
tests/src/check-event/createCollectionEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/createCollectionEvent.test.ts
+++ b/tests/src/check-event/createCollectionEvent.test.ts
@@ -10,7 +10,7 @@
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import {nftEventMessage} from '../util/helpers';
+import {uniqueEventMessage} from '../util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -27,9 +27,9 @@
});
it('Check event from createCollection(): ', async () => {
await usingApi(async (api: ApiPromise) => {
- const tx = api.tx.nft.createCollection([0x31], [0x32], '0x33', 'NFT');
+ const tx = api.tx.unique.createCollection([0x31], [0x32], '0x33', 'NFT');
const events = await submitTransactionAsync(alice, tx);
- const msg = JSON.stringify(nftEventMessage(events));
+ const msg = JSON.stringify(uniqueEventMessage(events));
expect(msg).to.be.contain(checkSection);
expect(msg).to.be.contain(checkTreasury);
expect(msg).to.be.contain(checkSystem);
tests/src/check-event/createItemEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/createItemEvent.test.ts
+++ b/tests/src/check-event/createItemEvent.test.ts
@@ -10,7 +10,7 @@
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import {createCollectionExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
+import {createCollectionExpectSuccess, uniqueEventMessage, normalizeAccountId} from '../util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -28,9 +28,9 @@
it('Check event from createItem(): ', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionID = await createCollectionExpectSuccess();
- const createItem = api.tx.nft.createItem(collectionID, normalizeAccountId(alice.address), 'NFT');
+ const createItem = api.tx.unique.createItem(collectionID, normalizeAccountId(alice.address), 'NFT');
const events = await submitTransactionAsync(alice, createItem);
- const msg = JSON.stringify(nftEventMessage(events));
+ const msg = JSON.stringify(uniqueEventMessage(events));
expect(msg).to.be.contain(checkSection);
expect(msg).to.be.contain(checkTreasury);
expect(msg).to.be.contain(checkSystem);
tests/src/check-event/createMultipleItemsEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/createMultipleItemsEvent.test.ts
+++ b/tests/src/check-event/createMultipleItemsEvent.test.ts
@@ -10,7 +10,7 @@
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import {createCollectionExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
+import {createCollectionExpectSuccess, uniqueEventMessage, normalizeAccountId} from '../util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -29,9 +29,9 @@
await usingApi(async (api: ApiPromise) => {
const collectionID = await createCollectionExpectSuccess();
const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
- const createMultipleItems = api.tx.nft.createMultipleItems(collectionID, normalizeAccountId(alice.address), args);
+ const createMultipleItems = api.tx.unique.createMultipleItems(collectionID, normalizeAccountId(alice.address), args);
const events = await submitTransactionAsync(alice, createMultipleItems);
- const msg = JSON.stringify(nftEventMessage(events));
+ const msg = JSON.stringify(uniqueEventMessage(events));
expect(msg).to.be.contain(checkSection);
expect(msg).to.be.contain(checkTreasury);
expect(msg).to.be.contain(checkSystem);
tests/src/check-event/destroyCollectionEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/destroyCollectionEvent.test.ts
+++ b/tests/src/check-event/destroyCollectionEvent.test.ts
@@ -10,7 +10,7 @@
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import {createCollectionExpectSuccess, nftEventMessage} from '../util/helpers';
+import {createCollectionExpectSuccess, uniqueEventMessage} from '../util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -27,9 +27,9 @@
it('Check event from destroyCollection(): ', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionID = await createCollectionExpectSuccess();
- const destroyCollection = api.tx.nft.destroyCollection(collectionID);
+ const destroyCollection = api.tx.unique.destroyCollection(collectionID);
const events = await submitTransactionAsync(alice, destroyCollection);
- const msg = JSON.stringify(nftEventMessage(events));
+ const msg = JSON.stringify(uniqueEventMessage(events));
expect(msg).to.be.contain(checkTreasury);
expect(msg).to.be.contain(checkSystem);
});
tests/src/check-event/transferEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/transferEvent.test.ts
+++ b/tests/src/check-event/transferEvent.test.ts
@@ -10,7 +10,7 @@
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import {createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess, uniqueEventMessage, normalizeAccountId} from '../util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -31,9 +31,9 @@
await usingApi(async (api: ApiPromise) => {
const collectionID = await createCollectionExpectSuccess();
const itemID = await createItemExpectSuccess(alice, collectionID, 'NFT');
- const transfer = api.tx.nft.transfer(normalizeAccountId(bob.address), collectionID, itemID, 1);
+ const transfer = api.tx.unique.transfer(normalizeAccountId(bob.address), collectionID, itemID, 1);
const events = await submitTransactionAsync(alice, transfer);
- const msg = JSON.stringify(nftEventMessage(events));
+ const msg = JSON.stringify(uniqueEventMessage(events));
expect(msg).to.be.contain(checkSection);
expect(msg).to.be.contain(checkTreasury);
expect(msg).to.be.contain(checkSystem);
tests/src/check-event/transferFromEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/transferFromEvent.test.ts
+++ b/tests/src/check-event/transferFromEvent.test.ts
@@ -10,7 +10,7 @@
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import {createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess, uniqueEventMessage, normalizeAccountId} from '../util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -31,9 +31,9 @@
await usingApi(async (api: ApiPromise) => {
const collectionID = await createCollectionExpectSuccess();
const itemID = await createItemExpectSuccess(alice, collectionID, 'NFT');
- const transferFrom = api.tx.nft.transferFrom(normalizeAccountId(alice.address), normalizeAccountId(bob.address), collectionID, itemID, 1);
+ const transferFrom = api.tx.unique.transferFrom(normalizeAccountId(alice.address), normalizeAccountId(bob.address), collectionID, itemID, 1);
const events = await submitTransactionAsync(alice, transferFrom);
- const msg = JSON.stringify(nftEventMessage(events));
+ const msg = JSON.stringify(uniqueEventMessage(events));
expect(msg).to.be.contain(checkSection);
expect(msg).to.be.contain(checkTreasury);
expect(msg).to.be.contain(checkSystem);
tests/src/collision-tests/admVsOwnerChanges.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/admVsOwnerChanges.test.ts
+++ b/tests/src/collision-tests/admVsOwnerChanges.test.ts
@@ -34,21 +34,21 @@
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const changeAdminTxBob = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await submitTransactionAsync(Alice, changeAdminTxBob);
- const changeAdminTxFerdie = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Ferdie.address));
+ const changeAdminTxFerdie = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Ferdie.address));
await submitTransactionAsync(Bob, changeAdminTxFerdie);
const itemId = await createItemExpectSuccess(Ferdie, collectionId, 'NFT');
- const changeOwner = api.tx.nft.transferFrom(normalizeAccountId(Ferdie.address), normalizeAccountId(Bob.address), collectionId, itemId, 1);
- const approve = api.tx.nft.approve(normalizeAccountId(Bob.address), collectionId, itemId, 1);
- const sendItem = api.tx.nft.transfer(normalizeAccountId(Alice.address), collectionId, itemId, 1);
+ const changeOwner = api.tx.unique.transferFrom(normalizeAccountId(Ferdie.address), normalizeAccountId(Bob.address), collectionId, itemId, 1);
+ const approve = api.tx.unique.approve(normalizeAccountId(Bob.address), collectionId, itemId, 1);
+ const sendItem = api.tx.unique.transfer(normalizeAccountId(Alice.address), collectionId, itemId, 1);
await Promise.all([
changeOwner.signAndSend(Alice),
approve.signAndSend(Bob),
sendItem.signAndSend(Ferdie),
]);
- const itemBefore: any = await api.query.nft.nftItemList(collectionId, itemId);
+ const itemBefore: any = await api.query.unique.nftItemList(collectionId, itemId);
expect(itemBefore.owner).not.to.be.eq(Bob.address);
await waitNewBlocks(2);
});
tests/src/collision-tests/admVsOwnerData.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/admVsOwnerData.test.ts
+++ b/tests/src/collision-tests/admVsOwnerData.test.ts
@@ -32,19 +32,19 @@
const AliceData = 1;
const BobData = 2;
const collectionId = await createCollectionExpectSuccess();
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await submitTransactionAsync(Alice, changeAdminTx);
const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT');
//
// tslint:disable-next-line: max-line-length
- const AliceTx = api.tx.nft.setVariableMetaData(collectionId, itemId, AliceData.toString());
+ const AliceTx = api.tx.unique.setVariableMetaData(collectionId, itemId, AliceData.toString());
// tslint:disable-next-line: max-line-length
- const BobTx = api.tx.nft.setVariableMetaData(collectionId, itemId, BobData.toString());
+ const BobTx = api.tx.unique.setVariableMetaData(collectionId, itemId, BobData.toString());
await Promise.all([
AliceTx.signAndSend(Alice),
BobTx.signAndSend(Bob),
]);
- const item: any = await api.query.nft.nftItemList(collectionId, itemId);
+ const item: any = await api.query.unique.nftItemList(collectionId, itemId);
expect(item.variableData).not.to.be.eq(null); // Pseudo-random selection of one of two values
await waitNewBlocks(2);
});
tests/src/collision-tests/admVsOwnerTake.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/admVsOwnerTake.test.ts
+++ b/tests/src/collision-tests/admVsOwnerTake.test.ts
@@ -33,19 +33,19 @@
it('The collection admin burns the token and in the same block the token owner performs a transaction on it ', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await submitTransactionAsync(Alice, changeAdminTx);
const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT');
//
- const sendItem = api.tx.nft.transfer(normalizeAccountId(Ferdie.address), collectionId, itemId, 1);
- const burnItem = api.tx.nft.burnItem(collectionId, itemId, 1);
+ const sendItem = api.tx.unique.transfer(normalizeAccountId(Ferdie.address), collectionId, itemId, 1);
+ const burnItem = api.tx.unique.burnItem(collectionId, itemId, 1);
await Promise.all([
sendItem.signAndSend(Bob),
burnItem.signAndSend(Alice),
]);
await waitNewBlocks(2);
let itemBurn = false;
- itemBurn = (await (api.query.nft.nftItemList(collectionId, itemId))).toJSON() as boolean;
+ itemBurn = (await (api.query.unique.nftItemList(collectionId, itemId))).toJSON() as boolean;
// tslint:disable-next-line: no-unused-expression
expect(itemBurn).to.be.null;
await waitNewBlocks(2);
tests/src/collision-tests/adminDestroyCollection.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/adminDestroyCollection.test.ts
+++ b/tests/src/collision-tests/adminDestroyCollection.test.ts
@@ -32,19 +32,19 @@
it('Adding an address to the collection allowlist in a block by the admin, and deleting the collection by the owner ', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await submitTransactionAsync(Alice, changeAdminTx);
await waitNewBlocks(1);
//
- const addAllowlistAdm = api.tx.nft.addToAllowList(collectionId, normalizeAccountId(Ferdie.address));
- const destroyCollection = api.tx.nft.destroyCollection(collectionId);
+ const addAllowlistAdm = api.tx.unique.addToAllowList(collectionId, normalizeAccountId(Ferdie.address));
+ const destroyCollection = api.tx.unique.destroyCollection(collectionId);
await Promise.all([
addAllowlistAdm.signAndSend(Bob),
destroyCollection.signAndSend(Alice),
]);
await waitNewBlocks(1);
let allowList = false;
- allowList = (await api.query.nft.allowList(collectionId, Ferdie.address)).toJSON() as boolean;
+ allowList = (await api.query.unique.allowList(collectionId, Ferdie.address)).toJSON() as boolean;
// tslint:disable-next-line: no-unused-expression
expect(allowList).to.be.false;
await waitNewBlocks(2);
tests/src/collision-tests/adminLimitsOff.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/adminLimitsOff.test.ts
+++ b/tests/src/collision-tests/adminLimitsOff.test.ts
@@ -39,27 +39,27 @@
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const chainAdminLimit = (api.consts.nft.collectionAdminsLimit as any).toNumber();
+ const chainAdminLimit = (api.consts.unique.collectionAdminsLimit as any).toNumber();
expect(chainAdminLimit).to.be.equal(5);
- const changeAdminTx1 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Eve.address));
+ const changeAdminTx1 = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Eve.address));
await submitTransactionAsync(Alice, changeAdminTx1);
- const changeAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Dave.address));
+ const changeAdminTx2 = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Dave.address));
await submitTransactionAsync(Alice, changeAdminTx2);
- const changeAdminTx3 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const changeAdminTx3 = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await submitTransactionAsync(Alice, changeAdminTx3);
- const addAdmOne = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Ferdie.address));
- const addAdmTwo = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Charlie.address));
+ const addAdmOne = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Ferdie.address));
+ const addAdmTwo = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Charlie.address));
await Promise.all([
addAdmOne.signAndSend(Bob),
addAdmTwo.signAndSend(Alice),
]);
await waitNewBlocks(2);
- const changeAdminTx4 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Alice.address));
+ const changeAdminTx4 = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Alice.address));
await expect(submitTransactionExpectFailAsync(Alice, changeAdminTx4)).to.be.rejected;
- const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
+ const adminListAfterAddAdmin: any = (await api.query.unique.adminList(collectionId));
expect(adminListAfterAddAdmin).to.be.contains(normalizeAccountId(Eve.address));
expect(adminListAfterAddAdmin).to.be.contains(normalizeAccountId(Ferdie.address));
expect(adminListAfterAddAdmin).not.to.be.contains(normalizeAccountId(Alice.address));
tests/src/collision-tests/adminRightsOff.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/adminRightsOff.test.ts
+++ b/tests/src/collision-tests/adminRightsOff.test.ts
@@ -31,20 +31,20 @@
it('In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await submitTransactionAsync(Alice, changeAdminTx);
await waitNewBlocks(1);
const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
- const addItemAdm = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);
- const removeAdm = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const addItemAdm = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);
+ const removeAdm = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await Promise.all([
addItemAdm.signAndSend(Bob),
removeAdm.signAndSend(Alice),
]);
await waitNewBlocks(2);
- const itemsListIndex = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
+ const itemsListIndex = await api.query.unique.itemListIndex(collectionId) as unknown as BN;
expect(itemsListIndex.toNumber()).to.be.equal(0);
- const adminList: any = (await api.query.nft.adminList(collectionId));
+ const adminList: any = (await api.query.unique.adminList(collectionId));
expect(adminList).not.to.be.contains(normalizeAccountId(Bob.address));
await waitNewBlocks(2);
});
tests/src/collision-tests/setSponsorNewOwner.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/setSponsorNewOwner.test.ts
+++ b/tests/src/collision-tests/setSponsorNewOwner.test.ts
@@ -34,14 +34,14 @@
const collectionId = await createCollectionExpectSuccess();
await setCollectionSponsorExpectSuccess(collectionId, Bob.address);
await waitNewBlocks(2);
- const confirmSponsorship = api.tx.nft.confirmSponsorship(collectionId);
- const changeCollectionOwner = api.tx.nft.changeCollectionOwner(collectionId, Ferdie.address);
+ const confirmSponsorship = api.tx.unique.confirmSponsorship(collectionId);
+ const changeCollectionOwner = api.tx.unique.changeCollectionOwner(collectionId, Ferdie.address);
await Promise.all([
confirmSponsorship.signAndSend(Bob),
changeCollectionOwner.signAndSend(Alice),
]);
await waitNewBlocks(2);
- const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
+ const collection: any = (await api.query.unique.collectionById(collectionId)).toJSON();
expect(collection.sponsorship.confirmed).to.be.eq(Bob.address);
expect(collection.owner).to.be.eq(Ferdie.address);
await waitNewBlocks(2);
tests/src/collision-tests/sponsorPayments.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/sponsorPayments.test.ts
+++ b/tests/src/collision-tests/sponsorPayments.test.ts
@@ -35,15 +35,15 @@
it('Payment of commission if one block contains transactions for payment from the sponsor\'s balance and his (sponsor\'s) exclusion from the collection ', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
+ const changeAdminTxBob = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
await submitTransactionAsync(Alice, changeAdminTxBob);
const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT');
await setCollectionSponsorExpectSuccess(collectionId, Bob.address);
await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
- const sendItem = api.tx.nft.transfer(normalizeAccountId(Alice.address), collectionId, itemId, 1);
- const revokeSponsor = api.tx.nft.removeCollectionSponsor(collectionId);
+ const sendItem = api.tx.unique.transfer(normalizeAccountId(Alice.address), collectionId, itemId, 1);
+ const revokeSponsor = api.tx.unique.removeCollectionSponsor(collectionId);
await Promise.all([
sendItem.signAndSend(Bob),
revokeSponsor.signAndSend(Alice),
tests/src/collision-tests/tokenLimitsOff.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/tokenLimitsOff.test.ts
+++ b/tests/src/collision-tests/tokenLimitsOff.test.ts
@@ -46,7 +46,7 @@
await setMintPermissionExpectSuccess(Alice, collectionId, true);
await addToAllowListExpectSuccess(Alice, collectionId, Ferdie.address);
await addToAllowListExpectSuccess(Alice, collectionId, Bob.address);
- const setCollectionLim = api.tx.nft.setCollectionLimits(
+ const setCollectionLim = api.tx.unique.setCollectionLimits(
collectionId,
{
accountTokenOwnershipLimit,
@@ -65,16 +65,16 @@
await waitNewBlocks(2);
const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
- const mintItemOne = api.tx.nft
+ const mintItemOne = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(Ferdie.address), args);
- const mintItemTwo = api.tx.nft
+ const mintItemTwo = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);
await Promise.all([
mintItemOne.signAndSend(Ferdie),
mintItemTwo.signAndSend(Bob),
]);
await waitNewBlocks(2);
- const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
+ const itemsListIndexAfter = await api.query.unique.itemListIndex(collectionId) as unknown as BN;
expect(itemsListIndexAfter.toNumber()).to.be.equal(3);
// TokenLimit = 4. The first transaction is successful. The second should fail.
await waitNewBlocks(2);
tests/src/collision-tests/turnsOffMinting.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/turnsOffMinting.test.ts
+++ b/tests/src/collision-tests/turnsOffMinting.test.ts
@@ -35,14 +35,14 @@
await setMintPermissionExpectSuccess(Alice, collectionId, true);
await addToAllowListExpectSuccess(Alice, collectionId, Ferdie.address);
- const mintItem = api.tx.nft.createItem(collectionId, normalizeAccountId(Ferdie.address), 'NFT');
- const offMinting = api.tx.nft.setMintPermission(collectionId, false);
+ const mintItem = api.tx.unique.createItem(collectionId, normalizeAccountId(Ferdie.address), 'NFT');
+ const offMinting = api.tx.unique.setMintPermission(collectionId, false);
await Promise.all([
mintItem.signAndSend(Ferdie),
offMinting.signAndSend(Alice),
]);
let itemList = false;
- itemList = (await (api.query.nft.nftItemList(collectionId, mintItem))).toJSON() as boolean;
+ itemList = (await (api.query.unique.nftItemList(collectionId, mintItem))).toJSON() as boolean;
// tslint:disable-next-line: no-unused-expression
expect(itemList).to.be.null;
await waitNewBlocks(2);
tests/src/confirmSponsorship.test.tsdiffbeforeafterboth--- a/tests/src/confirmSponsorship.test.ts
+++ b/tests/src/confirmSponsorship.test.ts
@@ -76,7 +76,7 @@
const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);
// Transfer this tokens from unused address to Alice
- const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);
+ const zeroToAlice = api.tx.unique.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);
const events = await submitTransactionAsync(zeroBalance, zeroToAlice);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -103,7 +103,7 @@
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);
// Transfer this tokens from unused address to Alice
- const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
+ const zeroToAlice = api.tx.unique.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
const events1 = await submitTransactionAsync(zeroBalance, zeroToAlice);
const result1 = getGenericResult(events1);
expect(result1.success).to.be.true;
@@ -129,7 +129,7 @@
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);
// Transfer this tokens from unused address to Alice
- const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
+ const zeroToAlice = api.tx.unique.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
const events1 = await submitTransactionAsync(zeroBalance, zeroToAlice);
const result1 = getGenericResult(events1);
@@ -184,13 +184,13 @@
// Transfer this token from Alice to unused address and back
// Alice to Zero gets sponsored
- const aliceToZero = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);
+ const aliceToZero = api.tx.unique.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);
const events1 = await submitTransactionAsync(alice, aliceToZero);
const result1 = getGenericResult(events1);
// Second transfer should fail
const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
- const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(alice.address), collectionId, itemId, 0);
+ const zeroToAlice = api.tx.unique.transfer(normalizeAccountId(alice.address), collectionId, itemId, 0);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);
};
@@ -222,7 +222,7 @@
const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);
// Transfer this tokens in parts from unused address to Alice
- const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
+ const zeroToAlice = api.tx.unique.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
const events1 = await submitTransactionAsync(zeroBalance, zeroToAlice);
const result1 = getGenericResult(events1);
expect(result1.success).to.be.true;
@@ -254,7 +254,7 @@
// Mint token for alice
const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);
- const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(alice.address), collectionId, itemId, 1);
+ const zeroToAlice = api.tx.unique.transfer(normalizeAccountId(alice.address), collectionId, itemId, 1);
// Zero to alice gets sponsored
const events1 = await submitTransactionAsync(zeroBalance, zeroToAlice);
tests/src/contracts.test.tsdiffbeforeafterboth--- a/tests/src/contracts.test.ts
+++ b/tests/src/contracts.test.ts
@@ -73,7 +73,7 @@
const collectionId = await createCollectionExpectSuccess();
const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
const [contract] = await deployTransferContract(api);
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, contract.address);
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, contract.address);
await submitTransactionAsync(alice, changeAdminTx);
expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal(normalizeAccountId(alice.address));
@@ -105,7 +105,7 @@
const result = getGenericResult(events);
expect(result.success).to.be.true;
- const tokensAfter = (await api.query.nft.nftItemList.entries(collectionId)).map((kv: any) => kv[1].toJSON());
+ const tokensAfter = (await api.query.unique.nftItemList.entries(collectionId)).map((kv: any) => kv[1].toJSON());
expect(tokensAfter).to.be.deep.equal([
{
owner: bob.address,
@@ -137,7 +137,7 @@
const result = getGenericResult(events);
expect(result.success).to.be.true;
- const tokensAfter: any = (await api.query.nft.nftItemList.entries(collectionId) as any)
+ const tokensAfter: any = (await api.query.unique.nftItemList.entries(collectionId) as any)
.map((kv: any) => kv[1].toJSON())
.sort((a: any, b: any) => a.constData.localeCompare(b.constData));
expect(tokensAfter).to.be.deep.equal([
@@ -195,7 +195,7 @@
const result = getGenericResult(events);
expect(result.success).to.be.true;
- const token: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();
+ const token: any = (await api.query.unique.nftItemList(collectionId, tokenId) as any).unwrap();
expect(token.owner.toString()).to.be.equal(charlie.address);
});
});
@@ -213,7 +213,7 @@
const result = getGenericResult(events);
expect(result.success).to.be.true;
- const token: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();
+ const token: any = (await api.query.unique.nftItemList(collectionId, tokenId) as any).unwrap();
expect(token.variableData.toString()).to.be.equal('0x121314');
});
});
@@ -225,7 +225,7 @@
const collectionId = await createCollectionExpectSuccess();
const [contract] = await deployTransferContract(api);
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, contract.address);
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, contract.address);
await submitTransactionAsync(alice, changeAdminTx);
expect(await isAllowlisted(api, collectionId, bob.address)).to.be.false;
tests/src/createMultipleItems.test.tsdiffbeforeafterboth--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -34,7 +34,7 @@
expect(itemsListIndexBefore).to.be.equal(0);
const alice = privateKey('//Alice');
const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await submitTransactionAsync(alice, createMultipleItemsTx);
const itemsListIndexAfter = await getLastTokenId(api, collectionId);
@@ -65,7 +65,7 @@
{Fungible: {value: 2}},
{Fungible: {value: 3}},
];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await submitTransactionAsync(alice, createMultipleItemsTx);
const token1Data = await getBalance(api, collectionId, alice.address, 0);
@@ -85,7 +85,7 @@
{ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
{ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await submitTransactionAsync(alice, createMultipleItemsTx);
const itemsListIndexAfter = await getLastTokenId(api, collectionId);
@@ -117,7 +117,7 @@
{NFT: ['A', 'A']},
{NFT: ['B', 'B']},
];
- const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+ const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
const events = await submitTransactionAsync(alice, createMultipleItemsTx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -144,7 +144,7 @@
expect(itemsListIndexBefore).to.be.equal(0);
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
await submitTransactionAsync(bob, createMultipleItemsTx);
const itemsListIndexAfter = await getLastTokenId(api, collectionId);
@@ -175,7 +175,7 @@
{Fungible: {value: 2}},
{Fungible: {value: 3}},
];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
await submitTransactionAsync(bob, createMultipleItemsTx);
const token1Data = await getBalance(api, collectionId, bob.address, 0);
@@ -195,7 +195,7 @@
{ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
{ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
await submitTransactionAsync(bob, createMultipleItemsTx);
const itemsListIndexAfter = await getLastTokenId(api, collectionId);
@@ -234,7 +234,7 @@
const itemsListIndexBefore = await getLastTokenId(api, collectionId);
expect(itemsListIndexBefore).to.be.equal(0);
const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await expect(submitTransactionAsync(bob, createMultipleItemsTx)).to.be.rejected;
});
@@ -250,7 +250,7 @@
{Fungible: {value: 2}},
{Fungible: {value: 3}},
];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await expect(submitTransactionAsync(bob, createMultipleItemsTx)).to.be.rejected;
});
@@ -266,7 +266,7 @@
{ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
{ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await expect(submitTransactionAsync(bob, createMultipleItemsTx)).to.be.rejected;
});
@@ -275,7 +275,7 @@
it('Create token in not existing collection', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionId = await getCreatedCollectionCount(api) + 1;
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), ['NFT', 'NFT', 'NFT']);
await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
});
@@ -291,7 +291,7 @@
{NFT: ['B'.repeat(2049), 'B'.repeat(2049)]},
{NFT: ['C'.repeat(2049), 'C'.repeat(2049)]},
];
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
@@ -303,7 +303,7 @@
{ReFungible: ['2'.repeat(2049), '2'.repeat(2049), 10]},
{ReFungible: ['3'.repeat(2049), '3'.repeat(2049), 10]},
];
- const createMultipleItemsTxFungible = api.tx.nft
+ const createMultipleItemsTxFungible = api.tx.unique
.createMultipleItems(collectionIdReFungible, normalizeAccountId(alice.address), argsReFungible);
await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTxFungible)).to.be.rejected;
});
@@ -312,7 +312,7 @@
it('Create tokens with different types', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionId = await createCollectionExpectSuccess();
- const createMultipleItemsTx = api.tx.nft
+ const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), ['NFT', 'Fungible', 'ReFungible']);
await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
// garbage collection :-D
@@ -328,7 +328,7 @@
{NFT: ['B', 'B'.repeat(2049)]},
{NFT: ['C'.repeat(2049), 'C']},
];
- const createMultipleItemsTx = await api.tx.nft
+ const createMultipleItemsTx = await api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
});
@@ -345,7 +345,7 @@
{NFT: ['A', 'A']},
{NFT: ['B', 'B']},
];
- const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+ const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
});
});
tests/src/eth/nonFungible.test.tsdiffbeforeafterboth--- a/tests/src/eth/nonFungible.test.ts
+++ b/tests/src/eth/nonFungible.test.ts
@@ -70,7 +70,7 @@
const alice = privateKey('//Alice');
const caller = await createEthAccountWithBalance(api, web3);
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: caller});
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: caller});
await submitTransactionAsync(alice, changeAdminTx);
const receiver = createEthAccount(web3);
@@ -109,7 +109,7 @@
const alice = privateKey('//Alice');
const caller = await createEthAccountWithBalance(api, web3);
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: caller});
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: caller});
await submitTransactionAsync(alice, changeAdminTx);
const receiver = createEthAccount(web3);
tests/src/eth/proxy/nonFungibleProxy.test.tsdiffbeforeafterboth--- a/tests/src/eth/proxy/nonFungibleProxy.test.ts
+++ b/tests/src/eth/proxy/nonFungibleProxy.test.ts
@@ -88,7 +88,7 @@
const address = collectionIdToAddress(collection);
const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: contract.options.address});
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});
await submitTransactionAsync(alice, changeAdminTx);
{
@@ -127,7 +127,7 @@
const address = collectionIdToAddress(collection);
const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: contract.options.address});
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});
await submitTransactionAsync(alice, changeAdminTx);
{
@@ -190,7 +190,7 @@
const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: contract.options.address});
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});
await submitTransactionAsync(alice, changeAdminTx);
{
tests/src/inflation.test.tsdiffbeforeafterboth--- a/tests/src/inflation.test.ts
+++ b/tests/src/inflation.test.ts
@@ -18,16 +18,16 @@
const totalIssuanceStart = (await api.query.inflation.startingYearTotalIssuance()).toBigInt();
const blockInflation = (await api.query.inflation.blockInflation()).toBigInt();
- const YEAR = 5259600n; // Blocks in one year
+ // const YEAR = 5259600n; // 6-second block. Blocks in one year
+ const YEAR = 2629800n; // 12-second block. Blocks in one year
+
const totalExpectedInflation = totalIssuanceStart / 10n;
const totalActualInflation = blockInflation * YEAR / blockInterval;
const tolerance = 0.00001; // Relative difference per year between theoretical and actual inflation
- let abs = totalExpectedInflation / totalActualInflation - 1n;
- if (abs < 0n) {
- abs = -abs;
- }
- expect(abs <= tolerance).to.be.true;
+ const expectedInflation = totalExpectedInflation / totalActualInflation - 1n;
+
+ expect(Math.abs(Number(expectedInflation))).to.be.lessThanOrEqual(tolerance);
});
});
tests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-consts.ts
+++ b/tests/src/interfaces/augment-api-consts.ts
@@ -159,7 +159,6 @@
[key: string]: Codec;
};
vesting: {
- maxVestingSchedules: u32 & AugmentedConst<ApiType>;
/**
* The minimum amount transferred to call `vested_transfer`.
**/
tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -241,32 +241,6 @@
**/
[key: string]: AugmentedError<ApiType>;
};
- nft: {
- /**
- * Decimal_points parameter must be lower than MAX_DECIMAL_POINTS constant, currently it is 30.
- **/
- CollectionDecimalPointLimitExceeded: AugmentedError<ApiType>;
- /**
- * Collection limit bounds per collection exceeded
- **/
- CollectionLimitBoundsExceeded: AugmentedError<ApiType>;
- /**
- * This address is not set as sponsor, use setCollectionSponsor first.
- **/
- ConfirmUnsetSponsorFail: AugmentedError<ApiType>;
- /**
- * Length of items properties must be greater than 0.
- **/
- EmptyArgument: AugmentedError<ApiType>;
- /**
- * Tried to enable permissions which are only permitted to be disabled
- **/
- OwnerPermissionsCantBeReverted: AugmentedError<ApiType>;
- /**
- * Generic error
- **/
- [key: string]: AugmentedError<ApiType>;
- };
nonfungible: {
/**
* Used amount > 1 with NFT
@@ -390,28 +364,6 @@
* Maximum refungibility exceeded
**/
WrongRefungiblePieces: AugmentedError<ApiType>;
- /**
- * Generic error
- **/
- [key: string]: AugmentedError<ApiType>;
- };
- scheduler: {
- /**
- * Failed to schedule a call
- **/
- FailedToSchedule: AugmentedError<ApiType>;
- /**
- * Cannot find the scheduled call.
- **/
- NotFound: AugmentedError<ApiType>;
- /**
- * Reschedule failed because it does not change scheduled time.
- **/
- RescheduleNoChange: AugmentedError<ApiType>;
- /**
- * Given target block number is in the past.
- **/
- TargetBlockNumberInPast: AugmentedError<ApiType>;
/**
* Generic error
**/
@@ -475,28 +427,57 @@
**/
[key: string]: AugmentedError<ApiType>;
};
+ unique: {
+ /**
+ * Decimal_points parameter must be lower than MAX_DECIMAL_POINTS constant, currently it is 30.
+ **/
+ CollectionDecimalPointLimitExceeded: AugmentedError<ApiType>;
+ /**
+ * Collection limit bounds per collection exceeded
+ **/
+ CollectionLimitBoundsExceeded: AugmentedError<ApiType>;
+ /**
+ * This address is not set as sponsor, use setCollectionSponsor first.
+ **/
+ ConfirmUnsetSponsorFail: AugmentedError<ApiType>;
+ /**
+ * Length of items properties must be greater than 0.
+ **/
+ EmptyArgument: AugmentedError<ApiType>;
+ /**
+ * Tried to enable permissions which are only permitted to be disabled
+ **/
+ OwnerPermissionsCantBeReverted: AugmentedError<ApiType>;
+ /**
+ * Generic error
+ **/
+ [key: string]: AugmentedError<ApiType>;
+ };
vesting: {
/**
- * Amount being transferred is too low to create a vesting schedule.
+ * The vested transfer amount is too low
**/
AmountLow: AugmentedError<ApiType>;
/**
- * The account already has `MaxVestingSchedules` count of schedules and thus
- * cannot add another one. Consider merging existing schedules in order to add another.
+ * Insufficient amount of balance to lock
+ **/
+ InsufficientBalanceToLock: AugmentedError<ApiType>;
+ /**
+ * Failed because the maximum vesting schedules was exceeded
**/
- AtMaxVestingSchedules: AugmentedError<ApiType>;
+ MaxVestingSchedulesExceeded: AugmentedError<ApiType>;
/**
- * Failed to create a new schedule because some parameter was invalid.
+ * This account have too many vesting schedules
**/
- InvalidScheduleParams: AugmentedError<ApiType>;
+ TooManyVestingSchedules: AugmentedError<ApiType>;
/**
- * The account given is not vesting.
+ * Vesting period is zero
**/
- NotVesting: AugmentedError<ApiType>;
+ ZeroVestingPeriod: AugmentedError<ApiType>;
/**
- * An index was out of bounds of the vesting schedules.
+ * Number of vests is zero
**/
- ScheduleIndexOutOfBounds: AugmentedError<ApiType>;
+ ZeroVestingPeriodCount: AugmentedError<ApiType>;
/**
* Generic error
**/
tests/src/interfaces/augment-api-events.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -2,12 +2,11 @@
/* eslint-disable */
import type { EthereumLog, EvmCoreErrorExitReason } from './ethereum';
-import type { PalletCommonAccountBasicCrossAccountIdRepr } from './nft';
+import type { PalletCommonAccountBasicCrossAccountIdRepr } from './unique';
import type { ApiTypes } from '@polkadot/api/types';
-import type { Bytes, Null, Option, Result, U256, U8aFixed, u128, u32, u64, u8 } from '@polkadot/types';
+import type { Null, Option, Result, U256, U8aFixed, u128, u32, u64, u8 } from '@polkadot/types';
import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
import type { FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, SpRuntimeDispatchError, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';
-import type { ITuple } from '@polkadot/types/types';
declare module '@polkadot/api/types/events' {
export interface AugmentedEvents<ApiType> {
@@ -389,24 +388,6 @@
**/
[key: string]: AugmentedEvent<ApiType>;
};
- scheduler: {
- /**
- * Canceled some task. \[when, index\]
- **/
- Canceled: AugmentedEvent<ApiType, [u32, u32]>;
- /**
- * Dispatched some task. \[task, id, result\]
- **/
- Dispatched: AugmentedEvent<ApiType, [ITuple<[u32, u32]>, Option<Bytes>, Result<Null, SpRuntimeDispatchError>]>;
- /**
- * Scheduled some task. \[when, index\]
- **/
- Scheduled: AugmentedEvent<ApiType, [u32, u32]>;
- /**
- * Generic event
- **/
- [key: string]: AugmentedEvent<ApiType>;
- };
sudo: {
/**
* The \[sudoer\] just switched identity; the old key is supplied.
@@ -492,15 +473,17 @@
};
vesting: {
/**
- * An \[account\] has become fully vested.
+ * Claimed vesting. \[who, locked_amount\]
+ **/
+ Claimed: AugmentedEvent<ApiType, [AccountId32, u128]>;
+ /**
+ * Added new vesting schedule. \[from, to, vesting_schedule\]
**/
- VestingCompleted: AugmentedEvent<ApiType, [AccountId32]>;
+ VestingScheduleAdded: AugmentedEvent<ApiType, [AccountId32, AccountId32, OrmlVestingVestingSchedule]>;
/**
- * The amount vested has been updated. This could indicate a change in funds available.
- * The balance given is the amount which is left unvested (and thus locked).
- * \[account, unvested\]
+ * Updated vesting schedules. \[who\]
**/
- VestingUpdated: AugmentedEvent<ApiType, [AccountId32, u128]>;
+ VestingSchedulesUpdated: AugmentedEvent<ApiType, [AccountId32]>;
/**
* Generic event
**/
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -2,12 +2,12 @@
/* eslint-disable */
import type { EthereumBlock, EthereumReceipt, EthereumTransactionLegacyTransaction, FpRpcTransactionStatus } from './ethereum';
-import type { NftDataStructsCollection, PalletCommonAccountBasicCrossAccountIdRepr, PalletNonfungibleItemData, PalletRefungibleItemData, PalletUnqSchedulerCallSpec, PalletUnqSchedulerReleases, PalletUnqSchedulerScheduledV2 } from './nft';
import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundStatus, CumulusPalletXcmpQueueOutboundStatus, CumulusPalletXcmpQueueQueueConfigData, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1PersistedValidationData } from './polkadot';
+import type { PalletCommonAccountBasicCrossAccountIdRepr, PalletNonfungibleItemData, PalletRefungibleItemData, UpDataStructsCollection, UpDataStructsCollectionStats } from './unique';
import type { ApiTypes } from '@polkadot/api/types';
import type { BTreeMap, Bytes, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types';
import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletVestingReleases, PalletVestingVestingInfo, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV1UpgradeRestriction, SpRuntimeGenericDigest } from '@polkadot/types/lookup';
+import type { FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV1UpgradeRestriction, SpRuntimeGenericDigest } from '@polkadot/types/lookup';
import type { AnyNumber, ITuple, Observable } from '@polkadot/types/types';
declare module '@polkadot/api/types/storage' {
@@ -58,10 +58,14 @@
/**
* Collection info
**/
- collectionById: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<NftDataStructsCollection>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+ collectionById: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<UpDataStructsCollection>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
createdCollectionCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
destroyedCollectionCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
/**
+ * Not used by code, exists only to provide some types to metadata
+ **/
+ dummyStorageValue: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[UpDataStructsCollectionStats, u32, u32]>>>, []> & QueryableStorageEntry<ApiType, []>;
+ /**
* List of collection admins
**/
isAdmin: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
@@ -171,44 +175,6 @@
**/
[key: string]: QueryableStorageEntry<ApiType>;
};
- nft: {
- /**
- * Used for migrations
- **/
- chainVersion: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;
- /**
- * (Collection id (controlled?2), who created (real))
- * TODO: Off chain worker should remove from this map when collection gets removed
- **/
- createItemBasket: AugmentedQuery<ApiType, (arg: ITuple<[u32, AccountId32]> | [u32 | AnyNumber | Uint8Array, AccountId32 | string | Uint8Array]) => Observable<u32>, [ITuple<[u32, AccountId32]>]> & QueryableStorageEntry<ApiType, [ITuple<[u32, AccountId32]>]>;
- /**
- * Collection id (controlled?2), owning user (real)
- **/
- fungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<u32>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;
- /**
- * Collection id (controlled?2), token id (controlled?2)
- **/
- nftTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
- /**
- * Collection id (controlled?2), token id (controlled?2)
- **/
- reFungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
- /**
- * Variable metadata sponsoring
- * Collection id (controlled?2), token id (controlled?2)
- **/
- variableMetaDataBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
- /**
- * Generic query
- **/
- [key: string]: QueryableStorageEntry<ApiType>;
- };
- nftPayment: {
- /**
- * Generic query
- **/
- [key: string]: QueryableStorageEntry<ApiType>;
- };
nonfungible: {
accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletCommonAccountBasicCrossAccountIdRepr>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
@@ -383,27 +349,6 @@
**/
[key: string]: QueryableStorageEntry<ApiType>;
};
- scheduler: {
- /**
- * Items to be executed, indexed by the block number that they should be executed on.
- **/
- agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUnqSchedulerScheduledV2>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
- /**
- * Lookup from identity to the block number and index of the task.
- **/
- lookup: AugmentedQuery<ApiType, (arg: Bytes | string | Uint8Array) => Observable<Option<ITuple<[u32, u32]>>>, [Bytes]> & QueryableStorageEntry<ApiType, [Bytes]>;
- specAgenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUnqSchedulerCallSpec>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
- /**
- * Storage version of the pallet.
- *
- * New networks start with last version.
- **/
- storageVersion: AugmentedQuery<ApiType, () => Observable<PalletUnqSchedulerReleases>, []> & QueryableStorageEntry<ApiType, []>;
- /**
- * Generic query
- **/
- [key: string]: QueryableStorageEntry<ApiType>;
- };
sudo: {
/**
* The `AccountId` of the sudo key.
@@ -537,17 +482,51 @@
**/
[key: string]: QueryableStorageEntry<ApiType>;
};
+ unique: {
+ /**
+ * Used for migrations
+ **/
+ chainVersion: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;
+ /**
+ * (Collection id (controlled?2), who created (real))
+ * TODO: Off chain worker should remove from this map when collection gets removed
+ **/
+ createItemBasket: AugmentedQuery<ApiType, (arg: ITuple<[u32, AccountId32]> | [u32 | AnyNumber | Uint8Array, AccountId32 | string | Uint8Array]) => Observable<Option<u32>>, [ITuple<[u32, AccountId32]>]> & QueryableStorageEntry<ApiType, [ITuple<[u32, AccountId32]>]>;
+ fungibleApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;
+ /**
+ * Collection id (controlled?2), owning user (real)
+ **/
+ fungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;
+ /**
+ * Approval sponsoring
+ **/
+ nftApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
+ /**
+ * Collection id (controlled?2), token id (controlled?2)
+ **/
+ nftTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
+ refungibleApproveBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, u32, AccountId32]>;
+ /**
+ * Collection id (controlled?2), token id (controlled?2)
+ **/
+ reFungibleTransferBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [u32, u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, u32, AccountId32]>;
+ /**
+ * Variable metadata sponsoring
+ * Collection id (controlled?2), token id (controlled?2)
+ **/
+ variableMetaDataBasket: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
+ /**
+ * Generic query
+ **/
+ [key: string]: QueryableStorageEntry<ApiType>;
+ };
vesting: {
/**
- * Storage version of the pallet.
+ * Vesting schedules of an account.
*
- * New networks start with latest version, as determined by the genesis build.
+ * VestingSchedules: map AccountId => Vec<VestingSchedule>
**/
- storageVersion: AugmentedQuery<ApiType, () => Observable<PalletVestingReleases>, []> & QueryableStorageEntry<ApiType, []>;
- /**
- * Information regarding the vesting of a given account.
- **/
- vesting: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Option<Vec<PalletVestingVestingInfo>>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
+ vestingSchedules: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<OrmlVestingVestingSchedule>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
/**
* Generic query
**/
tests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -1,7 +1,7 @@
// Auto-generated via `yarn polkadot-types-from-chain`, do not edit
/* eslint-disable */
-import type { NftDataStructsCollection, NftDataStructsCollectionId, NftDataStructsCollectionStats, NftDataStructsTokenId, PalletCommonAccountBasicCrossAccountIdRepr } from './nft';
+import type { PalletCommonAccountBasicCrossAccountIdRepr, UpDataStructsCollection, UpDataStructsCollectionId, UpDataStructsCollectionStats, UpDataStructsTokenId } from './unique';
import type { Bytes, HashMap, Json, Metadata, Null, Option, StorageKey, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types';
import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';
import type { EpochAuthorship } from '@polkadot/types/interfaces/babe';
@@ -354,68 +354,6 @@
* Returns protocol version.
**/
version: AugmentedRpc<() => Observable<Text>>;
- };
- nft: {
- /**
- * Get amount of different user tokens
- **/
- accountBalance: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u32>>;
- /**
- * Get tokens owned by account
- **/
- accountTokens: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<NftDataStructsTokenId>>>;
- /**
- * Get admin list
- **/
- adminlist: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletCommonAccountBasicCrossAccountIdRepr>>>;
- /**
- * Get allowed amount
- **/
- allowance: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, sender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, spender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: NftDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
- /**
- * Check if user is allowed to use collection
- **/
- allowed: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
- /**
- * Get allowlist
- **/
- allowlist: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletCommonAccountBasicCrossAccountIdRepr>>>;
- /**
- * Get amount of specific account token
- **/
- balance: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: NftDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
- /**
- * Get collection by specified id
- **/
- collectionById: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<NftDataStructsCollection>>>;
- /**
- * Get collection stats
- **/
- collectionStats: AugmentedRpc<(at?: Hash | string | Uint8Array) => Observable<NftDataStructsCollectionStats>>;
- /**
- * Get tokens contained in collection
- **/
- collectionTokens: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<NftDataStructsTokenId>>>;
- /**
- * Get token constant metadata
- **/
- constMetadata: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: NftDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Bytes>>;
- /**
- * Get last token id
- **/
- lastTokenId: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<NftDataStructsTokenId>>;
- /**
- * Check if token exists
- **/
- tokenExists: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: NftDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
- /**
- * Get token owner
- **/
- tokenOwner: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: NftDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<PalletCommonAccountBasicCrossAccountIdRepr>>;
- /**
- * Get token variable metadata
- **/
- variableMetadata: AugmentedRpc<(collection: NftDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: NftDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Bytes>>;
};
offchain: {
/**
@@ -609,6 +547,68 @@
**/
version: AugmentedRpc<() => Observable<Text>>;
};
+ unique: {
+ /**
+ * Get amount of different user tokens
+ **/
+ accountBalance: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u32>>;
+ /**
+ * Get tokens owned by account
+ **/
+ accountTokens: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsTokenId>>>;
+ /**
+ * Get admin list
+ **/
+ adminlist: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletCommonAccountBasicCrossAccountIdRepr>>>;
+ /**
+ * Get allowed amount
+ **/
+ allowance: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, sender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, spender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: UpDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
+ /**
+ * Check if user is allowed to use collection
+ **/
+ allowed: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
+ /**
+ * Get allowlist
+ **/
+ allowlist: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletCommonAccountBasicCrossAccountIdRepr>>>;
+ /**
+ * Get amount of specific account token
+ **/
+ balance: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: UpDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
+ /**
+ * Get collection by specified id
+ **/
+ collectionById: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<UpDataStructsCollection>>>;
+ /**
+ * Get collection stats
+ **/
+ collectionStats: AugmentedRpc<(at?: Hash | string | Uint8Array) => Observable<UpDataStructsCollectionStats>>;
+ /**
+ * Get tokens contained in collection
+ **/
+ collectionTokens: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsTokenId>>>;
+ /**
+ * Get token constant metadata
+ **/
+ constMetadata: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: UpDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Bytes>>;
+ /**
+ * Get last token id
+ **/
+ lastTokenId: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<UpDataStructsTokenId>>;
+ /**
+ * Check if token exists
+ **/
+ tokenExists: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: UpDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
+ /**
+ * Get token owner
+ **/
+ tokenOwner: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: UpDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<PalletCommonAccountBasicCrossAccountIdRepr>>;
+ /**
+ * Get token variable metadata
+ **/
+ variableMetadata: AugmentedRpc<(collection: UpDataStructsCollectionId | AnyNumber | Uint8Array, tokenId: UpDataStructsTokenId | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Bytes>>;
+ };
web3: {
/**
* Returns current client version.
tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -2,13 +2,13 @@
/* eslint-disable */
import type { EthereumTransactionLegacyTransaction } from './ethereum';
-import type { NftDataStructsAccessMode, NftDataStructsCollectionLimits, NftDataStructsCollectionMode, NftDataStructsCreateItemData, NftDataStructsMetaUpdatePermission, NftDataStructsSchemaVersion, PalletCommonAccountBasicCrossAccountIdRepr } from './nft';
import type { CumulusPrimitivesParachainInherentParachainInherentData } from './polkadot';
+import type { PalletCommonAccountBasicCrossAccountIdRepr, UpDataStructsAccessMode, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCreateItemData, UpDataStructsMetaUpdatePermission, UpDataStructsSchemaVersion } from './unique';
import type { ApiTypes, SubmittableExtrinsic } from '@polkadot/api/types';
-import type { Bytes, Compact, Option, U256, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types';
+import type { Bytes, Compact, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types';
import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics';
import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
-import type { PalletVestingVestingInfo, SpCoreChangesTrieChangesTrieConfiguration, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { SpCoreChangesTrieChangesTrieConfiguration, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
import type { AnyNumber, ITuple } from '@polkadot/types/types';
declare module '@polkadot/api/types/submittable' {
@@ -196,441 +196,11 @@
[key: string]: SubmittableExtrinsicFunction<ApiType>;
};
inflation: {
- /**
- * Generic tx
- **/
- [key: string]: SubmittableExtrinsicFunction<ApiType>;
- };
- nft: {
- /**
- * Adds an admin of the Collection.
- * NFT Collection can be controlled by multiple admin addresses (some which can also be servers, for example). Admins can issue and burn NFTs, as well as add and remove other admins, but cannot change NFT or Collection ownership.
- *
- * # Permissions
- *
- * * Collection Owner.
- * * Collection Admin.
- *
- * # Arguments
- *
- * * collection_id: ID of the Collection to add admin for.
- *
- * * new_admin_id: Address of new admin to add.
- **/
- addCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newAdminId: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
- /**
- * Add an address to allow list.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * address.
- **/
- addToAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
- /**
- * Set, change, or remove approved address to transfer the ownership of the NFT.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- * * Current NFT owner
- *
- * # Arguments
- *
- * * approved: Address that is approved to transfer this NFT or zero (if needed to remove approval).
- *
- * * collection_id.
- *
- * * item_id: ID of the item.
- **/
- approve: AugmentedSubmittable<(spender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
- /**
- * Destroys a concrete instance of NFT on behalf of the owner
- * See also: [`approve`]
- *
- * # Permissions
- *
- * * Collection Owner.
- * * Collection Admin.
- * * Current NFT Owner.
- *
- * # Arguments
- *
- * * collection_id: ID of the collection.
- *
- * * item_id: ID of NFT to burn.
- *
- * * from: owner of item
- **/
- burnFrom: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, from: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, u32, u128]>;
- /**
- * Destroys a concrete instance of NFT.
- *
- * # Permissions
- *
- * * Collection Owner.
- * * Collection Admin.
- * * Current NFT Owner.
- *
- * # Arguments
- *
- * * collection_id: ID of the collection.
- *
- * * item_id: ID of NFT to burn.
- **/
- burnItem: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u128]>;
- /**
- * Change the owner of the collection.
- *
- * # Permissions
- *
- * * Collection Owner.
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * new_owner.
- **/
- changeCollectionOwner: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newOwner: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;
- /**
- * # Permissions
- *
- * * Sponsor.
- *
- * # Arguments
- *
- * * collection_id.
- **/
- confirmSponsorship: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
- /**
- * This method creates a Collection of NFTs. Each Token may have multiple properties encoded as an array of bytes of certain length. The initial owner and admin of the collection are set to the address that signed the transaction. Both addresses can be changed later.
- *
- * # Permissions
- *
- * * Anyone.
- *
- * # Arguments
- *
- * * collection_name: UTF-16 string with collection name (limit 64 characters), will be stored as zero-terminated.
- *
- * * collection_description: UTF-16 string with collection description (limit 256 characters), will be stored as zero-terminated.
- *
- * * token_prefix: UTF-8 string with token prefix.
- *
- * * mode: [CollectionMode] collection type and type dependent data.
- **/
- createCollection: AugmentedSubmittable<(collectionName: Vec<u16> | (u16 | AnyNumber | Uint8Array)[], collectionDescription: Vec<u16> | (u16 | AnyNumber | Uint8Array)[], tokenPrefix: Bytes | string | Uint8Array, mode: NftDataStructsCollectionMode | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Vec<u16>, Vec<u16>, Bytes, NftDataStructsCollectionMode]>;
- /**
- * This method creates a concrete instance of NFT Collection created with CreateCollection method.
- *
- * # Permissions
- *
- * * Collection Owner.
- * * Collection Admin.
- * * Anyone if
- * * Allow List is enabled, and
- * * Address is added to allow list, and
- * * MintPermission is enabled (see SetMintPermission method)
- *
- * # Arguments
- *
- * * collection_id: ID of the collection.
- *
- * * owner: Address, initial owner of the NFT.
- *
- * * data: Token data to store on chain.
- **/
- createItem: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, data: NftDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, NftDataStructsCreateItemData]>;
- /**
- * This method creates multiple items in a collection created with CreateCollection method.
- *
- * # Permissions
- *
- * * Collection Owner.
- * * Collection Admin.
- * * Anyone if
- * * Allow List is enabled, and
- * * Address is added to allow list, and
- * * MintPermission is enabled (see SetMintPermission method)
- *
- * # Arguments
- *
- * * collection_id: ID of the collection.
- *
- * * itemsData: Array items properties. Each property is an array of bytes itself, see [create_item].
- *
- * * owner: Address, initial owner of the NFT.
- **/
- createMultipleItems: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemsData: Vec<NftDataStructsCreateItemData> | (NftDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, Vec<NftDataStructsCreateItemData>]>;
- /**
- * **DANGEROUS**: Destroys collection and all NFTs within this collection. Users irrecoverably lose their assets and may lose real money.
- *
- * # Permissions
- *
- * * Collection Owner.
- *
- * # Arguments
- *
- * * collection_id: collection to destroy.
- **/
- destroyCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
- /**
- * Remove admin address of the Collection. An admin address can remove itself. List of admins may become empty, in which case only Collection Owner will be able to add an Admin.
- *
- * # Permissions
- *
- * * Collection Owner.
- * * Collection Admin.
- *
- * # Arguments
- *
- * * collection_id: ID of the Collection to remove admin for.
- *
- * * account_id: Address of admin to remove.
- **/
- removeCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, accountId: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
- /**
- * Switch back to pay-per-own-transaction model.
- *
- * # Permissions
- *
- * * Collection owner.
- *
- * # Arguments
- *
- * * collection_id.
- **/
- removeCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
- /**
- * Remove an address from allow list.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * address.
- **/
- removeFromAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
- setCollectionLimits: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newLimit: NftDataStructsCollectionLimits | { accountTokenOwnershipLimit?: any; sponsoredDataSize?: any; sponsoredDataRateLimit?: any; tokenLimit?: any; sponsorTransferTimeout?: any; ownerCanTransfer?: any; ownerCanDestroy?: any; transfersEnabled?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, NftDataStructsCollectionLimits]>;
- /**
- * # Permissions
- *
- * * Collection Owner
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * new_sponsor.
- **/
- setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;
- /**
- * Set const on-chain data schema.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * schema: String representing the const on-chain data schema.
- **/
- setConstOnChainSchema: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, schema: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, Bytes]>;
- /**
- * Set meta_update_permission value for particular collection
- *
- * # Permissions
- *
- * * Collection Owner.
- *
- * # Arguments
- *
- * * collection_id: ID of the collection.
- *
- * * value: New flag value.
- **/
- setMetaUpdatePermissionFlag: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, value: NftDataStructsMetaUpdatePermission | 'ItemOwner' | 'Admin' | 'None' | number | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, NftDataStructsMetaUpdatePermission]>;
- /**
- * Allows Anyone to create tokens if:
- * * Allow List is enabled, and
- * * Address is added to allow list, and
- * * This method was called with True parameter
- *
- * # Permissions
- * * Collection Owner
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
- **/
- setMintPermission: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, mintPermission: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, bool]>;
- /**
- * Set off-chain data schema.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * schema: String representing the offchain data schema.
- **/
- setOffchainSchema: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, schema: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, Bytes]>;
- /**
- * Toggle between normal and allow list access for the methods with access for `Anyone`.
- *
- * # Permissions
- *
- * * Collection Owner.
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * mode: [AccessMode]
- **/
- setPublicAccessMode: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, mode: NftDataStructsAccessMode | 'Normal' | 'AllowList' | number | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, NftDataStructsAccessMode]>;
- /**
- * Set schema standard
- * ImageURL
- * Unique
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * schema: SchemaVersion: enum
- **/
- setSchemaVersion: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, version: NftDataStructsSchemaVersion | 'ImageURL' | 'Unique' | number | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, NftDataStructsSchemaVersion]>;
- /**
- * Set transfers_enabled value for particular collection
- *
- * # Permissions
- *
- * * Collection Owner.
- *
- * # Arguments
- *
- * * collection_id: ID of the collection.
- *
- * * value: New flag value.
- **/
- setTransfersEnabledFlag: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, value: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, bool]>;
- /**
- * Set off-chain data schema.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * schema: String representing the offchain data schema.
- **/
- setVariableMetaData: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, Bytes]>;
- /**
- * Set variable on-chain data schema.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- *
- * # Arguments
- *
- * * collection_id.
- *
- * * schema: String representing the variable on-chain data schema.
- **/
- setVariableOnChainSchema: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, schema: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, Bytes]>;
- /**
- * Change ownership of the token.
- *
- * # Permissions
- *
- * * Collection Owner
- * * Collection Admin
- * * Current NFT owner
- *
- * # Arguments
- *
- * * recipient: Address of token recipient.
- *
- * * collection_id.
- *
- * * item_id: ID of the item
- * * Non-Fungible Mode: Required.
- * * Fungible Mode: Ignored.
- * * Re-Fungible Mode: Required.
- *
- * * value: Amount to transfer.
- * * Non-Fungible Mode: Ignored
- * * Fungible Mode: Must specify transferred amount
- * * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
- **/
- transfer: AugmentedSubmittable<(recipient: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
/**
- * Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.
- *
- * # Permissions
- * * Collection Owner
- * * Collection Admin
- * * Current NFT owner
- * * Address approved by current NFT owner
- *
- * # Arguments
- *
- * * from: Address that owns token.
- *
- * * recipient: Address of token recipient.
- *
- * * collection_id.
- *
- * * item_id: ID of the item.
- *
- * * value: Amount to transfer.
- **/
- transferFrom: AugmentedSubmittable<(from: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, recipient: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
- /**
* Generic tx
**/
[key: string]: SubmittableExtrinsicFunction<ApiType>;
};
- nftPayment: {
- /**
- * Generic tx
- **/
- [key: string]: SubmittableExtrinsicFunction<ApiType>;
- };
parachainSystem: {
authorizeUpgrade: AugmentedSubmittable<(codeHash: H256 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H256]>;
enactAuthorizedUpgrade: AugmentedSubmittable<(code: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes]>;
@@ -778,80 +348,6 @@
**/
[key: string]: SubmittableExtrinsicFunction<ApiType>;
};
- scheduler: {
- /**
- * Cancel an anonymously scheduled task.
- *
- * # <weight>
- * - S = Number of already scheduled calls
- * - Base Weight: 22.15 + 2.869 * S µs
- * - DB Weight:
- * - Read: Agenda
- * - Write: Agenda, Lookup
- * - Will use base weight of 100 which should be good for up to 30 scheduled calls
- * # </weight>
- **/
- cancel: AugmentedSubmittable<(when: u32 | AnyNumber | Uint8Array, index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;
- /**
- * Cancel a named scheduled task.
- *
- * # <weight>
- * - S = Number of already scheduled calls
- * - Base Weight: 24.91 + 2.907 * S µs
- * - DB Weight:
- * - Read: Agenda, Lookup
- * - Write: Agenda, Lookup
- * - Will use base weight of 100 which should be good for up to 30 scheduled calls
- * # </weight>
- **/
- cancelNamed: AugmentedSubmittable<(id: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes]>;
- /**
- * Anonymously schedule a task.
- *
- * # <weight>
- * - S = Number of already scheduled calls
- * - Base Weight: 22.29 + .126 * S µs
- * - DB Weight:
- * - Read: Agenda
- * - Write: Agenda
- * - Will use base weight of 25 which should be good for up to 30 scheduled calls
- * # </weight>
- **/
- schedule: AugmentedSubmittable<(when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call) => SubmittableExtrinsic<ApiType>, [u32, Option<ITuple<[u32, u32]>>, u8, Call]>;
- /**
- * Anonymously schedule a task after a delay.
- *
- * # <weight>
- * Same as [`schedule`].
- * # </weight>
- **/
- scheduleAfter: AugmentedSubmittable<(after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call) => SubmittableExtrinsic<ApiType>, [u32, Option<ITuple<[u32, u32]>>, u8, Call]>;
- /**
- * Schedule a named task.
- *
- * # <weight>
- * - S = Number of already scheduled calls
- * - Base Weight: 29.6 + .159 * S µs
- * - DB Weight:
- * - Read: Agenda, Lookup
- * - Write: Agenda, Lookup
- * - Will use base weight of 35 which should be good for more than 30 scheduled calls
- * # </weight>
- **/
- scheduleNamed: AugmentedSubmittable<(id: Bytes | string | Uint8Array, when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call) => SubmittableExtrinsic<ApiType>, [Bytes, u32, Option<ITuple<[u32, u32]>>, u8, Call]>;
- /**
- * Schedule a named task after a delay.
- *
- * # <weight>
- * Same as [`schedule_named`].
- * # </weight>
- **/
- scheduleNamedAfter: AugmentedSubmittable<(id: Bytes | string | Uint8Array, after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: Call) => SubmittableExtrinsic<ApiType>, [Bytes, u32, Option<ITuple<[u32, u32]>>, u8, Call]>;
- /**
- * Generic tx
- **/
- [key: string]: SubmittableExtrinsicFunction<ApiType>;
- };
sudo: {
/**
* Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo
@@ -878,7 +374,7 @@
* - Weight of derivative `call` execution + 10,000.
* # </weight>
**/
- sudo: AugmentedSubmittable<(call: Call) => SubmittableExtrinsic<ApiType>, [Call]>;
+ sudo: AugmentedSubmittable<(call: Call) => SubmittableExtrinsic<ApiType>, [Call]>;
/**
* Authenticates the sudo key and dispatches a function call with `Signed` origin from
* a given account.
@@ -892,7 +388,7 @@
* - Weight of derivative `call` execution + 10,000.
* # </weight>
**/
- sudoAs: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, call: Call) => SubmittableExtrinsic<ApiType>, [MultiAddress, Call]>;
+ sudoAs: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, ) => SubmittableExtrinsic<ApiType>, [MultiAddress, Call]>;
/**
* Authenticates the sudo key and dispatches a function call with `Root` origin.
* This function does not check the weight of the call, and instead allows the
@@ -905,7 +401,7 @@
* - The weight of this call is defined by the caller.
* # </weight>
**/
- sudoUncheckedWeight: AugmentedSubmittable<(call: Call, weight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call, u64]>;
+ sudoUncheckedWeight: AugmentedSubmittable<(call: Call, weight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call, u64]>;
/**
* Generic tx
**/
@@ -1094,106 +590,435 @@
**/
[key: string]: SubmittableExtrinsicFunction<ApiType>;
};
- vesting: {
+ unique: {
+ /**
+ * Adds an admin of the Collection.
+ * NFT Collection can be controlled by multiple admin addresses (some which can also be servers, for example). Admins can issue and burn NFTs, as well as add and remove other admins, but cannot change NFT or Collection ownership.
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ * * Collection Admin.
+ *
+ * # Arguments
+ *
+ * * collection_id: ID of the Collection to add admin for.
+ *
+ * * new_admin_id: Address of new admin to add.
+ **/
+ addCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newAdminId: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
/**
- * Force a vested transfer.
+ * Add an address to allow list.
*
- * The dispatch origin for this call must be _Root_.
+ * # Permissions
*
- * - `source`: The account whose funds should be transferred.
- * - `target`: The account that should be transferred the vested funds.
- * - `schedule`: The vesting schedule attached to the transfer.
+ * * Collection Owner
+ * * Collection Admin
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * address.
+ **/
+ addToAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ /**
+ * Set, change, or remove approved address to transfer the ownership of the NFT.
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ * * Current NFT owner
+ *
+ * # Arguments
+ *
+ * * approved: Address that is approved to transfer this NFT or zero (if needed to remove approval).
+ *
+ * * collection_id.
+ *
+ * * item_id: ID of the item.
+ **/
+ approve: AugmentedSubmittable<(spender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
+ /**
+ * Destroys a concrete instance of NFT on behalf of the owner
+ * See also: [`approve`]
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ * * Collection Admin.
+ * * Current NFT Owner.
+ *
+ * # Arguments
+ *
+ * * collection_id: ID of the collection.
+ *
+ * * item_id: ID of NFT to burn.
+ *
+ * * from: owner of item
+ **/
+ burnFrom: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, from: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, u32, u128]>;
+ /**
+ * Destroys a concrete instance of NFT.
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ * * Collection Admin.
+ * * Current NFT Owner.
+ *
+ * # Arguments
+ *
+ * * collection_id: ID of the collection.
+ *
+ * * item_id: ID of NFT to burn.
+ **/
+ burnItem: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u128]>;
+ /**
+ * Change the owner of the collection.
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * new_owner.
+ **/
+ changeCollectionOwner: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newOwner: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;
+ /**
+ * # Permissions
*
- * Emits `VestingCreated`.
+ * * Sponsor.
*
- * NOTE: This will unlock all schedules through the current block.
+ * # Arguments
*
- * # <weight>
- * - `O(1)`.
- * - DbWeight: 4 Reads, 4 Writes
- * - Reads: Vesting Storage, Balances Locks, Target Account, Source Account
- * - Writes: Vesting Storage, Balances Locks, Target Account, Source Account
- * # </weight>
+ * * collection_id.
**/
- forceVestedTransfer: AugmentedSubmittable<(source: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, target: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, schedule: PalletVestingVestingInfo | { locked?: any; perBlock?: any; startingBlock?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, MultiAddress, PalletVestingVestingInfo]>;
+ confirmSponsorship: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
/**
- * Merge two vesting schedules together, creating a new vesting schedule that unlocks over
- * the highest possible start and end blocks. If both schedules have already started the
- * current block will be used as the schedule start; with the caveat that if one schedule
- * is finished by the current block, the other will be treated as the new merged schedule,
- * unmodified.
+ * This method creates a Collection of NFTs. Each Token may have multiple properties encoded as an array of bytes of certain length. The initial owner of the collection is set to the address that signed the transaction and can be changed later.
*
- * NOTE: If `schedule1_index == schedule2_index` this is a no-op.
- * NOTE: This will unlock all schedules through the current block prior to merging.
- * NOTE: If both schedules have ended by the current block, no new schedule will be created
- * and both will be removed.
+ * # Permissions
+ *
+ * * Anyone.
+ *
+ * # Arguments
+ *
+ * * collection_name: UTF-16 string with collection name (limit 64 characters), will be stored as zero-terminated.
*
- * Merged schedule attributes:
- * - `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,
- * current_block)`.
- * - `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`.
- * - `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`.
+ * * collection_description: UTF-16 string with collection description (limit 256 characters), will be stored as zero-terminated.
*
- * The dispatch origin for this call must be _Signed_.
+ * * token_prefix: UTF-8 string with token prefix.
*
- * - `schedule1_index`: index of the first schedule to merge.
- * - `schedule2_index`: index of the second schedule to merge.
+ * * mode: [CollectionMode] collection type and type dependent data.
**/
- mergeSchedules: AugmentedSubmittable<(schedule1Index: u32 | AnyNumber | Uint8Array, schedule2Index: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;
+ createCollection: AugmentedSubmittable<(collectionName: Vec<u16> | (u16 | AnyNumber | Uint8Array)[], collectionDescription: Vec<u16> | (u16 | AnyNumber | Uint8Array)[], tokenPrefix: Bytes | string | Uint8Array, mode: UpDataStructsCollectionMode | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Vec<u16>, Vec<u16>, Bytes, UpDataStructsCollectionMode]>;
/**
- * Unlock any vested funds of the sender account.
+ * This method creates a concrete instance of NFT Collection created with CreateCollection method.
*
- * The dispatch origin for this call must be _Signed_ and the sender must have funds still
- * locked under this pallet.
+ * # Permissions
*
- * Emits either `VestingCompleted` or `VestingUpdated`.
+ * * Collection Owner.
+ * * Collection Admin.
+ * * Anyone if
+ * * Allow List is enabled, and
+ * * Address is added to allow list, and
+ * * MintPermission is enabled (see SetMintPermission method)
+ *
+ * # Arguments
+ *
+ * * collection_id: ID of the collection.
+ *
+ * * owner: Address, initial owner of the NFT.
*
- * # <weight>
- * - `O(1)`.
- * - DbWeight: 2 Reads, 2 Writes
- * - Reads: Vesting Storage, Balances Locks, [Sender Account]
- * - Writes: Vesting Storage, Balances Locks, [Sender Account]
- * # </weight>
+ * * data: Token data to store on chain.
**/
- vest: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>, []>;
+ createItem: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, data: UpDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, UpDataStructsCreateItemData]>;
/**
- * Create a vested transfer.
+ * This method creates multiple items in a collection created with CreateCollection method.
*
- * The dispatch origin for this call must be _Signed_.
+ * # Permissions
*
- * - `target`: The account receiving the vested funds.
- * - `schedule`: The vesting schedule attached to the transfer.
+ * * Collection Owner.
+ * * Collection Admin.
+ * * Anyone if
+ * * Allow List is enabled, and
+ * * Address is added to allow list, and
+ * * MintPermission is enabled (see SetMintPermission method)
*
- * Emits `VestingCreated`.
+ * # Arguments
*
- * NOTE: This will unlock all schedules through the current block.
+ * * collection_id: ID of the collection.
+ *
+ * * itemsData: Array items properties. Each property is an array of bytes itself, see [create_item].
*
- * # <weight>
- * - `O(1)`.
- * - DbWeight: 3 Reads, 3 Writes
- * - Reads: Vesting Storage, Balances Locks, Target Account, [Sender Account]
- * - Writes: Vesting Storage, Balances Locks, Target Account, [Sender Account]
- * # </weight>
+ * * owner: Address, initial owner of the NFT.
**/
- vestedTransfer: AugmentedSubmittable<(target: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, schedule: PalletVestingVestingInfo | { locked?: any; perBlock?: any; startingBlock?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, PalletVestingVestingInfo]>;
+ createMultipleItems: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemsData: Vec<UpDataStructsCreateItemData> | (UpDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, Vec<UpDataStructsCreateItemData>]>;
/**
- * Unlock any vested funds of a `target` account.
+ * **DANGEROUS**: Destroys collection and all NFTs within this collection. Users irrecoverably lose their assets and may lose real money.
*
- * The dispatch origin for this call must be _Signed_.
+ * # Permissions
*
- * - `target`: The account whose vested funds should be unlocked. Must have funds still
- * locked under this pallet.
+ * * Collection Owner.
*
- * Emits either `VestingCompleted` or `VestingUpdated`.
+ * # Arguments
*
- * # <weight>
- * - `O(1)`.
- * - DbWeight: 3 Reads, 3 Writes
- * - Reads: Vesting Storage, Balances Locks, Target Account
- * - Writes: Vesting Storage, Balances Locks, Target Account
- * # </weight>
+ * * collection_id: collection to destroy.
**/
- vestOther: AugmentedSubmittable<(target: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress]>;
+ destroyCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
+ /**
+ * Remove admin address of the Collection. An admin address can remove itself. List of admins may become empty, in which case only Collection Owner will be able to add an Admin.
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ * * Collection Admin.
+ *
+ * # Arguments
+ *
+ * * collection_id: ID of the Collection to remove admin for.
+ *
+ * * account_id: Address of admin to remove.
+ **/
+ removeCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, accountId: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ /**
+ * Switch back to pay-per-own-transaction model.
+ *
+ * # Permissions
+ *
+ * * Collection owner.
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ **/
+ removeCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
+ /**
+ * Remove an address from allow list.
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * address.
+ **/
+ removeFromAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ setCollectionLimits: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newLimit: UpDataStructsCollectionLimits | { accountTokenOwnershipLimit?: any; sponsoredDataSize?: any; sponsoredDataRateLimit?: any; tokenLimit?: any; sponsorTransferTimeout?: any; sponsorApproveTimeout?: any; ownerCanTransfer?: any; ownerCanDestroy?: any; transfersEnabled?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsCollectionLimits]>;
+ /**
+ * # Permissions
+ *
+ * * Collection Owner
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * new_sponsor.
+ **/
+ setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;
+ /**
+ * Set const on-chain data schema.
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * schema: String representing the const on-chain data schema.
+ **/
+ setConstOnChainSchema: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, schema: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, Bytes]>;
+ /**
+ * Set meta_update_permission value for particular collection
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ *
+ * # Arguments
+ *
+ * * collection_id: ID of the collection.
+ *
+ * * value: New flag value.
+ **/
+ setMetaUpdatePermissionFlag: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, value: UpDataStructsMetaUpdatePermission | 'ItemOwner' | 'Admin' | 'None' | number | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsMetaUpdatePermission]>;
+ /**
+ * Allows Anyone to create tokens if:
+ * * Allow List is enabled, and
+ * * Address is added to allow list, and
+ * * This method was called with True parameter
+ *
+ * # Permissions
+ * * Collection Owner
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
+ **/
+ setMintPermission: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, mintPermission: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, bool]>;
+ /**
+ * Set off-chain data schema.
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * schema: String representing the offchain data schema.
+ **/
+ setOffchainSchema: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, schema: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, Bytes]>;
+ /**
+ * Toggle between normal and allow list access for the methods with access for `Anyone`.
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * mode: [AccessMode]
+ **/
+ setPublicAccessMode: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, mode: UpDataStructsAccessMode | 'Normal' | 'AllowList' | number | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsAccessMode]>;
+ /**
+ * Set schema standard
+ * ImageURL
+ * Unique
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * schema: SchemaVersion: enum
+ **/
+ setSchemaVersion: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, version: UpDataStructsSchemaVersion | 'ImageURL' | 'Unique' | number | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsSchemaVersion]>;
+ /**
+ * Set transfers_enabled value for particular collection
+ *
+ * # Permissions
+ *
+ * * Collection Owner.
+ *
+ * # Arguments
+ *
+ * * collection_id: ID of the collection.
+ *
+ * * value: New flag value.
+ **/
+ setTransfersEnabledFlag: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, value: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, bool]>;
+ /**
+ * Set off-chain data schema.
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * schema: String representing the offchain data schema.
+ **/
+ setVariableMetaData: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, Bytes]>;
+ /**
+ * Set variable on-chain data schema.
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ *
+ * # Arguments
+ *
+ * * collection_id.
+ *
+ * * schema: String representing the variable on-chain data schema.
+ **/
+ setVariableOnChainSchema: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, schema: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, Bytes]>;
+ /**
+ * Change ownership of the token.
+ *
+ * # Permissions
+ *
+ * * Collection Owner
+ * * Collection Admin
+ * * Current NFT owner
+ *
+ * # Arguments
+ *
+ * * recipient: Address of token recipient.
+ *
+ * * collection_id.
+ *
+ * * item_id: ID of the item
+ * * Non-Fungible Mode: Required.
+ * * Fungible Mode: Ignored.
+ * * Re-Fungible Mode: Required.
+ *
+ * * value: Amount to transfer.
+ * * Non-Fungible Mode: Ignored
+ * * Fungible Mode: Must specify transferred amount
+ * * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
+ **/
+ transfer: AugmentedSubmittable<(recipient: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
+ /**
+ * Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.
+ *
+ * # Permissions
+ * * Collection Owner
+ * * Collection Admin
+ * * Current NFT owner
+ * * Address approved by current NFT owner
+ *
+ * # Arguments
+ *
+ * * from: Address that owns token.
+ *
+ * * recipient: Address of token recipient.
+ *
+ * * collection_id.
+ *
+ * * item_id: ID of the item.
+ *
+ * * value: Amount to transfer.
+ **/
+ transferFrom: AugmentedSubmittable<(from: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, recipient: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
+ /**
+ * Generic tx
+ **/
+ [key: string]: SubmittableExtrinsicFunction<ApiType>;
+ };
+ vesting: {
+ claim: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>, []>;
+ claimFor: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress]>;
+ updateVestingSchedules: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, vestingSchedules: Vec<OrmlVestingVestingSchedule> | (OrmlVestingVestingSchedule | { start?: any; period?: any; periodCount?: any; perPeriod?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [MultiAddress, Vec<OrmlVestingVestingSchedule>]>;
+ vestedTransfer: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, schedule: OrmlVestingVestingSchedule | { start?: any; period?: any; periodCount?: any; perPeriod?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, OrmlVestingVestingSchedule]>;
/**
* Generic tx
**/
tests/src/interfaces/augment-types.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -2,8 +2,8 @@
/* eslint-disable */
import type { EthereumBlock, EthereumLog, EthereumReceipt, EthereumTransactionLegacyTransaction, EvmCoreErrorExitReason, FpRpcTransactionStatus } from './ethereum';
-import type { NftDataStructsAccessMode, NftDataStructsCollection, NftDataStructsCollectionId, NftDataStructsCollectionLimits, NftDataStructsCollectionMode, NftDataStructsCollectionStats, NftDataStructsCreateItemData, NftDataStructsMetaUpdatePermission, NftDataStructsSchemaVersion, NftDataStructsSponsorshipState, NftDataStructsTokenId, PalletCommonAccountBasicCrossAccountIdRepr, PalletNonfungibleItemData, PalletRefungibleItemData, PalletUnqSchedulerCallSpec, PalletUnqSchedulerReleases, PalletUnqSchedulerScheduledV2 } from './nft';
import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundStatus, CumulusPalletXcmpQueueOutboundStatus, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1PersistedValidationData } from './polkadot';
+import type { PalletCommonAccountBasicCrossAccountIdRepr, PalletNonfungibleItemData, PalletRefungibleItemData, PalletUnqSchedulerCallSpec, PalletUnqSchedulerReleases, PalletUnqSchedulerScheduledV2, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionId, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateItemData, UpDataStructsMetaUpdatePermission, UpDataStructsSchemaVersion, UpDataStructsSponsorshipState, UpDataStructsTokenId } from './unique';
import type { BitVec, Bool, Bytes, Data, I128, I16, I256, I32, I64, I8, Json, Null, Raw, StorageKey, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types';
import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations';
@@ -622,17 +622,6 @@
NextAuthority: NextAuthority;
NextConfigDescriptor: NextConfigDescriptor;
NextConfigDescriptorV1: NextConfigDescriptorV1;
- NftDataStructsAccessMode: NftDataStructsAccessMode;
- NftDataStructsCollection: NftDataStructsCollection;
- NftDataStructsCollectionId: NftDataStructsCollectionId;
- NftDataStructsCollectionLimits: NftDataStructsCollectionLimits;
- NftDataStructsCollectionMode: NftDataStructsCollectionMode;
- NftDataStructsCollectionStats: NftDataStructsCollectionStats;
- NftDataStructsCreateItemData: NftDataStructsCreateItemData;
- NftDataStructsMetaUpdatePermission: NftDataStructsMetaUpdatePermission;
- NftDataStructsSchemaVersion: NftDataStructsSchemaVersion;
- NftDataStructsSponsorshipState: NftDataStructsSponsorshipState;
- NftDataStructsTokenId: NftDataStructsTokenId;
NodeRole: NodeRole;
Nominations: Nominations;
NominatorIndex: NominatorIndex;
@@ -1026,6 +1015,17 @@
UnlockChunk: UnlockChunk;
UnrewardedRelayer: UnrewardedRelayer;
UnrewardedRelayersState: UnrewardedRelayersState;
+ UpDataStructsAccessMode: UpDataStructsAccessMode;
+ UpDataStructsCollection: UpDataStructsCollection;
+ UpDataStructsCollectionId: UpDataStructsCollectionId;
+ UpDataStructsCollectionLimits: UpDataStructsCollectionLimits;
+ UpDataStructsCollectionMode: UpDataStructsCollectionMode;
+ UpDataStructsCollectionStats: UpDataStructsCollectionStats;
+ UpDataStructsCreateItemData: UpDataStructsCreateItemData;
+ UpDataStructsMetaUpdatePermission: UpDataStructsMetaUpdatePermission;
+ UpDataStructsSchemaVersion: UpDataStructsSchemaVersion;
+ UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;
+ UpDataStructsTokenId: UpDataStructsTokenId;
UpgradeGoAhead: UpgradeGoAhead;
UpgradeRestriction: UpgradeRestriction;
UpwardMessage: UpwardMessage;
tests/src/interfaces/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/definitions.ts
+++ b/tests/src/interfaces/definitions.ts
@@ -1,3 +1,3 @@
-export {default as nft} from './nft/definitions';
+export {default as unique} from './unique/definitions';
export {default as ethereum} from './ethereum/definitions';
export {default as polkadot} from './polkadot/definitions';
tests/src/interfaces/nft/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/nft/definitions.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-function mkDummy(name: string) {
- return {
- ['dummy' + name]: 'u32',
- };
-}
-
-type RpcParam = {
- name: string;
- type: string;
- isOptional?: true;
-};
-
-const CROSS_ACCOUNT_ID_TYPE = 'PalletCommonAccountBasicCrossAccountIdRepr';
-const TOKEN_ID_TYPE = 'NftDataStructsTokenId';
-
-const collectionParam = {name: 'collection', type: 'NftDataStructsCollectionId'};
-const tokenParam = {name: 'tokenId', type: TOKEN_ID_TYPE};
-const crossAccountParam = (name = 'account') => ({name, type: CROSS_ACCOUNT_ID_TYPE});
-const atParam = {name: 'at', type: 'Hash', isOptional: true};
-
-const fun = (description: string, params: RpcParam[], type: string) => ({
- description,
- params: [...params, atParam],
- type,
-});
-
-export default {
- rpc: {
- adminlist: fun('Get admin list', [collectionParam], 'Vec<PalletCommonAccountBasicCrossAccountIdRepr>'),
- allowlist: fun('Get allowlist', [collectionParam], 'Vec<PalletCommonAccountBasicCrossAccountIdRepr>'),
-
- accountTokens: fun('Get tokens owned by account', [collectionParam, crossAccountParam()], 'Vec<NftDataStructsTokenId>'),
- collectionTokens: fun('Get tokens contained in collection', [collectionParam], 'Vec<NftDataStructsTokenId>'),
-
- lastTokenId: fun('Get last token id', [collectionParam], TOKEN_ID_TYPE),
- accountBalance: fun('Get amount of different user tokens', [collectionParam, crossAccountParam()], 'u32'),
- balance: fun('Get amount of specific account token', [collectionParam, crossAccountParam(), tokenParam], 'u128'),
- allowance: fun('Get allowed amount', [collectionParam, crossAccountParam('sender'), crossAccountParam('spender'), tokenParam], 'u128'),
- tokenOwner: fun('Get token owner', [collectionParam, tokenParam], CROSS_ACCOUNT_ID_TYPE),
- constMetadata: fun('Get token constant metadata', [collectionParam, tokenParam], 'Vec<u8>'),
- variableMetadata: fun('Get token variable metadata', [collectionParam, tokenParam], 'Vec<u8>'),
- tokenExists: fun('Check if token exists', [collectionParam, tokenParam], 'bool'),
- collectionById: fun('Get collection by specified id', [collectionParam], 'Option<NftDataStructsCollection>'),
- collectionStats: fun('Get collection stats', [], 'NftDataStructsCollectionStats'),
- allowed: fun('Check if user is allowed to use collection', [collectionParam, crossAccountParam()], 'bool'),
- },
- types: {
- PalletCommonAccountBasicCrossAccountIdRepr: {
- _enum: {
- Substrate: 'AccountId',
- Ethereum: 'H160',
- },
- },
- NftDataStructsCollection: {
- owner: 'AccountId',
- mode: 'NftDataStructsCollectionMode',
- access: 'NftDataStructsAccessMode',
- name: 'Vec<u16>',
- description: 'Vec<u16>',
- tokenPrefix: 'Vec<u8>',
- mintMode: 'bool',
- offchainSchema: 'Vec<u8>',
- schemaVersion: 'NftDataStructsSchemaVersion',
- sponsorship: 'NftDataStructsSponsorshipState',
- limits: 'NftDataStructsCollectionLimits',
- variableOnChainSchema: 'Vec<u8>',
- constOnChainSchema: 'Vec<u8>',
- metaUpdatePermission: 'NftDataStructsMetaUpdatePermission',
- },
- NftDataStructsCollectionStats: {
- created: 'u32',
- destroyed: 'u32',
- alive: 'u32',
- },
- NftDataStructsCollectionId: 'u32',
- NftDataStructsTokenId: 'u32',
- PalletNonfungibleItemData: mkDummy('NftItemData'),
- PalletRefungibleItemData: mkDummy('RftItemData'),
- NftDataStructsCollectionMode: mkDummy('CollectionMode'),
- NftDataStructsCreateItemData: mkDummy('CreateItemData'),
- NftDataStructsCollectionLimits: {
- accountTokenOwnershipLimit: 'Option<u32>',
- sponsoredDataSize: 'Option<u32>',
- sponsoredDataRateLimit: 'Option<u32>',
- tokenLimit: 'Option<u32>',
- sponsorTransferTimeout: 'Option<u32>',
- ownerCanTransfer: 'Option<bool>',
- ownerCanDestroy: 'Option<bool>',
- transfersEnabled: 'Option<bool>',
- },
- NftDataStructsMetaUpdatePermission: {
- _enum: ['ItemOwner', 'Admin', 'None'],
- },
- NftDataStructsSponsorshipState: {
- _enum: {
- Disabled: null,
- Unconfirmed: 'AccountId',
- Confirmed: 'AccountId',
- },
- },
- NftDataStructsAccessMode: {
- _enum: ['Normal', 'AllowList'],
- },
- NftDataStructsSchemaVersion: mkDummy('SchemaVersion'),
-
- PalletUnqSchedulerScheduledV2: mkDummy('ScheduledV2'),
- PalletUnqSchedulerCallSpec: mkDummy('CallSpec'),
- PalletUnqSchedulerReleases: mkDummy('Releases'),
- },
-};
tests/src/interfaces/nft/index.tsdiffbeforeafterboth--- a/tests/src/interfaces/nft/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
-/* eslint-disable */
-
-export * from './types';
tests/src/interfaces/nft/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/nft/types.ts
+++ /dev/null
@@ -1,120 +0,0 @@
-// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
-/* eslint-disable */
-
-import type { Bytes, Enum, Option, Struct, Vec, bool, u16, u32 } from '@polkadot/types';
-import type { AccountId, H160 } from '@polkadot/types/interfaces/runtime';
-
-/** @name NftDataStructsAccessMode */
-export interface NftDataStructsAccessMode extends Enum {
- readonly isNormal: boolean;
- readonly isAllowList: boolean;
-}
-
-/** @name NftDataStructsCollection */
-export interface NftDataStructsCollection extends Struct {
- readonly owner: AccountId;
- readonly mode: NftDataStructsCollectionMode;
- readonly access: NftDataStructsAccessMode;
- readonly name: Vec<u16>;
- readonly description: Vec<u16>;
- readonly tokenPrefix: Bytes;
- readonly mintMode: bool;
- readonly offchainSchema: Bytes;
- readonly schemaVersion: NftDataStructsSchemaVersion;
- readonly sponsorship: NftDataStructsSponsorshipState;
- readonly limits: NftDataStructsCollectionLimits;
- readonly variableOnChainSchema: Bytes;
- readonly constOnChainSchema: Bytes;
- readonly metaUpdatePermission: NftDataStructsMetaUpdatePermission;
-}
-
-/** @name NftDataStructsCollectionId */
-export interface NftDataStructsCollectionId extends u32 {}
-
-/** @name NftDataStructsCollectionLimits */
-export interface NftDataStructsCollectionLimits extends Struct {
- readonly accountTokenOwnershipLimit: Option<u32>;
- readonly sponsoredDataSize: Option<u32>;
- readonly sponsoredDataRateLimit: Option<u32>;
- readonly tokenLimit: Option<u32>;
- readonly sponsorTransferTimeout: Option<u32>;
- readonly ownerCanTransfer: Option<bool>;
- readonly ownerCanDestroy: Option<bool>;
- readonly transfersEnabled: Option<bool>;
-}
-
-/** @name NftDataStructsCollectionMode */
-export interface NftDataStructsCollectionMode extends Struct {
- readonly dummyCollectionMode: u32;
-}
-
-/** @name NftDataStructsCollectionStats */
-export interface NftDataStructsCollectionStats extends Struct {
- readonly created: u32;
- readonly destroyed: u32;
- readonly alive: u32;
-}
-
-/** @name NftDataStructsCreateItemData */
-export interface NftDataStructsCreateItemData extends Struct {
- readonly dummyCreateItemData: u32;
-}
-
-/** @name NftDataStructsMetaUpdatePermission */
-export interface NftDataStructsMetaUpdatePermission extends Enum {
- readonly isItemOwner: boolean;
- readonly isAdmin: boolean;
- readonly isNone: boolean;
-}
-
-/** @name NftDataStructsSchemaVersion */
-export interface NftDataStructsSchemaVersion extends Struct {
- readonly dummySchemaVersion: u32;
-}
-
-/** @name NftDataStructsSponsorshipState */
-export interface NftDataStructsSponsorshipState extends Enum {
- readonly isDisabled: boolean;
- readonly isUnconfirmed: boolean;
- readonly asUnconfirmed: AccountId;
- readonly isConfirmed: boolean;
- readonly asConfirmed: AccountId;
-}
-
-/** @name NftDataStructsTokenId */
-export interface NftDataStructsTokenId extends u32 {}
-
-/** @name PalletCommonAccountBasicCrossAccountIdRepr */
-export interface PalletCommonAccountBasicCrossAccountIdRepr extends Enum {
- readonly isSubstrate: boolean;
- readonly asSubstrate: AccountId;
- readonly isEthereum: boolean;
- readonly asEthereum: H160;
-}
-
-/** @name PalletNonfungibleItemData */
-export interface PalletNonfungibleItemData extends Struct {
- readonly dummyNftItemData: u32;
-}
-
-/** @name PalletRefungibleItemData */
-export interface PalletRefungibleItemData extends Struct {
- readonly dummyRftItemData: u32;
-}
-
-/** @name PalletUnqSchedulerCallSpec */
-export interface PalletUnqSchedulerCallSpec extends Struct {
- readonly dummyCallSpec: u32;
-}
-
-/** @name PalletUnqSchedulerReleases */
-export interface PalletUnqSchedulerReleases extends Struct {
- readonly dummyReleases: u32;
-}
-
-/** @name PalletUnqSchedulerScheduledV2 */
-export interface PalletUnqSchedulerScheduledV2 extends Struct {
- readonly dummyScheduledV2: u32;
-}
-
-export type PHANTOM_NFT = 'nft';
tests/src/interfaces/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/types.ts
+++ b/tests/src/interfaces/types.ts
@@ -1,6 +1,6 @@
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */
-export * from './nft/types';
+export * from './unique/types';
export * from './ethereum/types';
export * from './polkadot/types';
tests/src/interfaces/unique/definitions.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/unique/definitions.ts
@@ -0,0 +1,110 @@
+function mkDummy(name: string) {
+ return {
+ ['dummy' + name]: 'u32',
+ };
+}
+
+type RpcParam = {
+ name: string;
+ type: string;
+ isOptional?: true;
+};
+
+const CROSS_ACCOUNT_ID_TYPE = 'PalletCommonAccountBasicCrossAccountIdRepr';
+const TOKEN_ID_TYPE = 'UpDataStructsTokenId';
+
+const collectionParam = {name: 'collection', type: 'UpDataStructsCollectionId'};
+const tokenParam = {name: 'tokenId', type: TOKEN_ID_TYPE};
+const crossAccountParam = (name = 'account') => ({name, type: CROSS_ACCOUNT_ID_TYPE});
+const atParam = {name: 'at', type: 'Hash', isOptional: true};
+
+const fun = (description: string, params: RpcParam[], type: string) => ({
+ description,
+ params: [...params, atParam],
+ type,
+});
+
+export default {
+ rpc: {
+ adminlist: fun('Get admin list', [collectionParam], 'Vec<PalletCommonAccountBasicCrossAccountIdRepr>'),
+ allowlist: fun('Get allowlist', [collectionParam], 'Vec<PalletCommonAccountBasicCrossAccountIdRepr>'),
+
+ accountTokens: fun('Get tokens owned by account', [collectionParam, crossAccountParam()], 'Vec<UpDataStructsTokenId>'),
+ collectionTokens: fun('Get tokens contained in collection', [collectionParam], 'Vec<UpDataStructsTokenId>'),
+
+ lastTokenId: fun('Get last token id', [collectionParam], TOKEN_ID_TYPE),
+ accountBalance: fun('Get amount of different user tokens', [collectionParam, crossAccountParam()], 'u32'),
+ balance: fun('Get amount of specific account token', [collectionParam, crossAccountParam(), tokenParam], 'u128'),
+ allowance: fun('Get allowed amount', [collectionParam, crossAccountParam('sender'), crossAccountParam('spender'), tokenParam], 'u128'),
+ tokenOwner: fun('Get token owner', [collectionParam, tokenParam], CROSS_ACCOUNT_ID_TYPE),
+ constMetadata: fun('Get token constant metadata', [collectionParam, tokenParam], 'Vec<u8>'),
+ variableMetadata: fun('Get token variable metadata', [collectionParam, tokenParam], 'Vec<u8>'),
+ tokenExists: fun('Check if token exists', [collectionParam, tokenParam], 'bool'),
+ collectionById: fun('Get collection by specified id', [collectionParam], 'Option<UpDataStructsCollection>'),
+ collectionStats: fun('Get collection stats', [], 'UpDataStructsCollectionStats'),
+ allowed: fun('Check if user is allowed to use collection', [collectionParam, crossAccountParam()], 'bool'),
+ },
+ types: {
+ PalletCommonAccountBasicCrossAccountIdRepr: {
+ _enum: {
+ Substrate: 'AccountId',
+ Ethereum: 'H160',
+ },
+ },
+ UpDataStructsCollection: {
+ owner: 'AccountId',
+ mode: 'UpDataStructsCollectionMode',
+ access: 'UpDataStructsAccessMode',
+ name: 'Vec<u16>',
+ description: 'Vec<u16>',
+ tokenPrefix: 'Vec<u8>',
+ mintMode: 'bool',
+ offchainSchema: 'Vec<u8>',
+ schemaVersion: 'UpDataStructsSchemaVersion',
+ sponsorship: 'UpDataStructsSponsorshipState',
+ limits: 'UpDataStructsCollectionLimits',
+ variableOnChainSchema: 'Vec<u8>',
+ constOnChainSchema: 'Vec<u8>',
+ metaUpdatePermission: 'UpDataStructsMetaUpdatePermission',
+ },
+ UpDataStructsCollectionStats: {
+ created: 'u32',
+ destroyed: 'u32',
+ alive: 'u32',
+ },
+ UpDataStructsCollectionId: 'u32',
+ UpDataStructsTokenId: 'u32',
+ PalletNonfungibleItemData: mkDummy('NftItemData'),
+ PalletRefungibleItemData: mkDummy('RftItemData'),
+ UpDataStructsCollectionMode: mkDummy('CollectionMode'),
+ UpDataStructsCreateItemData: mkDummy('CreateItemData'),
+ UpDataStructsCollectionLimits: {
+ accountTokenOwnershipLimit: 'Option<u32>',
+ sponsoredDataSize: 'Option<u32>',
+ sponsoredDataRateLimit: 'Option<u32>',
+ tokenLimit: 'Option<u32>',
+ sponsorTransferTimeout: 'Option<u32>',
+ ownerCanTransfer: 'Option<bool>',
+ ownerCanDestroy: 'Option<bool>',
+ transfersEnabled: 'Option<bool>',
+ },
+ UpDataStructsMetaUpdatePermission: {
+ _enum: ['ItemOwner', 'Admin', 'None'],
+ },
+ UpDataStructsSponsorshipState: {
+ _enum: {
+ Disabled: null,
+ Unconfirmed: 'AccountId',
+ Confirmed: 'AccountId',
+ },
+ },
+ UpDataStructsAccessMode: {
+ _enum: ['Normal', 'AllowList'],
+ },
+ UpDataStructsSchemaVersion: mkDummy('SchemaVersion'),
+
+ PalletUnqSchedulerScheduledV2: mkDummy('ScheduledV2'),
+ PalletUnqSchedulerCallSpec: mkDummy('CallSpec'),
+ PalletUnqSchedulerReleases: mkDummy('Releases'),
+ },
+};
tests/src/interfaces/unique/index.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/unique/index.ts
@@ -0,0 +1,4 @@
+// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
+/* eslint-disable */
+
+export * from './types';
tests/src/interfaces/unique/types.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/unique/types.ts
@@ -0,0 +1,120 @@
+// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
+/* eslint-disable */
+
+import type { Bytes, Enum, Option, Struct, Vec, bool, u16, u32 } from '@polkadot/types';
+import type { AccountId, H160 } from '@polkadot/types/interfaces/runtime';
+
+/** @name PalletCommonAccountBasicCrossAccountIdRepr */
+export interface PalletCommonAccountBasicCrossAccountIdRepr extends Enum {
+ readonly isSubstrate: boolean;
+ readonly asSubstrate: AccountId;
+ readonly isEthereum: boolean;
+ readonly asEthereum: H160;
+}
+
+/** @name PalletNonfungibleItemData */
+export interface PalletNonfungibleItemData extends Struct {
+ readonly dummyNftItemData: u32;
+}
+
+/** @name PalletRefungibleItemData */
+export interface PalletRefungibleItemData extends Struct {
+ readonly dummyRftItemData: u32;
+}
+
+/** @name PalletUnqSchedulerCallSpec */
+export interface PalletUnqSchedulerCallSpec extends Struct {
+ readonly dummyCallSpec: u32;
+}
+
+/** @name PalletUnqSchedulerReleases */
+export interface PalletUnqSchedulerReleases extends Struct {
+ readonly dummyReleases: u32;
+}
+
+/** @name PalletUnqSchedulerScheduledV2 */
+export interface PalletUnqSchedulerScheduledV2 extends Struct {
+ readonly dummyScheduledV2: u32;
+}
+
+/** @name UpDataStructsAccessMode */
+export interface UpDataStructsAccessMode extends Enum {
+ readonly isNormal: boolean;
+ readonly isAllowList: boolean;
+}
+
+/** @name UpDataStructsCollection */
+export interface UpDataStructsCollection extends Struct {
+ readonly owner: AccountId;
+ readonly mode: UpDataStructsCollectionMode;
+ readonly access: UpDataStructsAccessMode;
+ readonly name: Vec<u16>;
+ readonly description: Vec<u16>;
+ readonly tokenPrefix: Bytes;
+ readonly mintMode: bool;
+ readonly offchainSchema: Bytes;
+ readonly schemaVersion: UpDataStructsSchemaVersion;
+ readonly sponsorship: UpDataStructsSponsorshipState;
+ readonly limits: UpDataStructsCollectionLimits;
+ readonly variableOnChainSchema: Bytes;
+ readonly constOnChainSchema: Bytes;
+ readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;
+}
+
+/** @name UpDataStructsCollectionId */
+export interface UpDataStructsCollectionId extends u32 {}
+
+/** @name UpDataStructsCollectionLimits */
+export interface UpDataStructsCollectionLimits extends Struct {
+ readonly accountTokenOwnershipLimit: Option<u32>;
+ readonly sponsoredDataSize: Option<u32>;
+ readonly sponsoredDataRateLimit: Option<u32>;
+ readonly tokenLimit: Option<u32>;
+ readonly sponsorTransferTimeout: Option<u32>;
+ readonly ownerCanTransfer: Option<bool>;
+ readonly ownerCanDestroy: Option<bool>;
+ readonly transfersEnabled: Option<bool>;
+}
+
+/** @name UpDataStructsCollectionMode */
+export interface UpDataStructsCollectionMode extends Struct {
+ readonly dummyCollectionMode: u32;
+}
+
+/** @name UpDataStructsCollectionStats */
+export interface UpDataStructsCollectionStats extends Struct {
+ readonly created: u32;
+ readonly destroyed: u32;
+ readonly alive: u32;
+}
+
+/** @name UpDataStructsCreateItemData */
+export interface UpDataStructsCreateItemData extends Struct {
+ readonly dummyCreateItemData: u32;
+}
+
+/** @name UpDataStructsMetaUpdatePermission */
+export interface UpDataStructsMetaUpdatePermission extends Enum {
+ readonly isItemOwner: boolean;
+ readonly isAdmin: boolean;
+ readonly isNone: boolean;
+}
+
+/** @name UpDataStructsSchemaVersion */
+export interface UpDataStructsSchemaVersion extends Struct {
+ readonly dummySchemaVersion: u32;
+}
+
+/** @name UpDataStructsSponsorshipState */
+export interface UpDataStructsSponsorshipState extends Enum {
+ readonly isDisabled: boolean;
+ readonly isUnconfirmed: boolean;
+ readonly asUnconfirmed: AccountId;
+ readonly isConfirmed: boolean;
+ readonly asConfirmed: AccountId;
+}
+
+/** @name UpDataStructsTokenId */
+export interface UpDataStructsTokenId extends u32 {}
+
+export type PHANTOM_UNIQUE = 'unique';
tests/src/pallet-presence.test.tsdiffbeforeafterboth--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -35,10 +35,10 @@
'cumulusxcm',
'dmpqueue',
'inflation',
- 'nft',
+ 'unique',
'nonfungible',
'refungible',
- 'scheduler',
+ //'scheduler',
'charging',
];
tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth--- a/tests/src/removeCollectionAdmin.test.ts
+++ b/tests/src/removeCollectionAdmin.test.ts
@@ -22,14 +22,14 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.deep.eq(alice.address);
// first - add collection admin Bob
- const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await submitTransactionAsync(alice, addAdminTx);
const adminListAfterAddAdmin = await getAdminList(api, collectionId);
expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
// then remove bob from admins of collection
- const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await submitTransactionAsync(alice, removeAdminTx);
const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
@@ -46,17 +46,17 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.eq(alice.address);
// first - add collection admin Bob
- const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await submitTransactionAsync(alice, addAdminTx);
- const addAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
+ const addAdminTx2 = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
await submitTransactionAsync(alice, addAdminTx2);
const adminListAfterAddAdmin = await getAdminList(api, collectionId);
expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
// then remove bob from admins of collection
- const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await submitTransactionAsync(charlie, removeAdminTx);
const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
@@ -72,7 +72,7 @@
const adminListBeforeAddAdmin = await getAdminList(api, collectionId);
expect(adminListBeforeAddAdmin).to.have.lengthOf(0);
- const tx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(alice.address));
+ const tx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(alice.address));
await submitTransactionAsync(alice, tx);
});
});
@@ -86,7 +86,7 @@
const alice = privateKey('//Alice');
const bob = privateKey('//Bob');
- const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;
// Verifying that nothing bad happened (network is live, new collections can be created, etc.)
@@ -103,7 +103,7 @@
await destroyCollectionExpectSuccess(collectionId);
- const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;
// Verifying that nothing bad happened (network is live, new collections can be created, etc.)
@@ -118,10 +118,10 @@
const bob = privateKey('//Bob');
const charlie = privateKey('//Charlie');
- const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await submitTransactionAsync(alice, addAdminTx);
- const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+ const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
await expect(submitTransactionExpectFailAsync(charlie, changeOwnerTx)).to.be.rejected;
// Verifying that nothing bad happened (network is live, new collections can be created, etc.)
tests/src/removeCollectionSponsor.test.tsdiffbeforeafterboth--- a/tests/src/removeCollectionSponsor.test.ts
+++ b/tests/src/removeCollectionSponsor.test.ts
@@ -54,7 +54,7 @@
// Transfer this tokens from unused address to Alice - should fail
const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
- const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(alice.address), collectionId, itemId, 0);
+ const zeroToAlice = api.tx.unique.transfer(normalizeAccountId(alice.address), collectionId, itemId, 0);
const badTransaction = async function () {
await submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);
};
tests/src/scheduler.test.tsdiffbeforeafterboth--- a/tests/src/scheduler.test.ts
+++ b/tests/src/scheduler.test.ts
@@ -17,7 +17,7 @@
chai.use(chaiAsPromised);
-describe('Integration Test scheduler base transaction', () => {
+describe.skip('Integration Test scheduler base transaction', () => {
it('User can transfer owned token with delay (scheduler)', async () => {
await usingApi(async () => {
const alice = privateKey('//Alice');
tests/src/setCollectionLimits.test.tsdiffbeforeafterboth--- a/tests/src/setCollectionLimits.test.ts
+++ b/tests/src/setCollectionLimits.test.ts
@@ -41,7 +41,7 @@
});
it('execute setCollectionLimits with predefined params ', async () => {
await usingApi(async (api: ApiPromise) => {
- tx = api.tx.nft.setCollectionLimits(
+ tx = api.tx.unique.setCollectionLimits(
collectionIdForTesting,
{
accountTokenOwnershipLimit: accountTokenOwnershipLimit,
@@ -82,7 +82,7 @@
};
// The first time
- const tx1 = api.tx.nft.setCollectionLimits(
+ const tx1 = api.tx.unique.setCollectionLimits(
collectionIdForTesting,
collectionLimits,
);
@@ -93,7 +93,7 @@
expect(collectionInfo1.limits.tokenLimit.unwrap().toNumber()).to.be.equal(tokenLimit);
// The second time
- const tx2 = api.tx.nft.setCollectionLimits(
+ const tx2 = api.tx.unique.setCollectionLimits(
collectionIdForTesting,
collectionLimits,
);
@@ -121,7 +121,7 @@
await usingApi(async (api: ApiPromise) => {
const collectionCount = await getCreatedCollectionCount(api);
const nonExistedCollectionId = collectionCount + 1;
- tx = api.tx.nft.setCollectionLimits(
+ tx = api.tx.unique.setCollectionLimits(
nonExistedCollectionId,
{
accountTokenOwnershipLimit,
@@ -135,7 +135,7 @@
});
it('execute setCollectionLimits from user who is not owner of this collection', async () => {
await usingApi(async (api: ApiPromise) => {
- tx = api.tx.nft.setCollectionLimits(
+ tx = api.tx.unique.setCollectionLimits(
collectionIdForTesting,
{
accountTokenOwnershipLimit,
@@ -150,7 +150,7 @@
it('execute setCollectionLimits from admin collection', async () => {
await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);
await usingApi(async (api: ApiPromise) => {
- tx = api.tx.nft.setCollectionLimits(
+ tx = api.tx.unique.setCollectionLimits(
collectionIdForTesting,
{
accountTokenOwnershipLimit,
tests/src/setConstOnChainSchema.test.tsdiffbeforeafterboth--- a/tests/src/setConstOnChainSchema.test.ts
+++ b/tests/src/setConstOnChainSchema.test.ts
@@ -41,7 +41,7 @@
const collectionId = await createCollectionExpectSuccess();
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.eq(alice.address);
- const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+ const setShema = api.tx.unique.setConstOnChainSchema(collectionId, shema);
await submitTransactionAsync(alice, setShema);
});
});
@@ -52,7 +52,7 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.eq(alice.address);
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+ const setShema = api.tx.unique.setConstOnChainSchema(collectionId, shema);
await submitTransactionAsync(bob, setShema);
});
});
@@ -60,7 +60,7 @@
it('Checking collection data using the ConstOnChainSchema parameter', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+ const setShema = api.tx.unique.setConstOnChainSchema(collectionId, shema);
await submitTransactionAsync(alice, setShema);
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.constOnChainSchema.toString()).to.be.eq(shema);
@@ -74,7 +74,7 @@
await usingApi(async (api) => {
// tslint:disable-next-line: radix
const collectionId = await getCreatedCollectionCount(api) + 1;
- const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+ const setShema = api.tx.unique.setConstOnChainSchema(collectionId, shema);
await expect(submitTransactionExpectFailAsync(alice, setShema)).to.be.rejected;
});
});
@@ -83,7 +83,7 @@
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
await destroyCollectionExpectSuccess(collectionId);
- const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+ const setShema = api.tx.unique.setConstOnChainSchema(collectionId, shema);
await expect(submitTransactionExpectFailAsync(alice, setShema)).to.be.rejected;
});
});
@@ -91,7 +91,7 @@
it('Set invalid data in schema (size too large:> 1024b)', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const setShema = api.tx.nft.setConstOnChainSchema(collectionId, largeShema);
+ const setShema = api.tx.unique.setConstOnChainSchema(collectionId, largeShema);
await expect(submitTransactionExpectFailAsync(alice, setShema)).to.be.rejected;
});
});
@@ -101,7 +101,7 @@
const collectionId = await createCollectionExpectSuccess();
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.eq(alice.address);
- const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+ const setShema = api.tx.unique.setConstOnChainSchema(collectionId, shema);
await expect(submitTransactionExpectFailAsync(bob, setShema)).to.be.rejected;
});
});
tests/src/setPublicAccessMode.test.tsdiffbeforeafterboth--- a/tests/src/setPublicAccessMode.test.ts
+++ b/tests/src/setPublicAccessMode.test.ts
@@ -51,7 +51,7 @@
const collectionId = await createCollectionExpectSuccess();
await enableAllowListExpectSuccess(alice, collectionId);
await enablePublicMintingExpectSuccess(alice, collectionId);
- const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(bob.address), 'NFT');
+ const tx = api.tx.unique.createItem(collectionId, normalizeAccountId(bob.address), 'NFT');
await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
});
});
@@ -62,7 +62,7 @@
await usingApi(async (api: ApiPromise) => {
// tslint:disable-next-line: radix
const collectionId = await getCreatedCollectionCount(api) + 1;
- const tx = api.tx.nft.setPublicAccessMode(collectionId, 'AllowList');
+ const tx = api.tx.unique.setPublicAccessMode(collectionId, 'AllowList');
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
@@ -72,7 +72,7 @@
// tslint:disable-next-line: no-bitwise
const collectionId = await createCollectionExpectSuccess();
await destroyCollectionExpectSuccess(collectionId);
- const tx = api.tx.nft.setPublicAccessMode(collectionId, 'AllowList');
+ const tx = api.tx.unique.setPublicAccessMode(collectionId, 'AllowList');
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
@@ -89,7 +89,7 @@
await usingApi(async (api: ApiPromise) => {
// tslint:disable-next-line: no-bitwise
const collectionId = await createCollectionExpectSuccess();
- const tx = api.tx.nft.setPublicAccessMode(collectionId, 'AllowList');
+ const tx = api.tx.unique.setPublicAccessMode(collectionId, 'AllowList');
await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
});
});
@@ -107,7 +107,7 @@
// tslint:disable-next-line: no-bitwise
const collectionId = await createCollectionExpectSuccess();
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- const tx = api.tx.nft.setPublicAccessMode(collectionId, 'AllowList');
+ const tx = api.tx.unique.setPublicAccessMode(collectionId, 'AllowList');
await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
});
});
tests/src/setSchemaVersion.test.tsdiffbeforeafterboth--- a/tests/src/setSchemaVersion.test.ts
+++ b/tests/src/setSchemaVersion.test.ts
@@ -41,7 +41,7 @@
it('execute setSchemaVersion with image url and unique ', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
- tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');
+ tx = api.tx.unique.setSchemaVersion(collectionIdForTesting, 'Unique');
const events = await submitTransactionAsync(alice, tx);
const result = getCreateItemResult(events);
const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
@@ -70,7 +70,7 @@
});
it('execute setSchemaVersion with image url and unique ', async () => {
await usingApi(async (api: ApiPromise) => {
- tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');
+ tx = api.tx.unique.setSchemaVersion(collectionIdForTesting, 'Unique');
const events = await submitTransactionAsync(bob, tx);
const result = getCreateItemResult(events);
const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
@@ -85,7 +85,7 @@
it('validate schema version with just entered data', async () => {
await usingApi(async (api: ApiPromise) => {
- tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');
+ tx = api.tx.unique.setSchemaVersion(collectionIdForTesting, 'ImageURL');
const events = await submitTransactionAsync(bob, tx);
const result = getCreateItemResult(events);
const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
@@ -114,20 +114,20 @@
await usingApi(async (api: ApiPromise) => {
const collectionCount = await getCreatedCollectionCount(api);
const nonExistedCollectionId = collectionCount + 1;
- tx = api.tx.nft.setSchemaVersion(nonExistedCollectionId, 'ImageURL');
+ tx = api.tx.unique.setSchemaVersion(nonExistedCollectionId, 'ImageURL');
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
it('execute setSchemaVersion for deleted collection', async () => {
await usingApi(async (api: ApiPromise) => {
await destroyCollectionExpectSuccess(collectionIdForTesting);
- tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');
+ tx = api.tx.unique.setSchemaVersion(collectionIdForTesting, 'ImageURL');
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
it('Regular user can`t execute setSchemaVersion with image url and unique ', async () => {
await usingApi(async (api: ApiPromise) => {
- tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');
+ tx = api.tx.unique.setSchemaVersion(collectionIdForTesting, 'Unique');
await expect(submitTransactionAsync(charlie, tx)).to.be.rejected;
});
});
tests/src/setVariableOnChainSchema.test.tsdiffbeforeafterboth--- a/tests/src/setVariableOnChainSchema.test.ts
+++ b/tests/src/setVariableOnChainSchema.test.ts
@@ -41,7 +41,7 @@
const collectionId = await createCollectionExpectSuccess();
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.eq(alice.address);
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, schema);
await submitTransactionAsync(alice, setSchema);
});
});
@@ -49,7 +49,7 @@
it('Checking collection data using the setVariableOnChainSchema parameter', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, schema);
await submitTransactionAsync(alice, setSchema);
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.variableOnChainSchema.toString()).to.be.eq(schema);
@@ -66,7 +66,7 @@
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.eq(alice.address);
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, schema);
await submitTransactionAsync(bob, setSchema);
});
});
@@ -75,7 +75,7 @@
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, schema);
await submitTransactionAsync(bob, setSchema);
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.variableOnChainSchema.toString()).to.be.eq(schema);
@@ -90,7 +90,7 @@
await usingApi(async (api) => {
// tslint:disable-next-line: radix
const collectionId = await getCreatedCollectionCount(api) + 1;
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, schema);
await expect(submitTransactionExpectFailAsync(alice, setSchema)).to.be.rejected;
});
});
@@ -99,7 +99,7 @@
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
await destroyCollectionExpectSuccess(collectionId);
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, schema);
await expect(submitTransactionExpectFailAsync(alice, setSchema)).to.be.rejected;
});
});
@@ -107,7 +107,7 @@
it('Set invalid data in schema (size too large:> 1024b)', async () => {
await usingApi(async (api) => {
const collectionId = await createCollectionExpectSuccess();
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, largeSchema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, largeSchema);
await expect(submitTransactionExpectFailAsync(alice, setSchema)).to.be.rejected;
});
});
@@ -117,7 +117,7 @@
const collectionId = await createCollectionExpectSuccess();
const collection = await queryCollectionExpectSuccess(api, collectionId);
expect(collection.owner.toString()).to.be.eq(alice.address);
- const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+ const setSchema = api.tx.unique.setVariableOnChainSchema(collectionId, schema);
await expect(submitTransactionExpectFailAsync(bob, setSchema)).to.be.rejected;
});
});
tests/src/substrate/substrate-api.tsdiffbeforeafterboth--- a/tests/src/substrate/substrate-api.ts
+++ b/tests/src/substrate/substrate-api.ts
@@ -24,7 +24,7 @@
},
},
rpc: {
- nft: defs.nft.rpc,
+ unique: defs.unique.rpc,
},
};
}
tests/src/toggleContractAllowList.test.tsdiffbeforeafterboth--- a/tests/src/toggleContractAllowList.test.ts
+++ b/tests/src/toggleContractAllowList.test.ts
@@ -27,10 +27,10 @@
await usingApi(async api => {
const [contract, deployer] = await deployFlipper(api);
- const enabledBefore = (await api.query.nft.contractAllowListEnabled(contract.address)).toJSON();
- const enableAllowListTx = api.tx.nft.toggleContractAllowList(contract.address, true);
+ const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();
+ const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);
const enableEvents = await submitTransactionAsync(deployer, enableAllowListTx);
- const enabled = (await api.query.nft.contractAllowListEnabled(contract.address)).toJSON();
+ const enabled = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();
expect(getGenericResult(enableEvents).success).to.be.true;
expect(enabledBefore).to.be.false;
@@ -60,7 +60,7 @@
await deployerCanFlip();
flipValueBefore = await getFlipValue(contract, deployer);
- const enableAllowListTx = api.tx.nft.toggleContractAllowList(contract.address, true);
+ const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);
await submitTransactionAsync(deployer, enableAllowListTx);
const flipWithEnabledAllowList = contract.tx.flip(value, gasLimit);
await expect(submitTransactionExpectFailAsync(bob, flipWithEnabledAllowList)).to.be.rejected;
@@ -70,7 +70,7 @@
await deployerCanFlip();
flipValueBefore = await getFlipValue(contract, deployer);
- const addBobToAllowListTx = api.tx.nft.addToContractAllowList(contract.address, bob.address);
+ const addBobToAllowListTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);
await submitTransactionAsync(deployer, addBobToAllowListTx);
const flipWithAllowlistedBob = contract.tx.flip(value, gasLimit);
await submitTransactionAsync(bob, flipWithAllowlistedBob);
@@ -80,7 +80,7 @@
await deployerCanFlip();
flipValueBefore = await getFlipValue(contract, deployer);
- const removeBobFromAllowListTx = api.tx.nft.removeFromContractAllowList(contract.address, bob.address);
+ const removeBobFromAllowListTx = api.tx.unique.removeFromContractAllowList(contract.address, bob.address);
await submitTransactionAsync(deployer, removeBobFromAllowListTx);
const bobRemoved = contract.tx.flip(value, gasLimit);
await expect(submitTransactionExpectFailAsync(bob, bobRemoved)).to.be.rejected;
@@ -90,7 +90,7 @@
await deployerCanFlip();
flipValueBefore = await getFlipValue(contract, deployer);
- const disableAllowListTx = api.tx.nft.toggleContractAllowList(contract.address, false);
+ const disableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, false);
await submitTransactionAsync(deployer, disableAllowListTx);
const allowListDisabledFlip = contract.tx.flip(value, gasLimit);
await submitTransactionAsync(bob, allowListDisabledFlip);
@@ -104,12 +104,12 @@
await usingApi(async api => {
const [contract, deployer] = await deployFlipper(api);
- const enabledBefore = (await api.query.nft.contractAllowListEnabled(contract.address)).toJSON();
- const enableAllowListTx = api.tx.nft.toggleContractAllowList(contract.address, true);
+ const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();
+ const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);
const enableEvents = await submitTransactionAsync(deployer, enableAllowListTx);
- const enabled = (await api.query.nft.contractAllowListEnabled(contract.address)).toJSON();
+ const enabled = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();
const enableAgainEvents = await submitTransactionAsync(deployer, enableAllowListTx);
- const enabledAgain = (await api.query.nft.contractAllowListEnabled(contract.address)).toJSON();
+ const enabledAgain = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();
expect(getGenericResult(enableEvents).success).to.be.true;
expect(enabledBefore).to.be.false;
@@ -128,10 +128,10 @@
const alice = privateKey('//Alice');
const bobGuineaPig = privateKey('//Bob');
- const enabledBefore = (await api.query.nft.contractAllowListEnabled(bobGuineaPig.address)).toJSON();
- const enableAllowListTx = api.tx.nft.toggleContractAllowList(bobGuineaPig.address, true);
+ const enabledBefore = (await api.query.unique.contractAllowListEnabled(bobGuineaPig.address)).toJSON();
+ const enableAllowListTx = api.tx.unique.toggleContractAllowList(bobGuineaPig.address, true);
await expect(submitTransactionExpectFailAsync(alice, enableAllowListTx)).to.be.rejected;
- const enabled = (await api.query.nft.contractAllowListEnabled(bobGuineaPig.address)).toJSON();
+ const enabled = (await api.query.unique.contractAllowListEnabled(bobGuineaPig.address)).toJSON();
expect(enabledBefore).to.be.false;
expect(enabled).to.be.false;
@@ -143,10 +143,10 @@
const bob = privateKey('//Bob');
const [contract] = await deployFlipper(api);
- const enabledBefore = (await api.query.nft.contractAllowListEnabled(contract.address)).toJSON();
- const enableAllowListTx = api.tx.nft.toggleContractAllowList(contract.address, true);
+ const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();
+ const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);
await expect(submitTransactionExpectFailAsync(bob, enableAllowListTx)).to.be.rejected;
- const enabled = (await api.query.nft.contractAllowListEnabled(contract.address)).toJSON();
+ const enabled = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();
expect(enabledBefore).to.be.false;
expect(enabled).to.be.false;
tests/src/transfer.test.tsdiffbeforeafterboth--- a/tests/src/transfer.test.ts
+++ b/tests/src/transfer.test.ts
@@ -249,7 +249,7 @@
const nftCollectionId = await createCollectionExpectSuccess();
const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
- const transferTx = api.tx.nft.transfer(normalizeAccountId(bob), nftCollectionId, newNftTokenId, 0);
+ const transferTx = api.tx.unique.transfer(normalizeAccountId(bob), nftCollectionId, newNftTokenId, 0);
await submitTransactionAsync(alice, transferTx);
const address = normalizeAccountId(await getTokenOwner(api, nftCollectionId, newNftTokenId));
@@ -264,7 +264,7 @@
const balanceBeforeAlice = await getTokenBalance(api, reFungibleCollectionId, normalizeAccountId(alice), newReFungibleTokenId);
const balanceBeforeBob = await getTokenBalance(api, reFungibleCollectionId, normalizeAccountId(bob), newReFungibleTokenId);
- const transferTx = api.tx.nft.transfer(normalizeAccountId(bob), reFungibleCollectionId, newReFungibleTokenId, 0);
+ const transferTx = api.tx.unique.transfer(normalizeAccountId(bob), reFungibleCollectionId, newReFungibleTokenId, 0);
await submitTransactionAsync(alice, transferTx);
const balanceAfterAlice = await getTokenBalance(api, reFungibleCollectionId, normalizeAccountId(alice), newReFungibleTokenId);
@@ -282,7 +282,7 @@
const balanceBeforeAlice = await getTokenBalance(api, fungibleCollectionId, normalizeAccountId(alice), newFungibleTokenId);
const balanceBeforeBob = await getTokenBalance(api, fungibleCollectionId, normalizeAccountId(bob), newFungibleTokenId);
- const transferTx = api.tx.nft.transfer(normalizeAccountId(bob), fungibleCollectionId, newFungibleTokenId, 0);
+ const transferTx = api.tx.unique.transfer(normalizeAccountId(bob), fungibleCollectionId, newFungibleTokenId, 0);
await submitTransactionAsync(alice, transferTx);
const balanceAfterAlice = await getTokenBalance(api, fungibleCollectionId, normalizeAccountId(alice), newFungibleTokenId);
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -11,7 +11,7 @@
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import {alicesPublicKey} from '../accounts';
-import {NftDataStructsCollection} from '../interfaces';
+import {UpDataStructsCollection} from '../interfaces';
import privateKey from '../substrate/privateKey';
import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from '../substrate/substrate-api';
import {hexToStr, strToUTF16, utf16ToStr} from './util';
@@ -105,7 +105,7 @@
}
interface IGetMessage {
- checkMsgNftMethod: string;
+ checkMsgUnqMethod: string;
checkMsgTrsMethod: string;
checkMsgSysMethod: string;
}
@@ -133,13 +133,13 @@
variableData: number[];
}
-export function nftEventMessage(events: EventRecord[]): IGetMessage {
- let checkMsgNftMethod = '';
+export function uniqueEventMessage(events: EventRecord[]): IGetMessage {
+ let checkMsgUnqMethod = '';
let checkMsgTrsMethod = '';
let checkMsgSysMethod = '';
events.forEach(({event: {method, section}}) => {
if (section === 'common') {
- checkMsgNftMethod = method;
+ checkMsgUnqMethod = method;
} else if (section === 'treasury') {
checkMsgTrsMethod = method;
} else if (section === 'system') {
@@ -147,7 +147,7 @@
} else { return null; }
});
const result: IGetMessage = {
- checkMsgNftMethod,
+ checkMsgUnqMethod,
checkMsgTrsMethod,
checkMsgSysMethod,
};
@@ -283,7 +283,7 @@
modeprm = {refungible: null};
}
- const tx = api.tx.nft.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm as any);
+ const tx = api.tx.unique.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm as any);
const events = await submitTransactionAsync(alicePrivateKey, tx);
const result = getCreateCollectionResult(events);
@@ -329,7 +329,7 @@
// Run the CreateCollection transaction
const alicePrivateKey = privateKey('//Alice');
- const tx = api.tx.nft.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm as any);
+ const tx = api.tx.unique.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm as any);
const events = await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;
const result = getCreateCollectionResult(events);
@@ -356,7 +356,7 @@
}
export async function getAllowance(api: ApiPromise, collectionId: number, owner: CrossAccountId | string, approved: CrossAccountId | string, tokenId: number) {
- return (await api.rpc.nft.allowance(collectionId, normalizeAccountId(owner), normalizeAccountId(approved), tokenId)).toBigInt();
+ return (await api.rpc.unique.allowance(collectionId, normalizeAccountId(owner), normalizeAccountId(approved), tokenId)).toBigInt();
}
export function findUnusedAddresses(api: ApiPromise, amount: number): Promise<IKeyringPair[]> {
@@ -383,7 +383,7 @@
await usingApi(async (api) => {
// Run the DestroyCollection transaction
const alicePrivateKey = privateKey(senderSeed);
- const tx = api.tx.nft.destroyCollection(collectionId);
+ const tx = api.tx.unique.destroyCollection(collectionId);
await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;
});
}
@@ -392,7 +392,7 @@
await usingApi(async (api) => {
// Run the DestroyCollection transaction
const alicePrivateKey = privateKey(senderSeed);
- const tx = api.tx.nft.destroyCollection(collectionId);
+ const tx = api.tx.unique.destroyCollection(collectionId);
const events = await submitTransactionAsync(alicePrivateKey, tx);
const result = getDestroyResult(events);
expect(result).to.be.true;
@@ -404,7 +404,7 @@
export async function setCollectionLimitsExpectSuccess(sender: IKeyringPair, collectionId: number, limits: any) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setCollectionLimits(collectionId, limits);
+ const tx = api.tx.unique.setCollectionLimits(collectionId, limits);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -414,7 +414,7 @@
export async function setCollectionLimitsExpectFailure(sender: IKeyringPair, collectionId: number, limits: any) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setCollectionLimits(collectionId, limits);
+ const tx = api.tx.unique.setCollectionLimits(collectionId, limits);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -427,7 +427,7 @@
// Run the transaction
const senderPrivateKey = privateKey(sender);
- const tx = api.tx.nft.setCollectionSponsor(collectionId, sponsor);
+ const tx = api.tx.unique.setCollectionSponsor(collectionId, sponsor);
const events = await submitTransactionAsync(senderPrivateKey, tx);
const result = getGenericResult(events);
@@ -447,7 +447,7 @@
// Run the transaction
const alicePrivateKey = privateKey(sender);
- const tx = api.tx.nft.removeCollectionSponsor(collectionId);
+ const tx = api.tx.unique.removeCollectionSponsor(collectionId);
const events = await submitTransactionAsync(alicePrivateKey, tx);
const result = getGenericResult(events);
@@ -465,7 +465,7 @@
// Run the transaction
const alicePrivateKey = privateKey(senderSeed);
- const tx = api.tx.nft.removeCollectionSponsor(collectionId);
+ const tx = api.tx.unique.removeCollectionSponsor(collectionId);
await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;
});
}
@@ -475,7 +475,7 @@
// Run the transaction
const alicePrivateKey = privateKey(senderSeed);
- const tx = api.tx.nft.setCollectionSponsor(collectionId, sponsor);
+ const tx = api.tx.unique.setCollectionSponsor(collectionId, sponsor);
await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;
});
}
@@ -485,7 +485,7 @@
// Run the transaction
const sender = privateKey(senderSeed);
- const tx = api.tx.nft.confirmSponsorship(collectionId);
+ const tx = api.tx.unique.confirmSponsorship(collectionId);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -506,7 +506,7 @@
// Run the transaction
const sender = privateKey(senderSeed);
- const tx = api.tx.nft.confirmSponsorship(collectionId);
+ const tx = api.tx.unique.confirmSponsorship(collectionId);
await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
});
}
@@ -514,7 +514,7 @@
export async function setMetadataUpdatePermissionFlagExpectSuccess(sender: IKeyringPair, collectionId: number, flag: string) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag as any);
+ const tx = api.tx.unique.setMetaUpdatePermissionFlag(collectionId, flag as any);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -525,7 +525,7 @@
export async function setMetadataUpdatePermissionFlagExpectFailure(sender: IKeyringPair, collectionId: number, flag: string) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag as any);
+ const tx = api.tx.unique.setMetaUpdatePermissionFlag(collectionId, flag as any);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -535,7 +535,7 @@
export async function enableContractSponsoringExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, enable: boolean) {
await usingApi(async (api) => {
- const tx = api.tx.nft.enableContractSponsoring(contractAddress, enable);
+ const tx = api.tx.unique.enableContractSponsoring(contractAddress, enable);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -545,7 +545,7 @@
export async function enableContractSponsoringExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, enable: boolean) {
await usingApi(async (api) => {
- const tx = api.tx.nft.enableContractSponsoring(contractAddress, enable);
+ const tx = api.tx.unique.enableContractSponsoring(contractAddress, enable);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -557,7 +557,7 @@
await usingApi(async (api) => {
- const tx = api.tx.nft.setTransfersEnabledFlag (collectionId, enabled);
+ const tx = api.tx.unique.setTransfersEnabledFlag (collectionId, enabled);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -569,7 +569,7 @@
await usingApi(async (api) => {
- const tx = api.tx.nft.setTransfersEnabledFlag (collectionId, enabled);
+ const tx = api.tx.unique.setTransfersEnabledFlag (collectionId, enabled);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -579,7 +579,7 @@
export async function setContractSponsoringRateLimitExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, rateLimit: number) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setContractSponsoringRateLimit(contractAddress, rateLimit);
+ const tx = api.tx.unique.setContractSponsoringRateLimit(contractAddress, rateLimit);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -589,7 +589,7 @@
export async function setContractSponsoringRateLimitExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, rateLimit: number) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setContractSponsoringRateLimit(contractAddress, rateLimit);
+ const tx = api.tx.unique.setContractSponsoringRateLimit(contractAddress, rateLimit);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -599,7 +599,7 @@
export async function toggleContractAllowlistExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, value = true) {
await usingApi(async (api) => {
- const tx = api.tx.nft.toggleContractAllowList(contractAddress, value);
+ const tx = api.tx.unique.toggleContractAllowList(contractAddress, value);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -610,14 +610,14 @@
export async function isAllowlistedInContract(contractAddress: AccountId | string, user: string) {
let allowlisted = false;
await usingApi(async (api) => {
- allowlisted = (await api.query.nft.contractAllowList(contractAddress, user)).toJSON() as boolean;
+ allowlisted = (await api.query.unique.contractAllowList(contractAddress, user)).toJSON() as boolean;
});
return allowlisted;
}
export async function addToContractAllowListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {
await usingApi(async (api) => {
- const tx = api.tx.nft.addToContractAllowList(contractAddress.toString(), user.toString());
+ const tx = api.tx.unique.addToContractAllowList(contractAddress.toString(), user.toString());
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -627,7 +627,7 @@
export async function removeFromContractAllowListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {
await usingApi(async (api) => {
- const tx = api.tx.nft.removeFromContractAllowList(contractAddress.toString(), user.toString());
+ const tx = api.tx.unique.removeFromContractAllowList(contractAddress.toString(), user.toString());
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -637,7 +637,7 @@
export async function removeFromContractAllowListExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {
await usingApi(async (api) => {
- const tx = api.tx.nft.removeFromContractAllowList(contractAddress.toString(), user.toString());
+ const tx = api.tx.unique.removeFromContractAllowList(contractAddress.toString(), user.toString());
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -647,7 +647,7 @@
export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
+ const tx = api.tx.unique.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -657,14 +657,14 @@
export async function setVariableMetaDataExpectFailure(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
+ const tx = api.tx.unique.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
});
}
export async function setOffchainSchemaExpectSuccess(sender: IKeyringPair, collectionId: number, data: number[]) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));
+ const tx = api.tx.unique.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -674,7 +674,7 @@
export async function setOffchainSchemaExpectFailure(sender: IKeyringPair, collectionId: number, data: number[]) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));
+ const tx = api.tx.unique.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));
await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
});
}
@@ -700,7 +700,7 @@
// if burning token by admin - use adminButnItemExpectSuccess
expect(balanceBefore >= BigInt(value)).to.be.true;
- const tx = api.tx.nft.burnItem(collectionId, tokenId, value);
+ const tx = api.tx.unique.burnItem(collectionId, tokenId, value);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -716,8 +716,8 @@
tokenId: number, owner: IKeyringPair, approved: CrossAccountId | string, amount: number | bigint = 1,
) {
await usingApi(async (api: ApiPromise) => {
- const approveNftTx = api.tx.nft.approve(normalizeAccountId(approved), collectionId, tokenId, amount);
- const events = await submitTransactionAsync(owner, approveNftTx);
+ const approveUniqueTx = api.tx.unique.approve(normalizeAccountId(approved), collectionId, tokenId, amount);
+ const events = await submitTransactionAsync(owner, approveUniqueTx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -730,8 +730,8 @@
tokenId: number, admin: IKeyringPair, owner: CrossAccountId | string, approved: CrossAccountId | string, amount: number | bigint = 1,
) {
await usingApi(async (api: ApiPromise) => {
- const approveNftTx = api.tx.nft.approve(normalizeAccountId(approved), collectionId, tokenId, amount);
- const events = await submitTransactionAsync(admin, approveNftTx);
+ const approveUniqueTx = api.tx.unique.approve(normalizeAccountId(approved), collectionId, tokenId, amount);
+ const events = await submitTransactionAsync(admin, approveUniqueTx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -755,7 +755,7 @@
if (type === 'Fungible') {
balanceBefore = await getBalance(api, collectionId, to, tokenId);
}
- const transferFromTx = api.tx.nft.transferFrom(normalizeAccountId(accountFrom), to, collectionId, tokenId, value);
+ const transferFromTx = api.tx.unique.transferFrom(normalizeAccountId(accountFrom), to, collectionId, tokenId, value);
const events = await submitTransactionAsync(accountApproved, transferFromTx);
const result = getCreateItemResult(events);
// tslint:disable-next-line:no-unused-expression
@@ -783,7 +783,7 @@
value: number | bigint = 1,
) {
await usingApi(async (api: ApiPromise) => {
- const transferFromTx = api.tx.nft.transferFrom(normalizeAccountId(accountFrom.address), normalizeAccountId(accountTo.address), collectionId, tokenId, value);
+ const transferFromTx = api.tx.unique.transferFrom(normalizeAccountId(accountFrom.address), normalizeAccountId(accountTo.address), collectionId, tokenId, value);
const events = await expect(submitTransactionExpectFailAsync(accountApproved, transferFromTx)).to.be.rejected;
const result = getCreateCollectionResult(events);
// tslint:disable-next-line:no-unused-expression
@@ -803,7 +803,7 @@
export async function addCollectionAdminExpectSuccess(sender: IKeyringPair, collectionId: number, address: string | CrossAccountId) {
await usingApi(async (api) => {
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(address));
+ const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(address));
const events = await submitTransactionAsync(sender, changeAdminTx);
const result = getCreateCollectionResult(events);
expect(result.success).to.be.true;
@@ -835,7 +835,7 @@
const expectedBlockNumber = blockNumber + blockSchedule;
expect(blockNumber).to.be.greaterThan(0);
- const transferTx = api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);
+ const transferTx = api.tx.unique.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);
const scheduleTx = api.tx.scheduler.schedule(expectedBlockNumber, null, 0, transferTx as any);
await submitTransactionAsync(sender, scheduleTx);
@@ -871,7 +871,7 @@
if (type === 'Fungible') {
balanceBefore = await getBalance(api, collectionId, to, tokenId);
}
- const transferTx = api.tx.nft.transfer(to, collectionId, tokenId, value);
+ const transferTx = api.tx.unique.transfer(to, collectionId, tokenId, value);
const events = await submitTransactionAsync(sender, transferTx);
const result = getTransferResult(events);
// tslint:disable-next-line:no-unused-expression
@@ -903,7 +903,7 @@
value: number | bigint = 1,
) {
await usingApi(async (api: ApiPromise) => {
- const transferTx = api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);
+ const transferTx = api.tx.unique.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);
const events = await expect(submitTransactionExpectFailAsync(sender, transferTx)).to.be.rejected;
const result = getGenericResult(events);
// if (events && Array.isArray(events)) {
@@ -920,8 +920,8 @@
tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number | bigint = 1,
) {
await usingApi(async (api: ApiPromise) => {
- const approveNftTx = api.tx.nft.approve(normalizeAccountId(approved.address), collectionId, tokenId, amount);
- const events = await expect(submitTransactionExpectFailAsync(owner, approveNftTx)).to.be.rejected;
+ const approveUniqueTx = api.tx.unique.approve(normalizeAccountId(approved.address), collectionId, tokenId, amount);
+ const events = await expect(submitTransactionExpectFailAsync(owner, approveUniqueTx)).to.be.rejected;
const result = getCreateCollectionResult(events);
// tslint:disable-next-line:no-unused-expression
expect(result.success).to.be.false;
@@ -934,47 +934,47 @@
owner: string | CrossAccountId,
token: number,
): Promise<bigint> {
- return (await api.rpc.nft.balance(collectionId, normalizeAccountId(owner), token)).toBigInt();
+ return (await api.rpc.unique.balance(collectionId, normalizeAccountId(owner), token)).toBigInt();
}
export async function getTokenOwner(
api: ApiPromise,
collectionId: number,
token: number,
): Promise<CrossAccountId> {
- return normalizeAccountId((await api.rpc.nft.tokenOwner(collectionId, token)).toJSON() as any);
+ return normalizeAccountId((await api.rpc.unique.tokenOwner(collectionId, token)).toJSON() as any);
}
export async function isTokenExists(
api: ApiPromise,
collectionId: number,
token: number,
): Promise<boolean> {
- return (await api.rpc.nft.tokenExists(collectionId, token)).toJSON();
+ return (await api.rpc.unique.tokenExists(collectionId, token)).toJSON();
}
export async function getLastTokenId(
api: ApiPromise,
collectionId: number,
): Promise<number> {
- return (await api.rpc.nft.lastTokenId(collectionId)).toJSON();
+ return (await api.rpc.unique.lastTokenId(collectionId)).toJSON();
}
export async function getAdminList(
api: ApiPromise,
collectionId: number,
): Promise<string[]> {
- return (await api.rpc.nft.adminlist(collectionId)).toHuman() as any;
+ return (await api.rpc.unique.adminlist(collectionId)).toHuman() as any;
}
export async function getVariableMetadata(
api: ApiPromise,
collectionId: number,
tokenId: number,
): Promise<number[]> {
- return [...(await api.rpc.nft.variableMetadata(collectionId, tokenId))];
+ return [...(await api.rpc.unique.variableMetadata(collectionId, tokenId))];
}
export async function getConstMetadata(
api: ApiPromise,
collectionId: number,
tokenId: number,
): Promise<number[]> {
- return [...(await api.rpc.nft.constMetadata(collectionId, tokenId))];
+ return [...(await api.rpc.unique.constMetadata(collectionId, tokenId))];
}
export async function createFungibleItemExpectSuccess(
@@ -984,7 +984,7 @@
owner: CrossAccountId | string = sender.address,
) {
return await usingApi(async (api) => {
- const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(owner), {Fungible: data});
+ const tx = api.tx.unique.createItem(collectionId, normalizeAccountId(owner), {Fungible: data});
const events = await submitTransactionAsync(sender, tx);
const result = getCreateItemResult(events);
@@ -1004,13 +1004,13 @@
let tx;
if (createMode === 'Fungible') {
const createData = {fungible: {value: 10}};
- tx = api.tx.nft.createItem(collectionId, to, createData as any);
+ tx = api.tx.unique.createItem(collectionId, to, createData as any);
} else if (createMode === 'ReFungible') {
const createData = {refungible: {const_data: [], variable_data: [], pieces: 100}};
- tx = api.tx.nft.createItem(collectionId, to, createData as any);
+ tx = api.tx.unique.createItem(collectionId, to, createData as any);
} else {
const createData = {nft: {const_data: [], variable_data: []}};
- tx = api.tx.nft.createItem(collectionId, to, createData as any);
+ tx = api.tx.unique.createItem(collectionId, to, createData as any);
}
const events = await submitTransactionAsync(sender, tx);
@@ -1037,7 +1037,7 @@
export async function createItemExpectFailure(sender: IKeyringPair, collectionId: number, createMode: string, owner: string = sender.address) {
await usingApi(async (api) => {
- const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(owner), createMode);
+ const tx = api.tx.unique.createItem(collectionId, normalizeAccountId(owner), createMode);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getCreateItemResult(events);
@@ -1053,7 +1053,7 @@
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.setPublicAccessMode(collectionId, accessMode);
+ const tx = api.tx.unique.setPublicAccessMode(collectionId, accessMode);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -1074,7 +1074,7 @@
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.setPublicAccessMode(collectionId, accessMode);
+ const tx = api.tx.unique.setPublicAccessMode(collectionId, accessMode);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -1100,7 +1100,7 @@
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.setMintPermission(collectionId, enabled);
+ const tx = api.tx.unique.setMintPermission(collectionId, enabled);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -1119,7 +1119,7 @@
export async function setMintPermissionExpectFailure(sender: IKeyringPair, collectionId: number, enabled: boolean) {
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.setMintPermission(collectionId, enabled);
+ const tx = api.tx.unique.setMintPermission(collectionId, enabled);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getCreateCollectionResult(events);
// tslint:disable-next-line:no-unused-expression
@@ -1130,7 +1130,7 @@
export async function setChainLimitsExpectFailure(sender: IKeyringPair, limits: IChainLimits) {
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.setChainLimits(limits);
+ const tx = api.tx.unique.setChainLimits(limits);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getCreateCollectionResult(events);
// tslint:disable-next-line:no-unused-expression
@@ -1139,7 +1139,7 @@
}
export async function isAllowlisted(api: ApiPromise, collectionId: number, address: string | CrossAccountId) {
- return (await api.rpc.nft.allowed(collectionId, normalizeAccountId(address))).toJSON();
+ return (await api.rpc.unique.allowed(collectionId, normalizeAccountId(address))).toJSON();
}
export async function addToAllowListExpectSuccess(sender: IKeyringPair, collectionId: number, address: string | AccountId | CrossAccountId) {
@@ -1147,7 +1147,7 @@
expect(await isAllowlisted(api, collectionId, normalizeAccountId(address))).to.be.false;
// Run the transaction
- const tx = api.tx.nft.addToAllowList(collectionId, normalizeAccountId(address));
+ const tx = api.tx.unique.addToAllowList(collectionId, normalizeAccountId(address));
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -1162,7 +1162,7 @@
expect(await isAllowlisted(api, collectionId, normalizeAccountId(address))).to.be.true;
// Run the transaction
- const tx = api.tx.nft.addToAllowList(collectionId, normalizeAccountId(address));
+ const tx = api.tx.unique.addToAllowList(collectionId, normalizeAccountId(address));
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
@@ -1175,7 +1175,7 @@
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.addToAllowList(collectionId, normalizeAccountId(address));
+ const tx = api.tx.unique.addToAllowList(collectionId, normalizeAccountId(address));
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -1188,7 +1188,7 @@
export async function removeFromAllowListExpectSuccess(sender: IKeyringPair, collectionId: number, address: CrossAccountId) {
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.removeFromAllowList(collectionId, normalizeAccountId(address));
+ const tx = api.tx.unique.removeFromAllowList(collectionId, normalizeAccountId(address));
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
@@ -1201,7 +1201,7 @@
export async function removeFromAllowListExpectFailure(sender: IKeyringPair, collectionId: number, address: CrossAccountId) {
await usingApi(async (api) => {
// Run the transaction
- const tx = api.tx.nft.removeFromAllowList(collectionId, normalizeAccountId(address));
+ const tx = api.tx.unique.removeFromAllowList(collectionId, normalizeAccountId(address));
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
@@ -1212,17 +1212,17 @@
}
export const getDetailedCollectionInfo = async (api: ApiPromise, collectionId: number)
- : Promise<NftDataStructsCollection | null> => {
- return (await api.rpc.nft.collectionById(collectionId)).unwrapOr(null);
+ : Promise<UpDataStructsCollection | null> => {
+ return (await api.rpc.unique.collectionById(collectionId)).unwrapOr(null);
};
export const getCreatedCollectionCount = async (api: ApiPromise): Promise<number> => {
// set global object - collectionsCount
- return (await api.rpc.nft.collectionStats()).created.toNumber();
+ return (await api.rpc.unique.collectionStats()).created.toNumber();
};
-export async function queryCollectionExpectSuccess(api: ApiPromise, collectionId: number): Promise<NftDataStructsCollection> {
- return (await api.rpc.nft.collectionById(collectionId)).unwrap();
+export async function queryCollectionExpectSuccess(api: ApiPromise, collectionId: number): Promise<UpDataStructsCollection> {
+ return (await api.rpc.unique.collectionById(collectionId)).unwrap();
}
export async function waitNewBlocks(blocksCount = 1): Promise<void> {