difftreelog
refactor drop rmrk compatibility layer
in: master
85 files changed
Cargo.lockdiffbeforeafterboth1078 packageslockfile v3
Might be heavy and slow!
addr2line
0.17.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816bdepends onused byaddr2line
0.19.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97depends onused byadler
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35feused byaead
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331depends onused byaead
0.4.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877depends onaes
0.6.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561depends onused byaes
0.7.5crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8used byaes-gcm
0.8.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88daused byaes-gcm
0.9.4crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6used byaes-soft
0.6.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072depends onused byaesni
0.10.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0cedepends onused byahash
0.7.6crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47aho-corasick
0.7.20crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071acdepends onused byalways-assert
0.1.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbf688625d06217d5b1bb0ea9d9c44a1635fd0ee3534466388d18203174f4d11android_system_properties
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311depends onused byansi_term
0.12.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.69crates.io↘ 0↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800used by- jsonrpsee-core
0.16.2 - jsonrpsee-types
0.16.2 - mmr-rpc
4.0.0-dev - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-packet-utils
0.5.2 - prost-derive
0.11.6 - tiny-bip39
1.0.0 - uc-rpc
0.1.4 - wasm-opt
0.110.2 - wasm-opt-cxx-sys
0.110.2 - wasm-opt-sys
0.110.2 - wasmtime
1.0.2 - wasmtime-cache
1.0.2 - wasmtime-cranelift
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2
- jsonrpsee-core
app-promotion-rpc
0.1.0workspace↘ 5↖ 6approx
0.5.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6depends onarc-swap
1.6.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6array-bytes
4.2.0crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6used by- beefy-gadget
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sp-core
7.0.0
- beefy-gadget
array-bytes
6.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22f72e9d6fac4bc80778ea470b20197b88d28c292bb7d60c3fb099280003cd19arrayref
0.3.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544arrayvec
0.5.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068barrayvec
0.7.2crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6asn1_der
0.7.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21used byasn1-rs
0.3.1crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33depends onasn1-rs
0.5.1crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4depends onasn1-rs-derive
0.1.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebfused byasn1-rs-derive
0.4.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6cused byasn1-rs-impl
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42eddepends onused byassert_matches
1.5.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9async-io
1.12.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794depends onused byasync-lock
2.6.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685depends onasync-trait
0.1.64crates.io↘ 3↖ 56sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - interceptor
0.8.2 - jsonrpsee-core
0.16.2 - libp2p-request-response
0.23.0 - libp2p-webrtc
0.4.0-alpha - orchestra
0.0.4 - polkadot-client
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-service
0.9.37 - rtp
0.6.8 - sc-authority-discovery
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-authorship
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-rpc-client
0.10.0-dev - trust-dns-proto
0.22.0 - turn
0.6.1 - webrtc
0.6.0 - webrtc-dtls
0.7.0 - webrtc-ice
0.9.0 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
- beefy-gadget
asynchronous-codec
0.6.1crates.io↘ 5↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06a0daa378f5fd10634e44b0a29b2a87b890657658e072a30d6f26e57ddee182atomic-waker
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdebc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599used byatty
0.2.14crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onauto_impl
1.0.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a8c1df849285fbacd587de7818cc7d13be6cd2cbcd47a04fb1801b0e2706e33used byautocfg
1.1.0crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fabacktrace
0.3.67crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564cadepends onbase-x
0.2.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270used bybase16ct
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678ccebase58
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581used bybase64
0.13.1crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8base64
0.21.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6aused bybase64ct
1.5.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bfused bybeef
0.5.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1depends onbeefy-gadget
4.0.0-devgithub.com/paritytech/substrate↘ 27↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- array-bytes
4.2.0 - async-trait
0.1.64 - fnv
1.0.7 - futures
0.3.26 - log
0.4.17 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-beefy
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38 - wasm-timer
0.2.5
- array-bytes
beefy-gadget-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bybeefy-merkle-tree
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4bincode
1.3.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcaddepends onbindgen
0.60.1crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6depends onused bybitflags
1.3.2crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718abitvec
1.0.1crates.io↘ 4↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9cdepends onused by- kusama-runtime
0.9.37 - parity-scale-codec
3.3.0 - polkadot-collator-protocol
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - scale-info
2.3.1 - westend-runtime
0.9.37
- kusama-runtime
blake2
0.10.6crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efedepends onblake2b_simd
1.0.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127used byblake2s_simd
1.0.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4used byblake3
1.3.3crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccefused byblock-buffer
0.7.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bblock-buffer
0.9.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-buffer
0.10.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7edepends onused byblock-modes
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0depends 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 bybondrewd
0.1.14crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d1660fac8d3acced44dac64453fafedf5aab2de196b932c727e63e4ae42d1ccdepends onused bybondrewd-derive
0.3.18crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723da0dee1eef38edc021b0793f892bdc024500c6a5b0727a2efe16f0e0a6977depends onused bybounded-vec
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3372be4090bf9d4da36bd8ba7ce6ca1669503d0cf6e667236c6df7f053153eb6depends onbs58
0.4.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
1.2.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb7f0778972c64420fdedc63f09919c8a88bda7b25135357fd25a5d9f3257e832depends onused bybuild-helper
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5fdepends onbumpalo
3.12.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535byte-slice-cast
1.2.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0cused 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
1.4.0crates.io↘ 0↖ 44sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70beused by- asynchronous-codec
0.6.1 - cumulus-pallet-parachain-system
0.1.0 - ethereum
0.14.0 - h2
0.3.15 - http
0.2.8 - http-body
0.4.5 - hyper
0.14.24 - interceptor
0.8.2 - libp2p
0.50.0 - libp2p-kad
0.42.1 - libp2p-mplex
0.38.0 - libp2p-noise
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-request-response
0.23.0 - libp2p-webrtc
0.4.0-alpha - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.4 - parity-scale-codec
3.3.0 - polkadot-network-bridge
0.9.37 - prost
0.11.6 - prost-build
0.11.6 - prost-codec
0.3.0 - prost-types
0.11.6 - quinn-proto
0.9.2 - rlp
0.5.2 - rtcp
0.7.2 - rtp
0.6.8 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-offchain
4.0.0-dev - soketto
0.7.1 - sp-io
7.0.0 - sp-runtime-interface
7.0.0 - tokio
1.25.0 - tokio-util
0.7.4 - tower-http
0.3.5 - unsigned-varint
0.7.1 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-media
0.5.0 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
- asynchronous-codec
bzip2-sys
0.1.11+1.0.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdcdepends onused bycamino
1.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc77df041dc383319cc661b428b6961a005db4d6808d5e12536931b1ca9556055depends onused bycargo_metadata
0.14.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181facargo-platform
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27depends onused bycc
1.0.79crates.io↘ 1↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91fdepends onused by- backtrace
0.3.67 - blake3
1.3.3 - bzip2-sys
0.1.11+1.0.8 - cxx
1.0.89 - cxx-build
1.0.89 - errno-dragonfly
0.1.2 - librocksdb-sys
0.8.0+7.4.4 - libz-sys
1.1.8 - link-cplusplus
1.0.8 - lz4-sys
1.9.4 - psm
0.1.21 - ring
0.16.20 - secp256k1-sys
0.6.1 - tikv-jemalloc-sys
0.5.2+5.3.0-patched - wasm-opt-sys
0.110.2 - wasmtime-runtime
1.0.2 - webrtc-util
0.7.0 - wepoll-ffi
0.1.2 - zstd-sys
2.0.6+zstd.1.5.2
- backtrace
ccm
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aca1a8fbc20b50ac9673ff014abfb2b5f4085ee1a850d408f14a159c5853ac7depends onused bycexpr
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766depends onused bycfg_aliases
0.1.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89ecfg-expr
0.10.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485dbdepends oncfg-if
1.0.0crates.io↘ 0↖ 47sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- aes
0.7.5 - backtrace
0.3.67 - blake3
1.3.3 - chacha20
0.8.2 - ckb-merkle-mountain-range
0.5.2 - cpp_demangle
0.3.5 - crc32fast
1.3.2 - crossbeam-channel
0.5.6 - crossbeam-deque
0.8.2 - crossbeam-epoch
0.9.13 - crossbeam-queue
0.3.8 - crossbeam-utils
0.8.14 - curve25519-dalek
4.0.0-rc.0 - directories-next
2.0.0 - filetime
0.2.19 - frame-metadata
15.0.0 - getrandom
0.1.16 - getrandom
0.2.8 - instant
0.1.12 - k256
0.11.6 - libloading
0.7.4 - log
0.4.17 - mockall
0.11.3 - mockall_derive
0.11.3 - nix
0.24.3 - packed_simd_2
0.3.8 - parking_lot_core
0.8.6 - parking_lot_core
0.9.7 - polling
2.5.2 - polyval
0.5.3 - prometheus
0.13.3 - sc-executor-wasmtime
0.10.0-dev - scale-info
2.3.1 - sha-1
0.9.8 - sha2
0.9.9 - sha2
0.10.6 - tempfile
3.3.0 - tracing
0.1.37 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - twox-hash
1.6.3 - wasm-bindgen
0.2.84 - wasm-bindgen-futures
0.4.34 - wasmtime
1.0.2 - wasmtime-asm-macros
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2
- aes
chacha20
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6used bychacha20poly1305
0.9.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5used bychrono
0.4.23crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411fdepends oncid
0.8.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2used bycipher
0.2.5crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801depends oncipher
0.3.0crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7depends onckb-merkle-mountain-range
0.5.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8depends onused byclang-sys
1.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3depends onused byclap
4.1.4crates.io↘ 7↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76depends onclap_derive
4.1.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8used byclap_lex
0.3.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558adedepends onused bycoarsetime
0.1.22crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum454038500439e141804c655b4cd1bc6a70bcb95cd2bc9463af5661b6956f0e46codespan-reporting
0.11.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6edepends onused bycomfy-table
6.1.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e7b787b0dc42e8111badfdbe4c3059158ccb2db8780352fa1b01e8ccf45cc4dconcurrent-queue
2.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8edepends onused byconstant_time_eq
0.1.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbcconstant_time_eq
0.2.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279used byconvert_case
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0eused bycore-foundation
0.9.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146depends oncore-foundation-sys
0.8.3crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dccore2
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505depends onused bycpp_demangle
0.3.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710fdepends onused bycpu-time
1.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume9e393a7668fe1fad3075085b86c781883000b4ede868f43627b34a87c8b7deddepends onused bycpufeatures
0.2.5crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320depends oncpuid-bool
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffbaused bycranelift-bforest
0.88.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52056f6d0584484b57fa6c1a65c1fcb15f3780d8b6a758426d9e3084169b2ddddepends onused bycranelift-codegen
0.88.2crates.io↘ 12↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18fed94c8770dc25d01154c3ffa64ed0b3ba9d583736f305fed7beebe5d9cf74depends oncranelift-codegen-meta
0.88.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c451b81faf237d11c7e4f3165eeb6bac61112762c5cfe7b4c0fb7241474358fdepends onused bycranelift-entity
0.88.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87a0f1b2fdc18776956370cf8d9b009ded3f855350c480c1c52142510961f352depends oncranelift-frontend
0.88.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34897538b36b216cc8dd324e73263596d51b8cf610da6498322838b2546baf8acranelift-isle
0.88.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b2629a569fae540f16a76b70afcc87ad7decb38dc28fa6c648ac73b51e78470used bycranelift-native
0.88.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20937dab4e14d3e225c5adfc9c7106bafd4ac669bdb43027b911ff794c6fb318used bycranelift-wasm
0.88.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80fc2288957a94fd342a015811479de1837850924166d1f1856d8406e6f3609bdepends onused bycrc
3.0.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfedepends oncrc-catalog
2.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484used bycrc32fast
1.3.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880ddepends oncrossbeam-channel
0.5.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521depends onused bycrossbeam-deque
0.8.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fcused bycrossbeam-epoch
0.9.13crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5aused bycrossbeam-queue
0.3.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353adddepends oncrossbeam-utils
0.8.14crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929fdepends oncrunchy
0.2.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-bigint
0.4.9crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17efcrypto-common
0.1.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3depends onused bycrypto-mac
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onused bycrypto-mac
0.10.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081adepends onused bycrypto-mac
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714depends onused byctor
0.1.26crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096depends onused byctr
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7fdepends onused byctr
0.8.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761eadepends onused bycumulus-client-cli
0.1.0github.com/paritytech/cumulus↘ 8↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncumulus-client-collator
0.1.0github.com/paritytech/cumulus↘ 16↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.26 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-overseer
0.9.37 - polkadot-primitives
0.9.37 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - tracing
0.1.37
used by- cumulus-client-consensus-common
cumulus-client-consensus-aura
0.1.0github.com/paritytech/cumulus↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- async-trait
0.1.64 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.26 - parity-scale-codec
3.3.0 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tracing
0.1.37
used by- async-trait
cumulus-client-consensus-common
0.1.0github.com/paritytech/cumulus↘ 16↖ 4sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- async-trait
0.1.64 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - dyn-clone
1.0.10 - futures
0.3.26 - log
0.4.17 - parity-scale-codec
3.3.0 - polkadot-primitives
0.9.37 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-runtime
7.0.0 - sp-trie
7.0.0 - tracing
0.1.37
- async-trait
cumulus-client-network
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- async-trait
0.1.64 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.26 - futures-timer
3.0.2 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - sc-client-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - tracing
0.1.37
- async-trait
cumulus-client-pov-recovery
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.26 - futures-timer
3.0.2 - parity-scale-codec
3.3.0 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-overseer
0.9.37 - polkadot-primitives
0.9.37 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-consensus
0.10.0-dev - sp-maybe-compressed-blob
4.1.0-dev - sp-runtime
7.0.0 - tracing
0.1.37
- cumulus-primitives-core
cumulus-client-service
0.1.0github.com/paritytech/cumulus↘ 21↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - futures
0.3.26 - parking_lot
0.12.1 - polkadot-primitives
0.9.37 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0
used by- cumulus-client-cli
cumulus-pallet-aura-ext
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncumulus-pallet-dmp-queue
0.1.0github.com/paritytech/cumulus↘ 10↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncumulus-pallet-parachain-system
0.1.0github.com/paritytech/cumulus↘ 21↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- bytes
1.4.0 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - environmental
1.1.4 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - log
0.4.17 - parity-scale-codec
3.3.0 - polkadot-parachain
0.9.37 - scale-info
2.3.1 - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-trie
7.0.0 - sp-version
5.0.0
- bytes
cumulus-pallet-parachain-system-proc-macro
0.1.0github.com/paritytech/cumulus↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bcumulus-pallet-xcm
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncumulus-pallet-xcmp-queue
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncumulus-primitives-core
0.1.0github.com/paritytech/cumulus↘ 8↖ 24sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - opal-runtime
0.9.36 - orml-xtokens
0.4.1-dev - parachain-info
0.1.0 - quartz-runtime
0.9.36 - unique-node
0.9.36 - unique-runtime
0.9.36 - up-common
0.9.36
- cumulus-client-collator
cumulus-primitives-parachain-inherent
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- async-trait
0.1.64 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - parity-scale-codec
3.3.0 - sc-client-api
4.0.0-dev - scale-info
2.3.1 - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-storage
7.0.0 - sp-trie
7.0.0 - tracing
0.1.37
- async-trait
cumulus-primitives-timestamp
0.1.0github.com/paritytech/cumulus↘ 6↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncumulus-primitives-utility
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncumulus-relay-chain-inprocess-interface
0.1.0github.com/paritytech/cumulus↘ 18↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- async-trait
0.1.64 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.26 - futures-timer
3.0.2 - polkadot-cli
0.9.37 - polkadot-client
0.9.37 - polkadot-service
0.9.37 - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0
- async-trait
cumulus-relay-chain-interface
0.1.0github.com/paritytech/cumulus↘ 13↖ 9sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends onused by- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - unique-node
0.9.36
- cumulus-client-consensus-common
cumulus-relay-chain-minimal-node
0.1.0github.com/paritytech/cumulus↘ 33↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- array-bytes
6.0.0 - async-trait
0.1.64 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - futures
0.3.26 - lru
0.8.1 - polkadot-core-primitives
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-primitives
0.9.37 - polkadot-service
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-runtime
7.0.0 - tokio
1.25.0 - tracing
0.1.37 - url
2.3.1
- array-bytes
cumulus-relay-chain-rpc-interface
0.1.0github.com/paritytech/cumulus↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends on- async-trait
0.1.64 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.26 - futures-timer
3.0.2 - jsonrpsee
0.16.2 - lru
0.8.1 - parity-scale-codec
3.3.0 - polkadot-service
0.9.37 - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - serde
1.0.152 - serde_json
1.0.92 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-state-machine
0.13.0 - sp-storage
7.0.0 - tokio
1.25.0 - tracing
0.1.37 - url
2.3.1
- async-trait
cumulus-test-relay-sproof-builder
0.1.0github.com/paritytech/cumulus↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends oncurve25519-dalek
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216used bycurve25519-dalek
3.2.0crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61curve25519-dalek
4.0.0-rc.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da00a7a9a4eb92a0a0f8e75660926d48f0d0f3c537e455c457bcdaa1e16b1acused bycxx
1.0.89crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc831ee6a32dd495436e317595e639a587aa9907bef96fe6e6abc290ab6204e9cxx-build
1.0.89crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94331d54f1b1a8895cd81049f7eaaaef9d05a7dcb4d1fd08bf3ff0806246789ddepends oncxxbridge-flags
1.0.89crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48dcd35ba14ca9b40d6e4b4b39961f23d835dbb8eed74565ded361d93e1feb8aused bycxxbridge-macro
1.0.89crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81bbeb29798b407ccd82a3324ade1a7286e0d29851475990b612670f6f5124d2depends onused bydarling
0.14.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfadepends onused bydarling_core
0.14.2crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859fdarling_macro
0.14.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7edepends onused bydata-encoding
2.3.3crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fbdata-encoding-macro
0.1.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029acaused bydata-encoding-macro-internal
0.1.10crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038dbdepends onused byder
0.6.1crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4deder-parser
7.0.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82used byder-parser
8.1.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1derivative
2.2.0crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770bdepends onderive_builder
0.11.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3depends onderive_builder_core
0.11.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4used byderive_builder_macro
0.11.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68depends onused byderive_more
0.99.17crates.io↘ 5↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321used by- polkadot-availability-distribution
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-parachain
0.9.37 - polkadot-runtime-parachains
0.9.37 - prioritized-metered-channel
0.2.0 - reed-solomon-novelpoly
1.0.0 - scale-info
2.3.1
- polkadot-availability-distribution
difflib
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8used bydigest
0.8.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondigest
0.10.6crates.io↘ 3↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76fdirectories
4.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210depends onused bydirectories-next
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbcdepends onused bydirs-sys
0.3.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6depends onused bydirs-sys-next
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4ddepends onused bydisplaydoc
0.2.3crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886depends ondowncast
0.11.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1used bydowncast-rs
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650used bydtoa
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc00704156a7de8df8da0911424e30c2049957b0a714542a44e05fe693dd85313used bydyn-clonable
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4depends onused bydyn-clonable-impl
0.9.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5depends onused bydyn-clone
1.0.10crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9b0705efd4599c15a38151f4721f7bc388306f61084d3bfd50bd07fbca5cb60ecdsa
0.14.8crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5ced25519
1.5.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7depends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9dused byed25519-zebra
3.1.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6used byeither
1.8.1crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91elliptic-curve
0.12.3crates.io↘ 14↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3depends onenum-as-inner
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116used byenumflags2
0.7.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccbdepends onenumflags2_derive
0.7.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5aedepends onused byenumn
0.1.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume88bcb3a067a6555d577aba299e75eff9942da276e6506fc6274327daa026132depends onused byenv_logger
0.9.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7env_logger
0.10.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0used byenvironmental
1.1.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15berrno
0.2.8crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1used byerrno-dragonfly
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bfdepends onused byethbloom
0.13.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60depends onused byethereum
0.14.0crates.io↘ 10↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a89fb87a9e103f71b903b80b670200b54cc67a07578f070681f1fffb7396fb7depends onethereum-types
0.14.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8eedepends onevent-listener
2.5.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0used byevm
0.37.0crates.io↘ 13↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4448c65b71e8e2b9718232d84d09045eeaaccb2320494e6bd6dbf7e58fec8ffdepends onevm-coder
0.3.0github.com/uniquenetwork/evm-coder↘ 5↖ 11sourcegit+https://github.com/uniquenetwork/evm-coder?tag=v0.3.0#c4bfdf39d84fbe74c6178417177f2a7f81d92bdddepends onevm-coder-procedural
0.3.0github.com/uniquenetwork/evm-coder↘ 6↖ 1sourcegit+https://github.com/uniquenetwork/evm-coder?tag=v0.3.0#c4bfdf39d84fbe74c6178417177f2a7f81d92bddused byevm-coder-substrate-procedural
0.1.0workspace↘ 3↖ 1evm-core
0.37.0crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64c51bec0eb68a891c2575c758eaaa1d61373fc51f7caaf216b1fb5c3fea3b5devm-gasometer
0.37.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8b93c59c54fc26522d842f0e0d3f8e8be331c776df18ff3e540b53c2f64d509used byevm-runtime
0.37.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc79b9459ce64f1a28688397c4013764ce53cd57bb84efc16b5187fa9b05b13adused byexit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byexpander
0.0.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881used byexpander
0.0.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3774182a5df13c3d1690311ad32fbe913feef26baba609fa2dd5f72042bd2ab6fallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.8.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499depends onfatality
0.0.6crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ad875162843b0d046276327afe0136e9ed3a23d5a754210fb6f1f33610d39abdepends onused by- polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-statement-distribution
0.9.37
- polkadot-availability-distribution
fatality-proc-macro
0.0.6crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bddepends onused byfc-consensus
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 12↖ 1sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onused byfc-db
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 12↖ 5sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onfc-mapping-sync
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 10↖ 1sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onused byfc-rpc
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 35↖ 2sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends on- ethereum
0.14.0 - ethereum-types
0.14.1 - evm
0.37.0 - fc-db
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-ethereum
1.0.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.26 - hex
0.4.3 - jsonrpsee
0.16.2 - libsecp256k1
0.7.1 - log
0.4.17 - lru
0.8.1 - parity-scale-codec
3.3.0 - prometheus
0.13.3 - rand
0.8.5 - rlp
0.5.2 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-storage
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.25.0
- ethereum
fc-rpc-core
1.1.0-devgithub.com/uniquenetwork/unique-frontier↘ 6↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byff
0.12.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160depends onfiat-crypto
0.1.17crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma214f5bb88731d436478f3ae1f8a277b62124089ba9fb67f4f93fb100ef73c90used byfile-per-thread-logger
0.1.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866depends onused byfiletime
0.2.19crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9finality-grandpa
0.16.1crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume24e6c429951433ccb7c87fd528c60084834dcd14763182c1f83291bcde24c34depends onfixed-hash
0.8.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534fixedbitset
0.4.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80used byflate2
1.0.25crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841used byfloat-cmp
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4depends onused byfnv
1.0.7crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
3.0.0github.com/paritytech/substrate↘ 1↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onform_urlencoded
1.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8depends onused byfp-consensus
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 5↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3fp-ethereum
1.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 7↖ 2sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onfp-evm
3.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 7↖ 11sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onfp-evm-mapping
0.1.0github.com/uniquenetwork/unique-frontier↘ 2↖ 6sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onfp-rpc
3.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 9↖ 10sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onfp-self-contained
1.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 5↖ 4sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3fp-storage
2.0.0github.com/uniquenetwork/unique-frontier↘ 2↖ 4sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onfragile
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaaused byframe-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 73sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- frame-benchmarking-cli
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.4 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-migration
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.13 - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm-benchmarks
0.9.37 - polkadot-client
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - xcm-executor
0.9.37
- frame-benchmarking-cli
frame-benchmarking-cli
4.0.0-devgithub.com/paritytech/substrate↘ 40↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- Inflector
0.11.4 - array-bytes
4.2.0 - chrono
0.4.23 - clap
4.1.4 - comfy-table
6.1.4 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - gethostname
0.2.3 - handlebars
4.3.6 - itertools
0.10.5 - lazy_static
1.4.0 - linked-hash-map
0.5.6 - log
0.4.17 - parity-scale-codec
3.3.0 - rand
0.8.5 - rand_pcg
0.3.1 - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - serde
1.0.152 - serde_json
1.0.92 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-storage
7.0.0 - sp-trie
7.0.0 - thiserror
1.0.38 - thousands
0.2.0
- Inflector
frame-election-provider-solution-type
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4frame-election-provider-support
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- kusama-runtime
0.9.37 - pallet-bags-list
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - westend-runtime
0.9.37
- kusama-runtime
frame-executive
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onframe-metadata
15.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2dused byframe-remote-externalities
0.10.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused byframe-support
4.0.0-devgithub.com/paritytech/substrate↘ 25↖ 119sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- bitflags
1.3.2 - frame-metadata
15.0.0 - frame-support-procedural
4.0.0-dev - impl-trait-for-tuples
0.2.2 - k256
0.11.6 - log
0.4.17 - once_cell
1.17.0 - parity-scale-codec
3.3.0 - paste
1.0.11 - scale-info
2.3.1 - serde
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-core
7.0.0 - sp-core-hashing-proc-macro
5.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-tracing
6.0.0 - sp-weights
4.0.0 - tt-call
1.0.9
used by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.37 - kusama-runtime-constants
0.9.37 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.13 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parachain-info
0.1.0 - polkadot-parachain
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-constants
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - rococo-runtime-constants
0.9.37 - tests
0.1.1 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - westend-runtime
0.9.37 - westend-runtime-constants
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- bitflags
frame-support-procedural
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused byframe-support-procedural-tools
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onframe-support-procedural-tools-derive
3.0.0github.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onframe-system
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 102sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.13 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parachain-info
0.1.0 - polkadot-client
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - tests
0.1.1 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - xcm-builder
0.9.37
- cumulus-pallet-aura-ext
frame-system-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onframe-system-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onframe-try-runtime
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4fs_extra
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11cfs-err
2.9.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541fs2
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213depends onused byfunty
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9cused byfutures
0.3.26crates.io↘ 7↖ 120sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - exit-future
0.2.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.16.1 - frame-remote-externalities
0.10.0-dev - if-watch
3.0.0 - libp2p
0.50.0 - libp2p-core
0.38.0 - libp2p-dns
0.38.0 - libp2p-identify
0.41.1 - libp2p-kad
0.42.1 - libp2p-mdns
0.42.0 - libp2p-mplex
0.38.0 - libp2p-noise
0.41.0 - libp2p-ping
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-request-response
0.23.0 - libp2p-swarm
0.41.1 - libp2p-tcp
0.38.0 - libp2p-tls
0.1.0-alpha - libp2p-wasm-ext
0.38.0 - libp2p-webrtc
0.4.0-alpha - libp2p-websocket
0.40.0 - libp2p-yamux
0.42.0 - mick-jaeger
0.1.8 - mmr-gadget
4.0.0-dev - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.4 - orchestra
0.0.4 - polkadot-approval-distribution
0.9.37 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-cli
0.9.37 - polkadot-client
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-api
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-core-runtime-api
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37 - prioritized-metered-channel
0.2.0 - rtnetlink
0.10.1 - rw-stream-sink
0.3.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-utils
4.0.0-dev - turn
0.6.1 - unique-node
0.9.36 - wasm-timer
0.2.5 - yamux
0.10.2
- beefy-gadget
futures-channel
0.3.26crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5depends onfutures-core
0.3.26crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608futures-executor
0.3.26crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50eused byfutures-io
0.3.26crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531futures-lite
1.12.0crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48depends onfutures-macro
0.3.26crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70depends onused byfutures-rustls
0.22.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bddepends onfutures-sink
0.3.26crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364futures-task
0.3.26crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366futures-timer
3.0.2crates.io↘ 0↖ 44sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cused by- cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.16.1 - jsonrpsee-core
0.16.2 - libp2p
0.50.0 - libp2p-core
0.38.0 - libp2p-identify
0.41.1 - libp2p-kad
0.42.1 - libp2p-ping
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-swarm
0.41.1 - libp2p-tcp
0.38.0 - libp2p-webrtc
0.4.0-alpha - orchestra
0.0.4 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-overseer
0.9.37 - prioritized-metered-channel
0.2.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-timestamp
4.0.0-dev
- cumulus-client-network
futures-util
0.3.26crates.io↘ 10↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1depends onfxhash
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50cdepends onused bygeneric-array
0.12.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bddepends onused bygeneric-array
0.14.6crates.io↘ 2↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9depends ongethostname
0.2.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862edepends ongetrandom
0.1.16crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.8crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31ghash
0.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375depends onused byghash
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99depends onused bygimli
0.26.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5dgimli
0.27.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdecused byglob
0.3.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9bglobset
0.4.10crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afcused bygroup
0.12.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7depends onused byh2
0.3.15crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4depends onused byhandlebars
4.3.6crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum035ef95d03713f2c347a72547b7cd38cbc9af7cd51e6099fb62d586d4a6dee3ahash-db
0.15.2crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364ahash256-std-hasher
0.15.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2depends onhashbrown
0.12.3crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888depends onheck
0.4.1crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8hermit-abi
0.1.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhermit-abi
0.2.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7depends onused byhermit-abi
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum856b5cb0902c2b6d65d5fd97dfa30f9b70c7538e770b98eab5ed52d8db923e01used byhex
0.4.3crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70hex-literal
0.3.4crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0hkdf
0.12.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437depends onhmac
0.8.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840depends onused byhmac
0.10.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15depends onused byhmac
0.11.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69bdepends onhmac
0.12.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5edepends onhmac-drbg
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1depends onused byhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhttp
0.2.8crates.io↘ 3↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399depends onhttp-body
0.4.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1depends onused byhttp-range-header
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29used byhttparse
1.8.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904used byhttpdate
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421used byhumantime
2.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4hyper
0.14.24crates.io↘ 16↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164cdepends onhyper-rustls
0.23.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661cdepends onused byiana-time-zone
0.1.53crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765depends onused byiana-time-zone-haiku
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dcadepends onused byident_case
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39used byidna
0.2.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8used byidna
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6used byif-addrs
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9depends onused byif-watch
3.0.0crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba7abdbb86e485125dad06c2691e1e393bf3b08c7b743b43aa162a00fd39062edepends onimpl-codec
0.6.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2fdepends onimpl-rlp
0.3.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808depends onimpl-serde
0.4.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cddepends onimpl-trait-for-tuples
0.2.2crates.io↘ 3↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395ebdepends onused by- cumulus-pallet-parachain-system
0.1.0 - evm-coder
0.3.0 - fp-evm
3.0.0-dev - frame-support
4.0.0-dev - opal-runtime
0.9.36 - orml-traits
0.4.1-dev - pallet-authorship
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-session
4.0.0-dev - pallet-treasury
4.0.0-dev - parity-scale-codec
3.3.0 - polkadot-runtime-common
0.9.37 - quartz-runtime
0.9.36 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-wasm-interface
7.0.0 - unique-runtime
0.9.36 - up-sponsorship
0.1.0 - xcm
0.9.37 - xcm-executor
0.9.37
- cumulus-pallet-parachain-system
indexmap
1.9.2crates.io↘ 3↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399depends onInflector
0.11.4crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.12crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends oninteger-encoding
3.0.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02used byinteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byinterceptor
0.8.2crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90bdepends onused byio-lifetimes
0.7.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074used byio-lifetimes
1.0.5crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3depends onused byip_network
0.4.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1ipconfig
0.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5beused byipnet
2.7.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146is-terminal
0.4.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daefused byitertools
0.10.5crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473depends onitoa
1.0.5crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440jobserver
0.1.25crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90bdepends onused byjs-sys
0.3.61crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730depends onjsonrpsee
0.16.2crates.io↘ 6↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d291e3a5818a2384645fd9756362e6d89cf0541b0b916fa7702ea4a9833608edepends onused by- beefy-gadget-rpc
4.0.0-dev - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-rpc
0.9.37 - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4 - unique-rpc
0.1.2
- beefy-gadget-rpc
jsonrpsee-client-transport
0.16.2crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum965de52763f2004bc91ac5bcec504192440f0b568a5d621c59d9dbd6f886c3fbdepends onused byjsonrpsee-core
0.16.2crates.io↘ 20↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4e70b4439a751a5de7dd5ed55eacff78ebf4ffe0fc009cb1ebb11417f5b536bdepends onjsonrpsee-proc-macros
0.16.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaa6da1e4199c10d7b1d0a6e5e8bd8e55f351163b6f4b3cbb044672a69bd4c1cused byjsonrpsee-server
0.16.2crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fb69dad85df79527c019659a992498d03f8495390496da2f07e6c24c2b356fcdepends onused byjsonrpsee-types
0.16.2crates.io↘ 6↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5bd522fe1ce3702fd94812965d7bb7a3364b1c9aba743944c5a00529aae80f8cjsonrpsee-ws-client
0.16.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b83daeecfc6517cfe210df24e570fb06213533dfb990318fae781f4c7119dd9used byk256
0.11.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8bused bykeccak
0.1.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768depends onkusama-runtime
0.9.37github.com/paritytech/polkadot↘ 90↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - kusama-runtime-constants
0.9.37 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parity-scale-codec
3.3.0 - polkadot-primitives
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.152 - serde_derive
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- bitvec
kusama-runtime-constants
0.9.37github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bykvdb
0.13.0crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d770dcb02bf6835887c3a979b5107a04ff4bbde97a5f0928d27404a155add9depends onkvdb-memorydb
0.13.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2depends onused bykvdb-rocksdb
0.17.0crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2182b8219fee6bd83aacaab7344e840179ae079d5216aa4e249b4d704646a844lazy_static
1.4.0crates.io↘ 0↖ 25sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.60.1 - frame-benchmarking-cli
4.0.0-dev - logtest
2.0.0 - mockall
0.11.3 - polkadot-node-jaeger
0.9.37 - prometheus
0.13.3 - prost-build
0.11.6 - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - sharded-slab
0.1.4 - sp-core
7.0.0 - sp-keyring
7.0.0 - sp-panic-handler
5.0.0 - sp-trie
7.0.0 - statrs
0.15.0 - stun
0.4.4 - tracing-log
0.1.3 - tracing-subscriber
0.2.25 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - webrtc
0.6.0 - webrtc-util
0.7.0 - x509-parser
0.13.2 - x509-parser
0.14.0
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used bylibc
0.2.139crates.io↘ 0↖ 73sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79used by- android_system_properties
0.1.5 - async-io
1.12.0 - atty
0.2.14 - backtrace
0.3.67 - bzip2-sys
0.1.11+1.0.8 - clang-sys
1.4.0 - coarsetime
0.1.22 - core-foundation
0.9.3 - cpu-time
1.0.0 - cpufeatures
0.2.5 - cranelift-native
0.88.2 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - errno-dragonfly
0.1.2 - fdlimit
0.2.1 - filetime
0.2.19 - fs2
0.4.3 - gethostname
0.2.3 - getrandom
0.1.16 - getrandom
0.2.8 - hermit-abi
0.1.19 - hermit-abi
0.2.6 - hostname
0.3.1 - if-addrs
0.7.0 - io-lifetimes
1.0.5 - jobserver
0.1.25 - libp2p-tcp
0.38.0 - librocksdb-sys
0.8.0+7.4.4 - lz4
1.24.0 - lz4-sys
1.9.4 - mach
0.3.2 - memmap2
0.5.8 - mio
0.8.5 - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-sys
0.8.4 - nix
0.24.3 - num_cpus
1.15.0 - parity-db
0.4.3 - parking_lot_core
0.8.6 - parking_lot_core
0.9.7 - polling
2.5.2 - rand
0.7.3 - rand
0.8.5 - ring
0.16.20 - rocksdb
0.19.0 - rpassword
7.2.0 - rtoolbox
0.0.1 - rustix
0.35.13 - rustix
0.36.8 - sc-executor-wasmtime
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - security-framework
2.8.2 - security-framework-sys
2.8.0 - signal-hook-registry
1.4.0 - socket2
0.4.7 - static_init
0.5.2 - static_init
1.0.3 - system-configuration-sys
0.5.0 - tempfile
3.3.0 - tikv-jemalloc-ctl
0.5.0 - tikv-jemalloc-sys
0.5.2+5.3.0-patched - time
0.1.45 - tokio
1.25.0 - wasm-opt
0.110.2 - wasmtime
1.0.2 - wasmtime-runtime
1.0.2 - webrtc-util
0.7.0 - which
4.4.0 - zstd-safe
5.0.2+zstd.1.5.2 - zstd-sys
2.0.6+zstd.1.5.2
- android_system_properties
libloading
0.7.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9fdepends onused bylibm
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9aused bylibm
0.2.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffblibp2p
0.50.0crates.io↘ 26↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e0a0d2f693675f49ded13c5d510c48b78069e23cbd9108d7ccd59f6dc568819depends on- bytes
1.4.0 - futures
0.3.26 - futures-timer
3.0.2 - getrandom
0.2.8 - instant
0.1.12 - libp2p-core
0.38.0 - libp2p-dns
0.38.0 - libp2p-identify
0.41.1 - libp2p-kad
0.42.1 - libp2p-mdns
0.42.0 - libp2p-metrics
0.11.0 - libp2p-mplex
0.38.0 - libp2p-noise
0.41.0 - libp2p-ping
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-request-response
0.23.0 - libp2p-swarm
0.41.1 - libp2p-tcp
0.38.0 - libp2p-wasm-ext
0.38.0 - libp2p-webrtc
0.4.0-alpha - libp2p-websocket
0.40.0 - libp2p-yamux
0.42.0 - multiaddr
0.16.0 - parking_lot
0.12.1 - pin-project
1.0.12 - smallvec
1.10.0
used by- sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-telemetry
4.0.0-dev
- bytes
libp2p-core
0.38.0crates.io↘ 26↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6a8fcd392ff67af6cc3f03b1426c41f7f26b6b9aff2dc632c1c56dd649e571fdepends on- asn1_der
0.7.5 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.8.1 - fnv
1.0.7 - futures
0.3.26 - futures-timer
3.0.2 - instant
0.1.12 - log
0.4.17 - multiaddr
0.16.0 - multihash
0.16.3 - multistream-select
0.12.1 - once_cell
1.17.0 - parking_lot
0.12.1 - pin-project
1.0.12 - prost
0.11.6 - prost-build
0.11.6 - rand
0.8.5 - rw-stream-sink
0.3.0 - sec1
0.3.0 - sha2
0.10.6 - smallvec
1.10.0 - thiserror
1.0.38 - unsigned-varint
0.7.1 - void
1.0.2 - zeroize
1.5.7
used by- libp2p
0.50.0 - libp2p-dns
0.38.0 - libp2p-identify
0.41.1 - libp2p-kad
0.42.1 - libp2p-mdns
0.42.0 - libp2p-metrics
0.11.0 - libp2p-mplex
0.38.0 - libp2p-noise
0.41.0 - libp2p-ping
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-request-response
0.23.0 - libp2p-swarm
0.41.1 - libp2p-tcp
0.38.0 - libp2p-tls
0.1.0-alpha - libp2p-wasm-ext
0.38.0 - libp2p-webrtc
0.4.0-alpha - libp2p-websocket
0.40.0 - libp2p-yamux
0.42.0
- asn1_der
libp2p-dns
0.38.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e42a271c1b49f789b92f7fc87749fa79ce5c7bdc88cbdfacb818a4bca47fec5depends onused bylibp2p-identify
0.41.1crates.io↘ 13↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc052d0026f4817b44869bfb6810f4e1112f43aec8553f2cb38881c524b563abfdepends onlibp2p-kad
0.42.1crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2766dcd2be8c87d5e1f35487deb22d765f49c6ae1251b3633efe3b25698bd3d2depends onlibp2p-mdns
0.42.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04f378264aade9872d6ccd315c0accc18be3a35d15fc1b9c36e5b6f983b62b5bdepends onused bylibp2p-metrics
0.11.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ad8a64f29da86005c86a4d2728b8a0719e9b192f4092b609fd8790acb9dec55depends onused bylibp2p-mplex
0.38.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03805b44107aa013e7cbbfa5627b31c36cbedfdfb00603c0311998882bc4bacedepends onused bylibp2p-noise
0.41.0crates.io↘ 15↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma978cb57efe82e892ec6f348a536bfbd9fee677adbe5689d7a93ad3a9bffbf2edepends onlibp2p-ping
0.41.0crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum929fcace45a112536e22b3dcfd4db538723ef9c3cb79f672b98be2cc8e25f37fdepends onlibp2p-quic
0.7.0-alphacrates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01e7c867e95c8130667b24409d236d37598270e6da69b3baf54213ba31ffca59depends onused bylibp2p-request-response
0.23.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3236168796727bfcf4927f766393415361e2c644b08bedb6a6b13d957c9a4884depends onused bylibp2p-swarm
0.41.1crates.io↘ 14↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2a35472fe3276b3855c00f1c032ea8413615e030256429ad5349cdf67c6e1a0depends onlibp2p-swarm-derive
0.31.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d527d5827582abd44a6d80c07ff8b50b4ee238a8979e05998474179e79dc400depends onused bylibp2p-tcp
0.38.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb4b257baf6df8f2df39678b86c578961d48cc8b68642a12f0f763f56c8e5858ddepends onused bylibp2p-tls
0.1.0-alphacrates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7905ce0d040576634e8a3229a7587cc8beab83f79db6023800f1792895defa8depends onused bylibp2p-wasm-ext
0.38.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bb1a35299860e0d4b3c02a3e74e3b293ad35ae0cee8a056363b0c862d082069depends onused bylibp2p-webrtc
0.4.0-alphacrates.io↘ 23↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcdb6cd86dd68cba72308ea05de1cebf3ba0ae6e187c40548167955d4e3970f6adepends on- async-trait
0.1.64 - asynchronous-codec
0.6.1 - bytes
1.4.0 - futures
0.3.26 - futures-timer
3.0.2 - hex
0.4.3 - if-watch
3.0.0 - libp2p-core
0.38.0 - libp2p-noise
0.41.0 - log
0.4.17 - multihash
0.16.3 - prost
0.11.6 - prost-build
0.11.6 - prost-codec
0.3.0 - rand
0.8.5 - rcgen
0.9.3 - serde
1.0.152 - stun
0.4.4 - thiserror
1.0.38 - tinytemplate
1.2.1 - tokio
1.25.0 - tokio-util
0.7.4 - webrtc
0.6.0
used by- async-trait
libp2p-websocket
0.40.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d705506030d5c0aaf2882437c70dab437605f21c5f9811978f694e6917a3b54depends onused bylibp2p-yamux
0.42.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f63594a0aa818642d9d4915c791945053877253f08a3626f13416b5cd928a29used bylibrocksdb-sys
0.8.0+7.4.4crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum611804e4666a25136fcc5f8cf425ab4d26c7f74ea245ffe92ea23b85b6420b5ddepends onused bylibsecp256k1
0.7.1crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1depends onlibsecp256k1-core
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451depends onlibsecp256k1-gen-ecmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809depends onused bylibsecp256k1-gen-genmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7cdepends onused bylibz-sys
1.1.8crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbfdepends onlink-cplusplus
1.0.8crates.io↘ 1↖ 1linked_hash_set
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onused bylinked-hash-map
0.5.6crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770flinregress
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8depends onused bylinux-raw-sys
0.0.46crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854dused bylinux-raw-sys
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4used bylock_api
0.4.9crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4dfdepends onlog
0.4.17crates.io↘ 2↖ 185sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382edepends onused by- async-io
1.12.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cranelift-codegen
0.88.2 - cranelift-frontend
0.88.2 - cranelift-wasm
0.88.2 - cumulus-client-consensus-common
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - env_logger
0.9.3 - env_logger
0.10.0 - evm
0.37.0 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - file-per-thread-logger
0.1.6 - finality-grandpa
0.16.1 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - globset
0.4.10 - handlebars
4.3.6 - hyper-rustls
0.23.2 - if-watch
3.0.0 - interceptor
0.8.2 - kusama-runtime
0.9.37 - libp2p-core
0.38.0 - libp2p-dns
0.38.0 - libp2p-identify
0.41.1 - libp2p-kad
0.42.1 - libp2p-mdns
0.42.0 - libp2p-mplex
0.38.0 - libp2p-noise
0.41.0 - libp2p-ping
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-request-response
0.23.0 - libp2p-swarm
0.41.1 - libp2p-tcp
0.38.0 - libp2p-webrtc
0.4.0-alpha - libp2p-websocket
0.40.0 - libp2p-yamux
0.42.0 - logtest
2.0.0 - mio
0.8.5 - mmr-gadget
4.0.0-dev - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.4 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.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-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-offences
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-unique-scheduler-v2
0.1.0 - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parity-db
0.4.3 - polkadot-cli
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-performance-test
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - polling
2.5.2 - prost-build
0.11.6 - quartz-runtime
0.9.36 - regalloc2
0.3.2 - rococo-runtime
0.9.37 - rtnetlink
0.10.1 - rustls
0.19.1 - rustls
0.20.8 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-peerset
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-wasm-interface
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - thrift
0.15.0 - tracing
0.1.37 - tracing-log
0.1.3 - trie-db
0.24.0 - try-runtime-cli
0.10.0-dev - turn
0.6.1 - unique-node
0.9.36 - unique-runtime
0.9.36 - want
0.3.0 - wasm-bindgen-backend
0.2.84 - wasmtime
1.0.2 - wasmtime-cache
1.0.2 - wasmtime-cranelift
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-dtls
0.7.0 - webrtc-ice
0.9.0 - webrtc-mdns
0.5.2 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0 - westend-runtime
0.9.37 - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37 - yamux
0.10.2
- async-io
logtest
2.0.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb3e43a8657c1d64516dcc9db8ca03826a4aceaf89d5ce1b37b59f6ff0e43026depends onlru
0.8.1crates.io↘ 1↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - libp2p-identify
0.41.1 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-runtime-api
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-service
0.9.37 - sc-executor
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-trie
7.0.0
- cumulus-relay-chain-minimal-node
lru-cache
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1cdepends onused bylz4
1.24.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1depends onused bylz4-sys
1.9.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900depends onused bymach
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onused bymatch_cfg
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4used bymatchers
0.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1depends onused bymatrixmultiply
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumadd85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84depends onused bymd-5
0.10.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9cadepends onmemchr
2.5.0crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566dmemfd
0.6.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efbdepends onused bymemmap2
0.5.8crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dcdepends onmemoffset
0.6.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79cedepends onmemoffset
0.7.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4depends onused bymemory_units
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3used bymemory-db
0.31.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e0c7cba9ce19ac7ffd2053ac9f49843bbd3f4318feedfd74e85c19d5fb0ba66depends onused bymerlin
2.0.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42mick-jaeger
0.1.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532depends onused byminimal-lexical
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79aused byminiz_oxide
0.6.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fadepends onused bymio
0.8.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158deused bymmr-gadget
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bymmr-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bymockall
0.11.3crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50e4a1c770583dac7ab5e2f6c139153b783a53a1bbee9729613f193e59828326depends onmockall_derive
0.11.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum832663583d5fa284ca8810bf7015e46c9fff9622d3cf34bd1eea5003fec06dd0used bymultiaddr
0.16.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4aebdb21e90f81d13ed01dc84123320838e53963c2ca94b60b305d3fa64f31edepends onmultibase
0.9.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404used bymultihash
0.16.3crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2ccdepends onmultihash-derive
0.8.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcddepends onused bymultimap
0.8.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6aused bymultistream-select
0.12.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27aused bynalgebra
0.27.1crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum462fffe4002f4f2e1f6a9dcf12cc1a6fc0e15989014efc02a941d3e0f5dc2120depends onused bynalgebra-macros
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218depends onused bynames
0.13.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146depends onused bynanorand
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3netlink-packet-core
0.4.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297netlink-packet-route
0.12.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaabdepends onused bynetlink-packet-utils
0.5.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34netlink-proto
0.10.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6depends onused bynetlink-sys
0.8.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum260e21fbb6f3d253a14df90eb0000a6066780a15dd901a7519ce02d77a94985bused bynix
0.24.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069nohash-hasher
0.2.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451nom
7.1.3crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4adepends onnom8
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8depends onused bynormalize-line-endings
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5beused bynum_cpus
1.15.0crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593bdepends onnum_enum
0.5.9crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d829733185c1ca374f17e52b762f24f535ec625d2cc1f070e34c8a9068f341bdepends onnum_enum_derive
0.5.9crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2be1598bf1c313dcdd12092e3f1920f463462525a21b7b4e11b4168353d0123eused bynum-bigint
0.4.3crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75fnum-complex
0.4.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17ddepends onused bynum-format
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3depends onused bynum-integer
0.1.45crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9depends onnum-rational
0.4.1crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0num-traits
0.2.15crates.io↘ 2↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcddepends onused by- approx
0.5.1 - asn1-rs
0.3.1 - asn1-rs
0.5.1 - chrono
0.4.23 - der-parser
7.0.0 - der-parser
8.1.0 - finality-grandpa
0.16.1 - float-cmp
0.9.0 - integer-sqrt
0.1.5 - nalgebra
0.27.1 - num-bigint
0.4.3 - num-complex
0.4.3 - num-integer
0.1.45 - num-rational
0.4.1 - ordered-float
1.1.1 - orml-traits
0.4.1-dev - rand_distr
0.4.3 - sc-consensus-babe
0.10.0-dev - simba
0.5.1 - sp-arithmetic
6.0.0 - statrs
0.15.0 - wasmi_core
0.2.1
- approx
object
0.29.0crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53object
0.30.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439depends onused byoid-registry
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2adepends onused byoid-registry
0.6.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bffdepends ononce_cell
1.17.0crates.io↘ 0↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66used by- ahash
0.7.6 - clap
4.1.4 - coarsetime
0.1.22 - cxx-build
1.0.89 - frame-support
4.0.0-dev - libp2p-core
0.38.0 - libp2p-noise
0.41.0 - pest_meta
2.5.4 - proc-macro-crate
1.3.0 - ring
0.16.20 - sc-executor-wasmtime
0.10.0-dev - sc-offchain
4.0.0-dev - sc-tracing
4.0.0-dev - thread_local
1.1.4 - tiny-bip39
1.0.0 - tracing-core
0.1.30 - wasm-bindgen-backend
0.2.84 - wasmtime
1.0.2 - wasmtime-jit-debug
1.0.2 - which
4.4.0
- ahash
opal-runtime
0.9.36workspace↘ 98↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.3.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - logtest
2.0.0 - num_enum
0.5.9 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-collator-selection
4.0.0 - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-nonfungible
0.1.13 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-xcm
0.9.37 - parachain-info
0.1.0 - parity-scale-codec
3.3.0 - polkadot-parachain
0.9.37 - precompile-utils-macro
0.1.0 - rmrk-rpc
0.0.2 - scale-info
2.3.1 - serde
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
used by- app-promotion-rpc
opaque-debug
0.2.3crates.io↘ 0↖ 2opaque-debug
0.3.0crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssl-probe
0.1.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cfused byorchestra
0.0.4crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17e7d5b6bb115db09390bed8842c94180893dd83df3dfce7354f2a2aa090a4eedepends onorchestra-proc-macro
0.0.4crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2af4dabb2286b0be0e9711d2d24e25f6217048b71210cffd3daddc3b5c84e1fdepends onused byordered-float
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7depends onused byorml-tokens
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 8↖ 4sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.37#16b6c1149a15674d21c87244b7988a667e2c14d9depends onorml-traits
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 11↖ 6sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.37#16b6c1149a15674d21c87244b7988a667e2c14d9depends onorml-utilities
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 7↖ 1sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.37#16b6c1149a15674d21c87244b7988a667e2c14d9depends onused byorml-vesting
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 8↖ 3sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.37#16b6c1149a15674d21c87244b7988a667e2c14d9depends onorml-xcm-support
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 7↖ 1sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.37#16b6c1149a15674d21c87244b7988a667e2c14d9depends onused byorml-xtokens
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 14↖ 3sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.37#16b6c1149a15674d21c87244b7988a667e2c14d9depends onos_str_bytes
6.4.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723eeused byp256
0.11.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594used byp384
0.11.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aaused bypacked_simd_2
0.3.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282depends onused bypallet-app-promotion
0.1.4workspace↘ 17↖ 3depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-balances
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-unique
0.2.1 - parity-scale-codec
3.3.0 - scale-info
2.3.1 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2
- frame-benchmarking
pallet-aura
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-babe
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - unique-runtime
0.9.36 - westend-runtime
0.9.37
- kusama-runtime
pallet-babe
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.3.0 - scale-info
2.3.1 - sp-application-crypto
7.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-bags-list
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-balances
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.4 - pallet-bags-list
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-foreign-assets
0.1.0 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-treasury
4.0.0-dev - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - tests
0.1.1 - unique-runtime
0.9.36 - westend-runtime
0.9.37
- kusama-runtime
pallet-base-fee
1.0.0github.com/uniquenetwork/unique-frontier↘ 7↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onpallet-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-beefy-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-child-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-collator-selection
4.0.0workspace↘ 21↖ 3depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-configuration
0.1.3 - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.3.0 - rand
0.8.5 - scale-info
2.3.1 - serde
1.0.152 - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-tracing
6.0.0
- frame-benchmarking
pallet-collective
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-common
0.1.13workspace↘ 14↖ 15depends onused by- opal-runtime
0.9.36 - pallet-app-promotion
0.1.4 - pallet-evm-contract-helpers
0.3.0 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-nonfungible
0.1.13 - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.36 - tests
0.1.1 - unique-runtime
0.9.36 - up-rpc
0.1.3
- opal-runtime
pallet-configuration
0.1.3workspace↘ 11↖ 5depends onpallet-conviction-voting
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bypallet-democracy
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-election-provider-multi-phase
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-election-provider-support-benchmarking
4.0.0-dev - parity-scale-codec
3.3.0 - rand
0.8.5 - scale-info
2.3.1 - sp-arithmetic
6.0.0 - sp-core
7.0.0 - sp-io
7.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-std
5.0.0 - strum
0.24.1
- frame-benchmarking
pallet-election-provider-support-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-elections-phragmen
5.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-ethereum
4.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 20↖ 4sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends on- ethereum
0.14.0 - ethereum-types
0.14.1 - evm
0.37.0 - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.3.0 - rlp
0.5.2 - scale-info
2.3.1 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0
- ethereum
pallet-evm
6.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 19↖ 23sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends on- environmental
1.1.4 - evm
0.37.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex
0.4.3 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.3.0 - rlp
0.5.2 - scale-info
2.3.1 - serde
1.0.152 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0
used by- app-promotion-rpc
0.1.0 - opal-runtime
0.9.36 - pallet-app-promotion
0.1.4 - pallet-common
0.1.13 - pallet-ethereum
4.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.10 - pallet-nonfungible
0.1.13 - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.36 - tests
0.1.1 - uc-rpc
0.1.4 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-rpc
0.1.3
- environmental
pallet-evm-coder-substrate
0.1.3workspace↘ 13↖ 10depends onpallet-evm-contract-helpers
0.3.0workspace↘ 13↖ 4depends onpallet-evm-migration
0.1.1workspace↘ 9↖ 4pallet-evm-precompile-simple
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 3↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.37#02eff174cf5235971da686e5ed09f34f59a93ed3depends onpallet-evm-transaction-payment
0.1.1workspace↘ 10↖ 4pallet-fast-unstake
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-foreign-assets
0.1.0workspace↘ 16↖ 3depends onpallet-fungible
0.1.10workspace↘ 14↖ 5depends onpallet-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.3.0 - scale-info
2.3.1 - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-identity
4.0.0-devworkspace↘ 11↖ 0pallet-identity
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-im-online
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-indices
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-maintenance
0.1.0workspace↘ 6↖ 3pallet-membership
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-multisig
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-nis
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-nomination-pools
1.0.0github.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-nomination-pools-benchmarking
1.0.0github.com/paritytech/substrate↘ 13↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-nomination-pools-runtime-api
1.0.0-devgithub.com/paritytech/substrate↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4pallet-nonfungible
0.1.13workspace↘ 15↖ 7depends onpallet-offences
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-offences-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - parity-scale-codec
3.3.0 - scale-info
2.3.1 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-preimage
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-proxy
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-randomness-collective-flip
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-ranked-collective
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bypallet-recovery
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-referenda
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bypallet-refungible
0.2.13workspace↘ 14↖ 5depends onpallet-rmrk-core
0.1.2workspace↘ 13↖ 4depends onpallet-rmrk-equip
0.1.2workspace↘ 12↖ 3depends onpallet-scheduler
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-session
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 18sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-grandpa
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - unique-runtime
0.9.36 - westend-runtime
0.9.37
- kusama-runtime
pallet-session-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-society
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-staking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.3.0 - rand_chacha
0.2.2 - scale-info
2.3.1 - serde
1.0.152 - sp-application-crypto
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-staking-reward-curve
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4pallet-staking-reward-fn
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-state-trie-migration
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bypallet-structure
0.1.2workspace↘ 10↖ 8depends onpallet-sudo
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-template-transaction-payment
3.0.0github.com/uniquenetwork/pallet-sponsoring↘ 13↖ 3sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.37#72931fde262ecc4418928dd4bbeea10c64593175depends onpallet-test-utils
0.1.0workspace↘ 6↖ 3pallet-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-aura
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-session
4.0.0-dev - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - tests
0.1.1 - unique-runtime
0.9.36 - westend-runtime
0.9.37
- kusama-runtime
pallet-tips
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-transaction-payment
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-template-transaction-payment
3.0.0 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - tests
0.1.1 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - xcm-builder
0.9.37
- kusama-runtime
pallet-transaction-payment-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-transaction-payment-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-treasury
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-unique
0.2.1workspace↘ 17↖ 5depends on- ethereum
0.14.0 - evm-coder
0.3.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.13 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-nonfungible
0.1.13 - pallet-refungible
0.2.13 - parity-scale-codec
3.3.0 - scale-info
2.3.1 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2
- ethereum
pallet-unique-scheduler-v2
0.1.0workspace↘ 12↖ 2pallet-utility
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-vesting
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onpallet-whitelist
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bypallet-xcm
0.9.37github.com/paritytech/polkadot↘ 11↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onpallet-xcm-benchmarks
0.9.37github.com/paritytech/polkadot↘ 10↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onparachain-info
0.1.0github.com/paritytech/cumulus↘ 5↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.37#09418fc04c2608b123f36ca80f16df3d2096753bdepends onparity-db
0.4.3crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd684a725651d9588ef21f140a328b6b4f64e646b2e931f3e6f14f75eedf9980depends onparity-scale-codec
3.3.0crates.io↘ 7↖ 243sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3840933452adf7b3b9145e27086a5a3376c619dca1a21b1e5a5af0d54979beddepends onused by- app-promotion-rpc
0.1.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - ethereum
0.14.0 - evm
0.37.0 - evm-core
0.37.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.16.1 - fork-tree
3.0.0 - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.0.0 - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - impl-codec
0.6.0 - kusama-runtime
0.9.37 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.13 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parachain-info
0.1.0 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-core-primitives
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-erasure-coding
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-metrics
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-statement-distribution
0.9.37 - polkadot-statement-table
0.9.37 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rmrk-traits
0.1.0 - rococo-runtime
0.9.37 - 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-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool
4.0.0-dev - scale-info
2.3.1 - slot-range-helper
0.9.37 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
6.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-version-proc-macro
4.0.0-dev - sp-wasm-interface
7.0.0 - sp-weights
4.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-runtime
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.37 - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- app-promotion-rpc
parity-scale-codec-derive
3.1.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7bused byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-wasm
0.45.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304parking
2.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72parking_lot
0.11.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99parking_lot
0.12.1crates.io↘ 2↖ 49sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228fdepends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - fc-db
2.0.0-dev - finality-grandpa
0.16.1 - jsonrpsee-core
0.16.2 - kvdb-memorydb
0.13.0 - kvdb-rocksdb
0.17.0 - libp2p
0.50.0 - libp2p-core
0.38.0 - libp2p-dns
0.38.0 - libp2p-mplex
0.38.0 - libp2p-quic
0.7.0-alpha - libp2p-websocket
0.40.0 - libp2p-yamux
0.42.0 - parity-db
0.4.3 - polkadot-network-bridge
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-overseer
0.9.37 - prometheus
0.13.3 - prometheus-client
0.18.1 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-keystore
0.13.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0 - tokio
1.25.0 - trust-dns-resolver
0.22.0 - yamux
0.10.2
- beefy-gadget
parking_lot_core
0.8.6crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dcparking_lot_core
0.9.7crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521used bypaste
1.0.11crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deebapbkdf2
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffadepends onused bypbkdf2
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917depends onused bypeeking_take_while
0.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099used bypem
1.1.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8depends onused bypem-rfc7468
0.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adacdepends onused bypercent-encoding
2.2.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98epest
2.5.4crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ab62d2fa33726dbe6321cc97ef96d8cde531e3eeaf858a058de53a8a6d40d8fdepends onpest_derive
2.5.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bf026e2d0581559db66d837fe5242320f525d85c76283c61f4d51a1238d65eadepends onused bypest_generator
2.5.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2b27bd18aa01d91c8ed2b61ea23406a676b42d82609c6e2581fba42f0c15f17fused bypest_meta
2.5.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f02b677c1859756359fc9983c2e56a0237f18624a3789528804406b7e915e5ddepends onused bypetgraph
0.6.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143depends onpin-project
1.0.12crates.io↘ 1↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6eccdepends onused by- jsonrpsee-client-transport
0.16.2 - libp2p
0.50.0 - libp2p-core
0.38.0 - libp2p-swarm
0.41.1 - multistream-select
0.12.1 - orchestra
0.0.4 - polkadot-node-core-pvf
0.9.37 - polkadot-node-subsystem-util
0.9.37 - rw-stream-sink
0.3.0 - sc-network
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - tracing-futures
0.2.5
- jsonrpsee-client-transport
pin-project-internal
1.0.12crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55depends onused bypin-project-lite
0.1.12crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777used bypin-project-lite
0.2.9crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116pin-utils
0.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkcs8
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4bapkg-config
0.3.26crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160platforms
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94platforms
3.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630used bypolkadot-approval-distribution
0.9.37github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-availability-bitfield-distribution
0.9.37github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-availability-distribution
0.9.37github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.26 - lru
0.8.1 - parity-scale-codec
3.3.0 - polkadot-erasure-coding
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-primitives
0.9.37 - rand
0.8.5 - sp-core
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.38 - tracing-gum
0.9.37
used by- derive_more
polkadot-availability-recovery
0.9.37github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- fatality
0.0.6 - futures
0.3.26 - lru
0.8.1 - parity-scale-codec
3.3.0 - polkadot-erasure-coding
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-primitives
0.9.37 - rand
0.8.5 - sc-network
0.10.0-dev - thiserror
1.0.38 - tracing-gum
0.9.37
used by- fatality
polkadot-cli
0.9.37github.com/paritytech/polkadot↘ 20↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- clap
4.1.4 - frame-benchmarking-cli
4.0.0-dev - futures
0.3.26 - log
0.4.17 - polkadot-client
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-performance-test
0.9.37 - polkadot-service
0.9.37 - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keyring
7.0.0 - substrate-build-script-utils
3.0.0 - thiserror
1.0.38 - try-runtime-cli
0.10.0-dev
- clap
polkadot-client
0.9.37github.com/paritytech/polkadot↘ 35↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- async-trait
0.1.64 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-system
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.26 - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-core-primitives
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- async-trait
polkadot-collator-protocol
0.9.37github.com/paritytech/polkadot↘ 15↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- always-assert
0.1.2 - bitvec
1.0.1 - fatality
0.0.6 - futures
0.3.26 - futures-timer
3.0.2 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-primitives
0.9.37 - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - thiserror
1.0.38 - tracing-gum
0.9.37
used by- always-assert
polkadot-core-primitives
0.9.37github.com/paritytech/polkadot↘ 5↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3polkadot-dispute-distribution
0.9.37github.com/paritytech/polkadot↘ 18↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.26 - futures-timer
3.0.2 - indexmap
1.9.2 - lru
0.8.1 - parity-scale-codec
3.3.0 - polkadot-erasure-coding
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-primitives
0.9.37 - sc-network
0.10.0-dev - sp-application-crypto
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.38 - tracing-gum
0.9.37
used by- derive_more
polkadot-erasure-coding
0.9.37github.com/paritytech/polkadot↘ 7↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onpolkadot-gossip-support
0.9.37github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-network-bridge
0.9.37github.com/paritytech/polkadot↘ 17↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- always-assert
0.1.2 - async-trait
0.1.64 - bytes
1.4.0 - fatality
0.0.6 - futures
0.3.26 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - polkadot-node-metrics
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-overseer
0.9.37 - polkadot-primitives
0.9.37 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sp-consensus
0.10.0-dev - thiserror
1.0.38 - tracing-gum
0.9.37
- always-assert
polkadot-node-collation-generation
0.9.37github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-approval-voting
0.9.37github.com/paritytech/polkadot↘ 22↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bitvec
1.0.1 - derive_more
0.99.17 - futures
0.3.26 - futures-timer
3.0.2 - kvdb
0.13.0 - lru
0.8.1 - merlin
2.0.1 - parity-scale-codec
3.3.0 - polkadot-node-jaeger
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-primitives
0.9.37 - sc-keystore
4.0.0-dev - schnorrkel
0.9.1 - sp-application-crypto
7.0.0 - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-runtime
7.0.0 - thiserror
1.0.38 - tracing-gum
0.9.37
used by- bitvec
polkadot-node-core-av-store
0.9.37github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-backing
0.9.37github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-bitfield-signing
0.9.37github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-candidate-validation
0.9.37github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-chain-api
0.9.37github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-chain-selection
0.9.37github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-dispute-coordinator
0.9.37github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-parachains-inherent
0.9.37github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onpolkadot-node-core-provisioner
0.9.37github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-pvf
0.9.37github.com/paritytech/polkadot↘ 25↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- always-assert
0.1.2 - assert_matches
1.5.0 - cpu-time
1.0.0 - futures
0.3.26 - futures-timer
3.0.2 - parity-scale-codec
3.3.0 - pin-project
1.0.12 - polkadot-core-primitives
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-parachain
0.9.37 - rand
0.8.5 - rayon
1.6.1 - sc-executor
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - slotmap
1.0.6 - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-io
7.0.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-tracing
6.0.0 - sp-wasm-interface
7.0.0 - tempfile
3.3.0 - tokio
1.25.0 - tracing-gum
0.9.37
- always-assert
polkadot-node-core-pvf-checker
0.9.37github.com/paritytech/polkadot↘ 9↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-core-runtime-api
0.9.37github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-node-jaeger
0.9.37github.com/paritytech/polkadot↘ 11↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onpolkadot-node-metrics
0.9.37github.com/paritytech/polkadot↘ 12↖ 9sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onpolkadot-node-network-protocol
0.9.37github.com/paritytech/polkadot↘ 16↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- async-trait
0.1.64 - derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.26 - hex
0.4.3 - parity-scale-codec
3.3.0 - polkadot-node-jaeger
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-primitives
0.9.37 - rand
0.8.5 - sc-authority-discovery
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - strum
0.24.1 - thiserror
1.0.38 - tracing-gum
0.9.37
used by- cumulus-relay-chain-minimal-node
0.1.0 - polkadot-approval-distribution
0.9.37 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37
- async-trait
polkadot-node-primitives
0.9.37github.com/paritytech/polkadot↘ 15↖ 26sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bounded-vec
0.6.0 - futures
0.3.26 - parity-scale-codec
3.3.0 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - schnorrkel
0.9.1 - serde
1.0.152 - sp-application-crypto
7.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-maybe-compressed-blob
4.1.0-dev - thiserror
1.0.38 - zstd
0.11.2+zstd.1.5.2
used by- cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-erasure-coding
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-performance-test
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37
- bounded-vec
polkadot-node-subsystem
0.9.37github.com/paritytech/polkadot↘ 3↖ 26sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.37 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-api
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-core-runtime-api
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37
- cumulus-client-collator
polkadot-node-subsystem-types
0.9.37github.com/paritytech/polkadot↘ 16↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- async-trait
0.1.64 - derive_more
0.99.17 - futures
0.3.26 - orchestra
0.0.4 - polkadot-node-jaeger
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-primitives
0.9.37 - polkadot-statement-table
0.9.37 - sc-network
0.10.0-dev - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-babe
0.10.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
polkadot-node-subsystem-util
0.9.37github.com/paritytech/polkadot↘ 26↖ 18sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- async-trait
0.1.64 - derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.26 - futures-channel
0.3.26 - itertools
0.10.5 - kvdb
0.13.0 - lru
0.8.1 - parity-db
0.4.3 - parity-scale-codec
3.3.0 - parking_lot
0.11.2 - pin-project
1.0.12 - polkadot-node-jaeger
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-overseer
0.9.37 - polkadot-primitives
0.9.37 - prioritized-metered-channel
0.2.0 - rand
0.8.5 - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.38 - tracing-gum
0.9.37
used by- cumulus-relay-chain-minimal-node
0.1.0 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37
- async-trait
polkadot-overseer
0.9.37github.com/paritytech/polkadot↘ 16↖ 12sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- async-trait
0.1.64 - futures
0.3.26 - futures-timer
3.0.2 - lru
0.8.1 - orchestra
0.0.4 - parking_lot
0.12.1 - polkadot-node-metrics
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-primitives
0.9.37 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - tikv-jemalloc-ctl
0.5.0 - tracing-gum
0.9.37
used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - polkadot-network-bridge
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-service
0.9.37
- async-trait
polkadot-parachain
0.9.37github.com/paritytech/polkadot↘ 9↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - opal-runtime
0.9.36 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-primitives
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - xcm-builder
0.9.37
- cumulus-client-network
polkadot-performance-test
0.9.37github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-primitives
0.9.37github.com/paritytech/polkadot↘ 19↖ 55sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bitvec
1.0.1 - hex-literal
0.3.4 - parity-scale-codec
3.3.0 - polkadot-core-primitives
0.9.37 - polkadot-parachain
0.9.37 - scale-info
2.3.1 - serde
1.0.152 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - kusama-runtime
0.9.37 - kusama-runtime-constants
0.9.37 - polkadot-approval-distribution
0.9.37 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-client
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-erasure-coding
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-api
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-core-runtime-api
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-rpc
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-constants
0.9.37 - polkadot-runtime-metrics
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37 - polkadot-statement-table
0.9.37 - rococo-runtime
0.9.37 - rococo-runtime-constants
0.9.37 - tracing-gum
0.9.37 - unique-node
0.9.36 - westend-runtime
0.9.37 - westend-runtime-constants
0.9.37
- bitvec
polkadot-rpc
0.9.37github.com/paritytech/polkadot↘ 25↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - jsonrpsee
0.16.2 - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-primitives
0.9.37 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-rpc
4.0.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev
used by- beefy-gadget
polkadot-runtime
0.9.37github.com/paritytech/polkadot↘ 82↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.37 - parity-scale-codec
3.3.0 - polkadot-primitives
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-constants
0.9.37 - polkadot-runtime-parachains
0.9.37 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.152 - serde_derive
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- bitvec
polkadot-runtime-common
0.9.37github.com/paritytech/polkadot↘ 41↖ 9sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - libsecp256k1
0.7.1 - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.3.0 - polkadot-primitives
0.9.37 - polkadot-runtime-parachains
0.9.37 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.152 - serde_derive
1.0.152 - slot-range-helper
0.9.37 - sp-api
4.0.0-dev - sp-beefy
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - static_assertions
1.1.0 - xcm
0.9.37
- bitvec
polkadot-runtime-constants
0.9.37github.com/paritytech/polkadot↘ 7↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onpolkadot-runtime-metrics
0.9.37github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3polkadot-runtime-parachains
0.9.37github.com/paritytech/polkadot↘ 36↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bitflags
1.3.2 - bitvec
1.0.1 - derive_more
0.99.17 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.3.0 - polkadot-primitives
0.9.37 - polkadot-runtime-metrics
0.9.37 - rand
0.8.5 - rand_chacha
0.3.1 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.152 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - static_assertions
1.1.0 - xcm
0.9.37 - xcm-executor
0.9.37
- bitflags
polkadot-service
0.9.37github.com/paritytech/polkadot↘ 99↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- async-trait
0.1.64 - beefy-gadget
4.0.0-dev - frame-support
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.26 - hex-literal
0.3.4 - kusama-runtime
0.9.37 - kvdb
0.13.0 - kvdb-rocksdb
0.17.0 - lru
0.8.1 - mmr-gadget
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-db
0.4.3 - polkadot-approval-distribution
0.9.37 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-client
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-api
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-core-runtime-api
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-rpc
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-constants
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-statement-distribution
0.9.37 - rococo-runtime
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.152 - serde_json
1.0.92 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38 - tracing-gum
0.9.37 - westend-runtime
0.9.37
- async-trait
polkadot-statement-distribution
0.9.37github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bypolkadot-statement-table
0.9.37github.com/paritytech/polkadot↘ 3↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3polling
2.5.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6used bypoly1305
0.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246edeused bypolyval
0.4.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cdused bypolyval
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1used byppv-lite86
0.2.17crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6deprecompile-utils-macro
0.1.0workspace↘ 5↖ 3predicates
2.1.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addddepends onused bypredicates-core
1.0.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72f883590242d3c6fc5bf50299011695fa6590c2c70eac95ee1bdb9a733ad1a2predicates-tree
1.0.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54ff541861505aabf6ea722d2131ee980b8276e10a1297b94e896dd8b621850ddepends onused byprettyplease
0.1.23crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78depends onused byprimitive-types
0.12.1crates.io↘ 6↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66prioritized-metered-channel
0.2.0crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum382698e48a268c832d0b181ed438374a6bb708a82a8ca273bb0f61c74cf209c4depends onproc-macro-crate
1.3.0crates.io↘ 2↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34depends onused by- cumulus-pallet-parachain-system-proc-macro
0.1.0 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - jsonrpsee-proc-macros
0.16.2 - multihash-derive
0.8.0 - num_enum_derive
0.5.9 - orchestra-proc-macro
0.0.4 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
3.1.4 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - sp-api-proc-macro
4.0.0-dev - sp-runtime-interface-proc-macro
6.0.0 - substrate-test-utils-derive
0.10.0-dev - tracing-gum-proc-macro
0.9.37
- cumulus-pallet-parachain-system-proc-macro
proc-macro-error
1.0.4crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro-hack
0.5.20+deprecatedcrates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068used byproc-macro2
1.0.51crates.io↘ 1↖ 75sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6depends onused by- asn1-rs-derive
0.1.0 - asn1-rs-derive
0.4.0 - asn1-rs-impl
0.1.0 - async-trait
0.1.64 - auto_impl
1.0.1 - bindgen
0.60.1 - bondrewd-derive
0.3.18 - clap_derive
4.1.0 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.89 - cxxbridge-macro
1.0.89 - darling_core
0.14.2 - derivative
2.2.0 - derive_builder_core
0.11.2 - derive_more
0.99.17 - displaydoc
0.2.3 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.4 - enumn
0.1.6 - evm-coder-procedural
0.3.0 - evm-coder-substrate-procedural
0.1.0 - expander
0.0.4 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.26 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - mockall_derive
0.11.3 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - num_enum_derive
0.5.9 - orchestra-proc-macro
0.0.4 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
3.1.4 - pest_generator
2.5.4 - pin-project-internal
1.0.12 - precompile-utils-macro
0.1.0 - prettyplease
0.1.23 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.3.0 - prost-derive
0.11.6 - quote
1.0.23 - ref-cast-impl
1.0.14 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - serde_derive
1.0.152 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - spez-macros
0.1.0 - ss58-registry
1.38.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.107 - synstructure
0.12.6 - thiserror-impl
1.0.38 - tokio-macros
1.8.2 - tracing-attributes
0.1.23 - tracing-gum-proc-macro
0.9.37 - wasm-bindgen-backend
0.2.84 - wasm-bindgen-macro-support
0.2.84 - xcm-procedural
0.9.37 - zeroize_derive
1.3.3
- asn1-rs-derive
prometheus
0.13.3crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8cprometheus-client
0.18.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83cd1b99916654a69008fd66b4f9397fbe08e6e51dfe23d4417acf5d3b8cb87cused byprometheus-client-derive-text-encode
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66a455fbcb954c1a7decf3c586e860fd7889cddf4b8e164be736dbac95a953cddepends onused byprost
0.11.6crates.io↘ 2↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698depends onprost-build
0.11.6crates.io↘ 14↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012edepends onprost-codec
0.3.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0dc34979ff898b6e141106178981ce2596c387ea6e62533facfc61a37fc879c0prost-derive
0.11.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5dused byprost-types
0.11.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788depends onused bypsm
0.1.21crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874depends onused byquartz-runtime
0.9.36workspace↘ 97↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.3.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - logtest
2.0.0 - num_enum
0.5.9 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-collator-selection
4.0.0 - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-nonfungible
0.1.13 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-xcm
0.9.37 - parachain-info
0.1.0 - parity-scale-codec
3.3.0 - polkadot-parachain
0.9.37 - precompile-utils-macro
0.1.0 - rmrk-rpc
0.0.2 - scale-info
2.3.1 - serde
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
used by- app-promotion-rpc
quick-error
1.2.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0used byquicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquinn-proto
0.9.2crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4ced82a24bb281af338b9e8f94429b6eca01b4e66d899f40031f074e74c9depends onused byquote
1.0.23crates.io↘ 1↖ 79sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7bdepends onused by- asn1-rs-derive
0.1.0 - asn1-rs-derive
0.4.0 - asn1-rs-impl
0.1.0 - async-trait
0.1.64 - auto_impl
1.0.1 - bindgen
0.60.1 - bondrewd-derive
0.3.18 - clap_derive
4.1.0 - ctor
0.1.26 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.89 - cxxbridge-macro
1.0.89 - darling_core
0.14.2 - darling_macro
0.14.2 - derivative
2.2.0 - derive_builder_core
0.11.2 - derive_more
0.99.17 - displaydoc
0.2.3 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.4 - enumn
0.1.6 - evm-coder-procedural
0.3.0 - evm-coder-substrate-procedural
0.1.0 - expander
0.0.4 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.26 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - libp2p-swarm-derive
0.31.0 - mockall_derive
0.11.3 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - num_enum_derive
0.5.9 - orchestra-proc-macro
0.0.4 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
3.1.4 - pest_generator
2.5.4 - pin-project-internal
1.0.12 - polkadot-performance-test
0.9.37 - precompile-utils-macro
0.1.0 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.3.0 - prost-derive
0.11.6 - ref-cast-impl
1.0.14 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - serde_derive
1.0.152 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - spez-macros
0.1.0 - ss58-registry
1.38.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - struct-versioning
0.1.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.107 - synstructure
0.12.6 - thiserror-impl
1.0.38 - tokio-macros
1.8.2 - tracing-attributes
0.1.23 - tracing-gum-proc-macro
0.9.37 - wasm-bindgen-backend
0.2.84 - wasm-bindgen-macro
0.2.84 - wasm-bindgen-macro-support
0.2.84 - xcm-procedural
0.9.37 - zeroize_derive
1.3.3
- asn1-rs-derive
radium
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09used byrand
0.7.3crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03rand
0.8.5crates.io↘ 3↖ 64sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404used by- cumulus-client-pov-recovery
0.1.0 - fc-rpc
2.0.0-dev - fixed-hash
0.8.0 - frame-benchmarking-cli
4.0.0-dev - interceptor
0.8.2 - jsonrpsee-core
0.16.2 - libp2p-core
0.38.0 - libp2p-kad
0.42.1 - libp2p-mdns
0.42.0 - libp2p-mplex
0.38.0 - libp2p-noise
0.41.0 - libp2p-ping
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-request-response
0.23.0 - libp2p-swarm
0.41.1 - libp2p-webrtc
0.4.0-alpha - libsecp256k1
0.7.1 - mick-jaeger
0.1.8 - nalgebra
0.27.1 - names
0.13.0 - pallet-collator-selection
4.0.0 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - parity-db
0.4.3 - polkadot-approval-distribution
0.9.37 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-runtime-parachains
0.9.37 - quinn-proto
0.9.2 - rand_distr
0.4.3 - rtp
0.6.8 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sdp
0.5.3 - soketto
0.7.1 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - statrs
0.15.0 - stun
0.4.4 - tiny-bip39
1.0.0 - trust-dns-proto
0.22.0 - turn
0.6.1 - twox-hash
1.6.3 - wasmtime-runtime
1.0.2 - webrtc
0.6.0 - webrtc-dtls
0.7.0 - webrtc-ice
0.9.0 - webrtc-media
0.5.0 - webrtc-sctp
0.7.0 - webrtc-util
0.7.0 - yamux
0.10.2
- cumulus-client-pov-recovery
rand_chacha
0.2.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onrand_chacha
0.3.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88depends onrand_core
0.5.1crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.4crates.io↘ 1↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922cdepends onrand_distr
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31depends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_pcg
0.3.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73edepends onrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.6.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7depends onrayon-core
1.10.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835bused byrcgen
0.9.3crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcddrcgen
0.10.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785bdepends onused byredox_syscall
0.2.16crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519adepends onredox_users
0.4.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2breed-solomon-novelpoly
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221ref-cast
1.0.14crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c78fb8c9293bcd48ef6fce7b4ca950ceaf21210de6e105a883ee280c0f7b9eddepends onused byref-cast-impl
1.0.14crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f9c0c92af03644e4806106281fe2e068ac5bc0ae74a707266d06ea27bccee5fdepends onused byregalloc2
0.3.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd43a209257d978ef079f3d446331d0f1794f5e0fc19b306a199983857833a779used byregex
1.7.1crates.io↘ 3↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733regex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-syntax
0.6.28crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848remove_dir_all
0.5.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7depends onused byresolv-conf
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00depends onused byrfc6979
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabbdepends onused byring
0.16.20crates.io↘ 7↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcripemd
0.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09fdepends onrlp
0.5.2crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ecdepends onrlp-derive
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672adepends onused byrmrk-traits
0.1.0workspace↘ 3↖ 3rocksdb
0.19.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e9562ea1d70c0cc63a34a22d977753b50cca91cc6b6527750463bd5dd8697bcdepends onused byrococo-runtime
0.9.37github.com/paritytech/polkadot↘ 79↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- beefy-merkle-tree
4.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parity-scale-codec
3.3.0 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - rococo-runtime-constants
0.9.37 - scale-info
2.3.1 - serde
1.0.152 - serde_derive
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
used by- beefy-merkle-tree
rococo-runtime-constants
0.9.37github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused byrpassword
7.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322depends onused byrtcp
0.7.2crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1919efd6d4a6a85d13388f9487549bb8e359f17198cc03ffd72f79b553873691rtnetlink
0.10.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0depends onused byrtoolbox
0.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524adepends onused byrtp
0.6.8crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2a095411ff00eed7b12e4c6a118ba984d113e1079582570d56a5ee723f11f80rustc_version
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onused byrustc_version
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366depends onused byrustc-demangle
0.1.21crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342rustc-hash
1.1.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustc-hex
2.1.0crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rusticata-macros
4.1.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfaf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632depends onrustix
0.35.13crates.io↘ 6↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum727a1a6d65f786ec22df8a81ca3121107f235970dc1705ed681d3e6e8b9cd5f9rustix
0.36.8crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644used byrustls
0.19.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7used byrustls
0.20.8crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2fdepends onrustls-native-certs
0.6.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50rustls-pemfile
1.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59bdepends onused byrustversion
1.0.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70used byrw-stream-sink
0.3.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04ryu
1.0.12crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decdeused bysafe-mix
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215cdepends onsame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused bysc-allocator
4.1.0-devgithub.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sc-authority-discovery
0.10.0-devgithub.com/paritytech/substrate↘ 20↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - futures
0.3.26 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.50.0 - log
0.4.17 - parity-scale-codec
3.3.0 - prost
0.11.6 - prost-build
0.11.6 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-network-common
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-basic-authorship
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- futures
0.3.26 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.3.0 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev
- futures
sc-block-builder
0.10.0-devgithub.com/paritytech/substrate↘ 9↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-chain-spec
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-chain-spec-derive
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used bysc-cli
0.10.0-devgithub.com/paritytech/substrate↘ 33↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- array-bytes
4.2.0 - chrono
0.4.23 - clap
4.1.4 - fdlimit
0.2.1 - futures
0.3.26 - libp2p
0.50.0 - log
0.4.17 - names
0.13.0 - parity-scale-codec
3.3.0 - rand
0.8.5 - regex
1.7.1 - rpassword
7.2.0 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.152 - serde_json
1.0.92 - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keyring
7.0.0 - sp-keystore
0.13.0 - sp-panic-handler
5.0.0 - sp-runtime
7.0.0 - sp-version
5.0.0 - thiserror
1.0.38 - tiny-bip39
1.0.0 - tokio
1.25.0
- array-bytes
sc-client-api
4.0.0-devgithub.com/paritytech/substrate↘ 19↖ 51sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- fnv
1.0.7 - futures
0.3.26 - log
0.4.17 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-executor
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-storage
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev
used by- beefy-gadget
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - mmr-gadget
4.0.0-dev - polkadot-client
0.9.37 - polkadot-node-core-chain-api
0.9.37 - polkadot-overseer
0.9.37 - polkadot-rpc
0.9.37 - polkadot-service
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2
- fnv
sc-client-db
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- hash-db
0.15.2 - kvdb
0.13.0 - kvdb-memorydb
0.13.0 - kvdb-rocksdb
0.17.0 - linked-hash-map
0.5.6 - log
0.4.17 - parity-db
0.4.3 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-state-db
0.10.0-dev - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0
- hash-db
sc-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - futures
0.3.26 - futures-timer
3.0.2 - libp2p
0.50.0 - log
0.4.17 - mockall
0.11.3 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.152 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - polkadot-client
0.9.37 - polkadot-service
0.9.37 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - unique-node
0.9.36
- async-trait
sc-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 22↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - futures
0.3.26 - log
0.4.17 - parity-scale-codec
3.3.0 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 31↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - fork-tree
3.0.0 - futures
0.3.26 - log
0.4.17 - merlin
2.0.1 - num-bigint
0.4.3 - num-rational
0.4.1 - num-traits
0.2.15 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-keystore
4.0.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-consensus-babe-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 15↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-consensus-epochs
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-consensus-manual-seal
0.10.0-devgithub.com/paritytech/substrate↘ 27↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- assert_matches
1.5.0 - async-trait
0.1.64 - futures
0.3.26 - jsonrpsee
0.16.2 - log
0.4.17 - parity-scale-codec
3.3.0 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.152 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- assert_matches
sc-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - futures
0.3.26 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.3.0 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0
- async-trait
sc-executor
0.10.0-devgithub.com/paritytech/substrate↘ 17↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- lru
0.8.1 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-executor-common
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-io
7.0.0 - sp-panic-handler
5.0.0 - sp-runtime-interface
7.0.0 - sp-trie
7.0.0 - sp-version
5.0.0 - sp-wasm-interface
7.0.0 - tracing
0.1.37 - wasmi
0.13.2
- lru
sc-executor-common
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-executor-wasmi
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-executor-wasmtime
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-finality-grandpa
0.10.0-devgithub.com/paritytech/substrate↘ 33↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- ahash
0.7.6 - array-bytes
4.2.0 - async-trait
0.1.64 - dyn-clone
1.0.10 - finality-grandpa
0.16.1 - fork-tree
3.0.0 - futures
0.3.26 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.92 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- ahash
sc-finality-grandpa-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-informant
0.10.0-devgithub.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-keystore
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-network
0.10.0-devgithub.com/paritytech/substrate↘ 35↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- array-bytes
4.2.0 - async-trait
0.1.64 - asynchronous-codec
0.6.1 - backtrace
0.3.67 - bytes
1.4.0 - either
1.8.1 - fnv
1.0.7 - futures
0.3.26 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.50.0 - log
0.4.17 - lru
0.8.1 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - pin-project
1.0.12 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.152 - serde_json
1.0.92 - smallvec
1.10.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38 - unsigned-varint
0.7.1 - zeroize
1.5.7
used by- beefy-gadget
4.0.0-dev - cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - polkadot-availability-recovery
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-service
0.9.37 - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-service
0.10.0-dev - unique-node
0.9.36 - unique-rpc
0.1.2
- array-bytes
sc-network-bitswap
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-network-common
0.10.0-devgithub.com/paritytech/substrate↘ 19↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - bitflags
1.3.2 - bytes
1.4.0 - futures
0.3.26 - futures-timer
3.0.2 - libp2p
0.50.0 - linked_hash_set
0.1.4 - parity-scale-codec
3.3.0 - prost-build
0.11.6 - sc-consensus
0.10.0-dev - sc-peerset
4.0.0-dev - serde
1.0.152 - smallvec
1.10.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- beefy-gadget
4.0.0-dev - cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - polkadot-network-bridge
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-service
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev
- async-trait
sc-network-gossip
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-network-light
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-network-sync
0.10.0-devgithub.com/paritytech/substrate↘ 25↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- array-bytes
4.2.0 - async-trait
0.1.64 - fork-tree
3.0.0 - futures
0.3.26 - libp2p
0.50.0 - log
0.4.17 - lru
0.8.1 - mockall
0.11.3 - parity-scale-codec
3.3.0 - prost
0.11.6 - prost-build
0.11.6 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - smallvec
1.10.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
used by- array-bytes
sc-network-transactions
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 23↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- array-bytes
4.2.0 - bytes
1.4.0 - fnv
1.0.7 - futures
0.3.26 - futures-timer
3.0.2 - hyper
0.14.24 - hyper-rustls
0.23.2 - libp2p
0.50.0 - num_cpus
1.15.0 - once_cell
1.17.0 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - threadpool
1.8.1 - tracing
0.1.37
- array-bytes
sc-peerset
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sc-proposer-metrics
0.10.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sc-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 22↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- futures
0.3.26 - jsonrpsee
0.16.2 - log
0.4.17 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.92 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-version
5.0.0
- futures
sc-rpc-api
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-rpc-server
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-rpc-spec-v2
0.10.0-devgithub.com/paritytech/substrate↘ 19↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- array-bytes
4.2.0 - futures
0.3.26 - futures-util
0.3.26 - hex
0.4.3 - jsonrpsee
0.16.2 - log
0.4.17 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.152 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-version
5.0.0 - thiserror
1.0.38 - tokio-stream
0.1.11
used by- array-bytes
sc-service
0.10.0-devgithub.com/paritytech/substrate↘ 58↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - directories
4.0.1 - exit-future
0.2.0 - futures
0.3.26 - futures-timer
3.0.2 - jsonrpsee
0.16.2 - log
0.4.17 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - pin-project
1.0.12 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-informant
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.152 - serde_json
1.0.92 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - static_init
1.0.3 - substrate-prometheus-endpoint
0.10.0-dev - tempfile
3.3.0 - thiserror
1.0.38 - tokio
1.25.0 - tracing
0.1.37 - tracing-futures
0.2.5
used by- cumulus-client-cli
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-cli
0.9.37 - polkadot-client
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-service
0.9.37 - sc-cli
0.10.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2
- async-trait
sc-state-db
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used bysc-sync-state-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-sysinfo
6.0.0-devgithub.com/paritytech/substrate↘ 12↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsc-telemetry
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - polkadot-service
0.9.37 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - unique-node
0.9.36
- cumulus-client-consensus-aura
sc-tracing
4.0.0-devgithub.com/paritytech/substrate↘ 24↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.23 - lazy_static
1.4.0 - libc
0.2.139 - log
0.4.17 - once_cell
1.17.0 - parking_lot
0.12.1 - regex
1.7.1 - 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.152 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-tracing
6.0.0 - thiserror
1.0.38 - tracing
0.1.37 - tracing-log
0.1.3 - tracing-subscriber
0.2.25
- ansi_term
sc-tracing-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used bysc-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 19↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- async-trait
0.1.64 - futures
0.3.26 - futures-timer
3.0.2 - linked-hash-map
0.5.6 - log
0.4.17 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.152 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-tracing
6.0.0 - sp-transaction-pool
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.38
- async-trait
sc-transaction-pool-api
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysc-utils
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- beefy-gadget
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev
- beefy-gadget
scale-info
2.3.1crates.io↘ 6↖ 141sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608depends onused by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - ethbloom
0.13.0 - ethereum
0.14.0 - ethereum-types
0.14.1 - evm
0.37.0 - evm-core
0.37.0 - finality-grandpa
0.16.1 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.13 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parachain-info
0.1.0 - polkadot-core-primitives
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - primitive-types
0.12.1 - quartz-runtime
0.9.36 - rmrk-traits
0.1.0 - rococo-runtime
0.9.37 - sc-rpc-api
0.10.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-weights
4.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - unique-runtime
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - westend-runtime
0.9.37 - xcm
0.9.37 - xcm-builder
0.9.37
- cumulus-pallet-aura-ext
scale-info-derive
2.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum303959cf613a6f6efd19ed4b4ad5bf79966a13352716299ad532cfb115f4205cused byschannel
0.1.21crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscopeguard
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdscratch
1.0.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2used bysct
0.6.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228cedepends onused bysct
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4depends onused bysdp
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d22a5ef407871893fd72b4562ee15e4742269b173959db4b8df6f538c414e13used bysec1
0.3.0crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928secp256k1
0.24.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62depends onused bysecp256k1-sys
0.6.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4bdepends onused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused bysecurity-framework
2.8.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254depends onused bysecurity-framework-sys
2.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4depends onused bysemver
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537depends onused bysemver
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403depends onused bysemver
1.0.16crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2adepends onsemver-parser
0.7.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used byserde
1.0.152crates.io↘ 1↖ 126sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efbdepends onused by- beef
0.5.2 - beefy-gadget-rpc
4.0.0-dev - bincode
1.3.3 - bstr
1.2.0 - camino
1.1.2 - cargo-platform
0.1.2 - cargo_metadata
0.14.2 - cid
0.8.6 - cranelift-entity
0.88.2 - cumulus-relay-chain-rpc-interface
0.1.0 - ed25519-dalek
1.0.1 - ethereum
0.14.0 - evm
0.37.0 - evm-core
0.37.0 - fc-rpc-core
1.1.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-metadata
15.0.0 - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
4.3.6 - impl-serde
0.4.0 - indexmap
1.9.2 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - kusama-runtime
0.9.37 - libp2p-webrtc
0.4.0-alpha - libsecp256k1
0.7.1 - mmr-rpc
4.0.0-dev - multiaddr
0.16.0 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-offences
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-xcm
0.9.37 - parity-scale-codec
3.3.0 - polkadot-node-primitives
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rmrk-traits
0.1.0 - rococo-runtime
0.9.37 - rtp
0.6.8 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - scale-info
2.3.1 - semver
1.0.16 - serde_json
1.0.92 - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-beefy
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-storage
7.0.0 - sp-version
5.0.0 - sp-weights
4.0.0 - ss58-registry
1.38.0 - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - time
0.3.17 - tinytemplate
1.2.1 - toml
0.5.11 - tracing-serde
0.1.3 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - wasmtime
1.0.2 - wasmtime-cache
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-types
1.0.2 - webrtc
0.6.0 - webrtc-dtls
0.7.0 - webrtc-ice
0.9.0 - westend-runtime
0.9.37
- beef
serde_derive
1.0.152crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541edepends onserde_json
1.0.92crates.io↘ 3↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7434af0dc1cbd59268aa98b4c22c131c0584d2232f6fb166efb993e2832e896adepends onused by- cargo_metadata
0.14.2 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc-core
1.1.0-dev - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.6 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - polkadot-service
0.9.37 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - ss58-registry
1.38.0 - tinytemplate
1.2.1 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - unique-node
0.9.36 - webrtc
0.6.0 - webrtc-ice
0.9.0
- cargo_metadata
sha-1
0.9.8crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6sha2
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69used bysha2
0.9.9crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800sha2
0.10.6crates.io↘ 3↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0depends onsha3
0.8.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecfused bysha3
0.10.6crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9depends onsha3-const
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb04774de876479a8f712e787f8271b14712971329a4be66c6dff144db7cfc343used bysharded-slab
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31depends onused byshlex
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3used bysignal-hook-registry
1.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0depends onused bysignature
1.6.4crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7cdepends onsimba
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5cused byslab
0.4.7crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcefdepends onslice-group-by
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ecused byslot-range-helper
0.9.37github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3slotmap
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342depends onused bysmallvec
1.10.0crates.io↘ 0↖ 43sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0used by- cfg-expr
0.10.3 - cranelift-codegen
0.88.2 - cranelift-frontend
0.88.2 - cranelift-wasm
0.88.2 - fc-db
2.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.37 - kusama-runtime-constants
0.9.37 - kvdb
0.13.0 - kvdb-rocksdb
0.17.0 - libp2p
0.50.0 - libp2p-core
0.38.0 - libp2p-dns
0.38.0 - libp2p-identify
0.41.1 - libp2p-kad
0.42.1 - libp2p-mdns
0.42.0 - libp2p-mplex
0.38.0 - libp2p-request-response
0.23.0 - libp2p-swarm
0.41.1 - multistream-select
0.12.1 - opal-runtime
0.9.36 - pallet-configuration
0.1.3 - parking_lot_core
0.8.6 - parking_lot_core
0.9.7 - polkadot-node-subsystem-types
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-constants
0.9.37 - quartz-runtime
0.9.36 - regalloc2
0.3.2 - rococo-runtime
0.9.37 - rococo-runtime-constants
0.9.37 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-state-machine
0.13.0 - sp-weights
4.0.0 - tracing-subscriber
0.2.25 - trie-db
0.24.0 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - westend-runtime-constants
0.9.37
- cfg-expr
snap
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831used bysnow
0.9.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12ba5f4d4ff12bdb6a169ed51b7c48c0e0ac4b0b4b31012b2571e97d78d3201ddepends onused bysocket2
0.4.7crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebddepends onsoketto
0.7.1crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2depends onsp-api
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 78sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- app-promotion-rpc
0.1.0 - beefy-gadget
4.0.0-dev - beefy-merkle-tree
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.37 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-whitelist
4.0.0-dev - polkadot-client
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-overseer
0.9.37 - polkadot-primitives
0.9.37 - polkadot-rpc
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.37
- app-promotion-rpc
sp-api-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used bysp-application-crypto
7.0.0github.com/paritytech/substrate↘ 6↖ 28sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - frame-benchmarking
4.0.0-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime-parachains
0.9.37 - 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 - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
7.0.0
- beefy-gadget
sp-arithmetic
6.0.0github.com/paritytech/substrate↘ 7↖ 24sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends 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.37 - opal-runtime
0.9.36 - pallet-configuration
0.1.3 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - polkadot-primitives
0.9.37 - quartz-runtime
0.9.36 - sc-client-db
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-weights
4.0.0 - unique-runtime
0.9.36 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- beefy-gadget
sp-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used bysp-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-block-builder
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used by- cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - fc-rpc
2.0.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - polkadot-client
0.9.37 - polkadot-rpc
0.9.37 - polkadot-runtime
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - westend-runtime
0.9.37
- cumulus-client-consensus-aura
sp-blockchain
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 52sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-client
0.9.37 - polkadot-node-core-chain-api
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-rpc
0.9.37 - polkadot-service
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2
- beefy-gadget
sp-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 34sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-rpc
2.0.0-dev - mmr-gadget
4.0.0-dev - polkadot-client
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-rpc
0.9.37 - polkadot-service
0.9.37 - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-service
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev
- beefy-gadget
sp-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - kusama-runtime
0.9.37 - pallet-babe
4.0.0-dev - polkadot-client
0.9.37 - polkadot-node-core-runtime-api
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-rpc
0.9.37 - polkadot-runtime
0.9.37 - polkadot-service
0.9.37 - rococo-runtime
0.9.37 - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - westend-runtime
0.9.37
- cumulus-relay-chain-minimal-node
sp-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-consensus-vrf
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-core
7.0.0github.com/paritytech/substrate↘ 35↖ 162sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- array-bytes
4.2.0 - base58
0.2.0 - bitflags
1.3.2 - blake2
0.10.6 - dyn-clonable
0.9.0 - ed25519-zebra
3.1.0 - futures
0.3.26 - hash-db
0.15.2 - hash256-std-hasher
0.15.2 - impl-serde
0.4.0 - lazy_static
1.4.0 - libsecp256k1
0.7.1 - log
0.4.17 - merlin
2.0.1 - parity-scale-codec
3.3.0 - parking_lot
0.12.1 - primitive-types
0.12.1 - rand
0.8.5 - regex
1.7.1 - scale-info
2.3.1 - schnorrkel
0.9.1 - secp256k1
0.24.3 - secrecy
0.8.0 - serde
1.0.152 - sp-core-hashing
5.0.0 - sp-debug-derive
5.0.0 - sp-externalities
0.13.0 - sp-runtime-interface
7.0.0 - sp-std
5.0.0 - sp-storage
7.0.0 - ss58-registry
1.38.0 - substrate-bip39
0.4.4 - thiserror
1.0.38 - tiny-bip39
1.0.0 - zeroize
1.5.7
used by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.37 - kusama-runtime-constants
0.9.37 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - pallet-app-promotion
0.1.4 - pallet-bags-list
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nonfungible
0.1.13 - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-refungible
0.2.13 - pallet-session
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-cli
0.9.37 - polkadot-client
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-core-primitives
0.9.37 - polkadot-erasure-coding
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-constants
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-table
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - rococo-runtime-constants
0.9.37 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-beefy
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keyring
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-weights
4.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.37 - westend-runtime-constants
0.9.37 - xcm-executor
0.9.37
- array-bytes
sp-core-hashing
5.0.0github.com/paritytech/substrate↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-core-hashing-proc-macro
5.0.0github.com/paritytech/substrate↘ 4↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-database
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-debug-derive
5.0.0github.com/paritytech/substrate↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-externalities
0.13.0github.com/paritytech/substrate↘ 4↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-finality-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-inherents
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 33sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-timestamp
4.0.0-dev - polkadot-client
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - 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-runtime
0.9.36 - westend-runtime
0.9.37
- cumulus-client-consensus-aura
sp-io
7.0.0github.com/paritytech/substrate↘ 18↖ 78sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-precompile-simple
2.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - polkadot-cli
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - sc-executor
0.10.0-dev - sc-sysinfo
6.0.0-dev - sp-application-crypto
7.0.0 - sp-beefy
4.0.0-dev - sp-runtime
7.0.0 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- cumulus-pallet-dmp-queue
sp-keyring
7.0.0github.com/paritytech/substrate↘ 4↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-keystore
0.13.0github.com/paritytech/substrate↘ 10↖ 34sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends 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.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-primitives
0.9.37 - polkadot-rpc
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-io
7.0.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36
- beefy-gadget
sp-maybe-compressed-blob
4.1.0-devgithub.com/paritytech/substrate↘ 2↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-mmr-primitives
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-npos-elections
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-panic-handler
5.0.0github.com/paritytech/substrate↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-rpc
6.0.0github.com/paritytech/substrate↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-runtime
7.0.0github.com/paritytech/substrate↘ 15↖ 210sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- app-promotion-rpc
0.1.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-merkle-tree
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fp-consensus
2.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.37 - kusama-runtime-constants
0.9.37 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.13 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - polkadot-client
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-core-primitives
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-rpc
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-constants
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.37 - rococo-runtime-constants
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - slot-range-helper
0.9.37 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-version
5.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.37 - westend-runtime-constants
0.9.37 - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- app-promotion-rpc
sp-runtime-interface
7.0.0github.com/paritytech/substrate↘ 11↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-runtime-interface-proc-macro
6.0.0github.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used bysp-session
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 18sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- kusama-runtime
0.9.37 - opal-runtime
0.9.36 - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - polkadot-client
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.36 - unique-runtime
0.9.36 - westend-runtime
0.9.37
- kusama-runtime
sp-staking
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 21sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used by- frame-support
4.0.0-dev - kusama-runtime
0.9.37 - pallet-babe
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - polkadot-statement-distribution
0.9.37 - rococo-runtime
0.9.37 - sp-session
4.0.0-dev - westend-runtime
0.9.37
- frame-support
sp-state-machine
0.13.0github.com/paritytech/substrate↘ 13↖ 23sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - polkadot-service
0.9.37 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-io
7.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4
- cumulus-client-network
sp-std
5.0.0github.com/paritytech/substrate↘ 0↖ 160sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used by- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
4.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.13 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - polkadot-core-primitives
0.9.37 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-metrics
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.37 - sc-sysinfo
6.0.0-dev - slot-range-helper
0.9.37 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
7.0.0 - sp-core-hashing
5.0.0 - sp-externalities
0.13.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
6.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-wasm-interface
7.0.0 - sp-weights
4.0.0 - tests
0.1.1 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- app-promotion-rpc
sp-storage
7.0.0github.com/paritytech/substrate↘ 6↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysp-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-tracing
6.0.0github.com/paritytech/substrate↘ 5↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4sp-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-transaction-storage-proof
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysp-trie
7.0.0github.com/paritytech/substrate↘ 16↖ 17sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-client-consensus-common
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - frame-benchmarking-cli
4.0.0-dev - pallet-session
4.0.0-dev - polkadot-erasure-coding
0.9.37 - polkadot-service
0.9.37 - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-io
7.0.0 - sp-state-machine
0.13.0 - sp-transaction-storage-proof
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4
- cumulus-client-consensus-common
sp-version
5.0.0github.com/paritytech/substrate↘ 10↖ 18sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- cumulus-pallet-parachain-system
0.1.0 - frame-system
4.0.0-dev - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - polkadot-runtime
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.36 - westend-runtime
0.9.37
- cumulus-pallet-parachain-system
sp-version-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used bysp-wasm-interface
7.0.0github.com/paritytech/substrate↘ 6↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsp-weights
4.0.0github.com/paritytech/substrate↘ 8↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused by- frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime-constants
0.9.37 - pallet-scheduler
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-runtime-constants
0.9.37 - rococo-runtime-constants
0.9.37 - sp-runtime
7.0.0 - try-runtime-cli
0.10.0-dev - westend-runtime-constants
0.9.37
- frame-support
spez
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum304d2fd6a79879f77b207ba8cd5079c22f872eaad65a3fb8d71799e5bacf368bspez-macros
0.1.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc7fa06037d8ccb6cdadc151129062ebc9e4281c1ea44b2c704582245d017d1dcused byspin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byspki
0.6.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212bdepends onused byss58-registry
1.38.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume40c020d72bc0a9c5660bb71e4a6fdef081493583062c474740a7d59f55f0e7bdepends onused bystable_deref_trait
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 14sourceregistry+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
1.0.3crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6depends onused bystatic_init_macro
0.5.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbfused bystatic_init_macro
1.0.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acfused bystatrs
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05bdbb8e4e78216a85785a85d3ec3183144f98d0097b9281802c019bb07a6f05used bystrsim
0.10.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623used bystruct-versioning
0.1.0workspace↘ 2↖ 2depends onstrum
0.24.1crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63fdepends onstrum_macros
0.24.3crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59stun
0.4.4crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7e94b1ec00bad60e6410e058b52f1c66de3dc5fe4d62d09b3e52bb7d3b73e25depends onsubstrate-bip39
0.4.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733cused bysubstrate-build-script-utils
3.0.0github.com/paritytech/substrate↘ 1↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsubstrate-frame-rpc-system
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsubstrate-prometheus-endpoint
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 24sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4used by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - fc-rpc
2.0.0-dev - polkadot-node-metrics
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-service
0.9.37 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - unique-node
0.9.36
- beefy-gadget
substrate-rpc-client
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4substrate-state-trie-migration-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onused bysubstrate-test-utils
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4substrate-test-utils-derive
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4substrate-wasm-builder
5.0.0-devgithub.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends onsubstring
1.4.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86depends onused bysubtle
2.4.1crates.io↘ 0↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601used by- aes-gcm
0.8.0 - aes-gcm
0.9.4 - ccm
0.3.0 - crypto-bigint
0.4.9 - crypto-mac
0.8.0 - crypto-mac
0.10.1 - crypto-mac
0.11.1 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-rc.0 - digest
0.10.6 - elliptic-curve
0.12.3 - ff
0.12.1 - group
0.12.1 - libsecp256k1-core
0.3.0 - schnorrkel
0.9.1 - sec1
0.3.0 - snow
0.9.1 - stun
0.4.4 - universal-hash
0.4.1 - webrtc-dtls
0.7.0 - webrtc-srtp
0.9.1
- aes-gcm
syn
1.0.107crates.io↘ 3↖ 76sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5used by- asn1-rs-derive
0.1.0 - asn1-rs-derive
0.4.0 - asn1-rs-impl
0.1.0 - async-trait
0.1.64 - auto_impl
1.0.1 - bondrewd-derive
0.3.18 - clap_derive
4.1.0 - ctor
0.1.26 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.89 - cxxbridge-macro
1.0.89 - darling_core
0.14.2 - darling_macro
0.14.2 - data-encoding-macro-internal
0.1.10 - derivative
2.2.0 - derive_builder_core
0.11.2 - derive_builder_macro
0.11.2 - derive_more
0.99.17 - displaydoc
0.2.3 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.4 - enumn
0.1.6 - evm-coder-procedural
0.3.0 - evm-coder-substrate-procedural
0.1.0 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.26 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - libp2p-swarm-derive
0.31.0 - mockall_derive
0.11.3 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - num_enum_derive
0.5.9 - orchestra-proc-macro
0.0.4 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
3.1.4 - pest_generator
2.5.4 - pin-project-internal
1.0.12 - precompile-utils-macro
0.1.0 - prettyplease
0.1.23 - proc-macro-error
1.0.4 - prometheus-client-derive-text-encode
0.3.0 - prost-build
0.11.6 - prost-derive
0.11.6 - ref-cast-impl
1.0.14 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.3.1 - serde_derive
1.0.152 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - spez-macros
0.1.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - struct-versioning
0.1.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - synstructure
0.12.6 - thiserror-impl
1.0.38 - tokio-macros
1.8.2 - tracing-attributes
0.1.23 - tracing-gum-proc-macro
0.9.37 - wasm-bindgen-backend
0.2.84 - wasm-bindgen-macro-support
0.2.84 - xcm-procedural
0.9.37 - zeroize_derive
1.3.3
- asn1-rs-derive
synstructure
0.12.6crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210fsystem-configuration
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fdused bysystem-configuration-sys
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9depends onused bytap
1.0.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369used bytarget-lexicon
0.12.5crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9410d0f6853b1d94f0e519fb95df60f29d2c1eff2d921ffdf01a4c8a3b54f12dtempfile
3.3.0crates.io↘ 6↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4termcolor
1.2.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6depends ontermtree
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8used bytests
0.1.1workspace↘ 24↖ 0depends on- evm-coder
0.3.0 - fp-evm-mapping
0.1.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.13 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-fungible
0.1.10 - pallet-nonfungible
0.1.13 - pallet-refungible
0.2.13 - pallet-structure
0.1.2 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.2.1 - parity-scale-codec
3.3.0 - scale-info
2.3.1 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2 - up-sponsorship
0.1.0
- evm-coder
thiserror
1.0.38crates.io↘ 1↖ 123sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0depends onused by- asn1-rs
0.3.1 - asn1-rs
0.5.1 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - bounded-vec
0.6.0 - cumulus-relay-chain-interface
0.1.0 - fatality
0.0.6 - fatality-proc-macro
0.0.6 - fc-consensus
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.6 - interceptor
0.8.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-types
0.16.2 - libp2p-core
0.38.0 - libp2p-identify
0.41.1 - libp2p-kad
0.42.1 - libp2p-noise
0.41.0 - libp2p-quic
0.7.0-alpha - libp2p-swarm
0.41.1 - libp2p-tls
0.1.0-alpha - libp2p-webrtc
0.4.0-alpha - libp2p-yamux
0.42.0 - netlink-packet-utils
0.5.2 - netlink-proto
0.10.0 - orchestra
0.0.4 - pest
2.5.4 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-cli
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-erasure-coding
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-jaeger
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-primitives
0.9.37 - polkadot-node-subsystem-types
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-performance-test
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37 - prioritized-metered-channel
0.2.0 - prometheus
0.13.3 - prost-codec
0.3.0 - quinn-proto
0.9.2 - redox_users
0.4.3 - reed-solomon-novelpoly
1.0.0 - rtcp
0.7.2 - rtnetlink
0.10.1 - rtp
0.6.8 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sdp
0.5.3 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-mmr-primitives
4.0.0-dev - sp-state-machine
0.13.0 - sp-timestamp
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - stun
0.4.4 - substrate-prometheus-endpoint
0.10.0-dev - tiny-bip39
1.0.0 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - turn
0.6.1 - wasm-opt
0.110.2 - wasmtime-cranelift
1.0.2 - wasmtime-environ
1.0.2 - wasmtime-jit
1.0.2 - wasmtime-runtime
1.0.2 - wasmtime-types
1.0.2 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-dtls
0.7.0 - webrtc-ice
0.9.0 - webrtc-mdns
0.5.2 - webrtc-media
0.5.0 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0 - x509-parser
0.13.2 - x509-parser
0.14.0
- asn1-rs
thiserror-impl
1.0.38crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36fdepends onused bythousands
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820thread_local
1.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180depends onused bythreadpool
1.8.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onthrift
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb82ca8f46f95b3ce96081fe3dd89160fdea970c254bb72925255d1b62aae692eused bytikv-jemalloc-ctl
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume37706572f4b151dff7a0146e040804e9c26fe3a3118591112f05cf12a4216c1used bytikv-jemalloc-sys
0.5.2+5.3.0-patchedcrates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec45c14da997d0925c7835883e4d5c181f196fa142f8c19d7643d1e9af2592c3depends ontime
0.1.45crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805aused bytime
0.3.17crates.io↘ 4↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376time-core
0.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fdused bytime-macros
0.2.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2depends onused bytiny-bip39
1.0.0crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861depends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinytemplate
1.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bcdepends onused bytinyvec
1.6.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50depends ontinyvec_macros
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20used bytokio
1.25.0crates.io↘ 12↖ 44sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3afdepends onused by- cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-remote-externalities
0.10.0-dev - h2
0.3.15 - hyper
0.14.24 - hyper-rustls
0.23.2 - if-watch
3.0.0 - interceptor
0.8.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - libp2p-mdns
0.42.0 - libp2p-quic
0.7.0-alpha - libp2p-swarm
0.41.1 - libp2p-tcp
0.38.0 - libp2p-webrtc
0.4.0-alpha - netlink-proto
0.10.0 - netlink-sys
0.8.4 - polkadot-node-core-pvf
0.9.37 - polkadot-node-jaeger
0.9.37 - rtnetlink
0.10.1 - sc-cli
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - stun
0.4.4 - substrate-prometheus-endpoint
0.10.0-dev - substrate-test-utils
4.0.0-dev - tokio-rustls
0.23.4 - tokio-stream
0.1.11 - tokio-util
0.7.4 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - turn
0.6.1 - unique-node
0.9.36 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-dtls
0.7.0 - webrtc-ice
0.9.0 - webrtc-mdns
0.5.2 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
- cumulus-relay-chain-interface
tokio-macros
1.8.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8depends onused bytokio-rustls
0.23.4crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59depends ontokio-stream
0.1.11crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223cetokio-util
0.7.4crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740depends ontoml
0.5.11crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234depends ontoml_datetime
0.5.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5used bytoml_edit
0.18.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12bdepends onused bytower
0.4.13crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1ctower-http
0.3.5crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858depends onused bytower-layer
0.3.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0used bytower-service
0.3.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52tracing
0.1.37crates.io↘ 5↖ 34sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - h2
0.3.15 - hyper
0.14.24 - jsonrpsee
0.16.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - orchestra
0.0.4 - prioritized-metered-channel
0.2.0 - quinn-proto
0.9.2 - sc-executor
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sp-io
7.0.0 - sp-state-machine
0.13.0 - sp-tracing
6.0.0 - sp-trie
7.0.0 - tokio-util
0.7.4 - tower
0.4.13 - tracing-futures
0.2.5 - tracing-gum
0.9.37 - tracing-subscriber
0.2.25 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0
- cumulus-client-collator
tracing-attributes
0.1.23crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081adepends onused bytracing-core
0.1.30crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213adepends ontracing-futures
0.2.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2depends onused bytracing-gum
0.9.37github.com/paritytech/polkadot↘ 4↖ 28sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused by- polkadot-approval-distribution
0.9.37 - polkadot-availability-bitfield-distribution
0.9.37 - polkadot-availability-distribution
0.9.37 - polkadot-availability-recovery
0.9.37 - polkadot-collator-protocol
0.9.37 - polkadot-dispute-distribution
0.9.37 - polkadot-gossip-support
0.9.37 - polkadot-network-bridge
0.9.37 - polkadot-node-collation-generation
0.9.37 - polkadot-node-core-approval-voting
0.9.37 - polkadot-node-core-av-store
0.9.37 - polkadot-node-core-backing
0.9.37 - polkadot-node-core-bitfield-signing
0.9.37 - polkadot-node-core-candidate-validation
0.9.37 - polkadot-node-core-chain-api
0.9.37 - polkadot-node-core-chain-selection
0.9.37 - polkadot-node-core-dispute-coordinator
0.9.37 - polkadot-node-core-parachains-inherent
0.9.37 - polkadot-node-core-provisioner
0.9.37 - polkadot-node-core-pvf
0.9.37 - polkadot-node-core-pvf-checker
0.9.37 - polkadot-node-core-runtime-api
0.9.37 - polkadot-node-metrics
0.9.37 - polkadot-node-network-protocol
0.9.37 - polkadot-node-subsystem-util
0.9.37 - polkadot-overseer
0.9.37 - polkadot-service
0.9.37 - polkadot-statement-distribution
0.9.37
- polkadot-approval-distribution
tracing-gum-proc-macro
0.9.37github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3used bytracing-log
0.1.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922tracing-serde
0.1.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1depends onused bytracing-subscriber
0.2.25crates.io↘ 15↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71depends ontrie-db
0.24.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum004e1e8f92535694b4cb1444dc5a8073ecf0815e3357f729638b9f8fc4062908trie-root
0.17.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891depends onused bytriehash
0.8.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5cdepends onused bytrust-dns-proto
0.22.0crates.io↘ 18↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26depends ontrust-dns-resolver
0.22.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfedepends onused bytry-runtime-cli
0.10.0-devgithub.com/paritytech/substrate↘ 24↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#946507ba9ef13e263534176b7b74e26fc56efbd4depends on- clap
4.1.4 - frame-remote-externalities
0.10.0-dev - frame-try-runtime
0.10.0-dev - hex
0.4.3 - log
0.4.17 - parity-scale-codec
3.3.0 - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.152 - serde_json
1.0.92 - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-debug-derive
5.0.0 - sp-externalities
0.13.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-version
5.0.0 - sp-weights
4.0.0 - substrate-rpc-client
0.10.0-dev - zstd
0.11.2+zstd.1.5.2
- clap
tt-call
1.0.9crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881dfused byturn
0.6.1crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4712ee30d123ec7ae26d1e1b218395a16c87cdbaf4b3925d170d684af62ea5e8depends onused bytwox-hash
1.6.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675used bytypenum
1.16.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bbauc-rpc
0.1.4workspace↘ 28↖ 2depends on- anyhow
1.0.69 - app-promotion-rpc
0.1.0 - frame-benchmarking
4.0.0-dev - jsonrpsee
0.16.2 - opal-runtime
0.9.36 - pallet-evm
6.0.0-dev - parity-scale-codec
3.3.0 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - sc-client-api
4.0.0-dev - sc-executor
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0 - trie-db
0.24.0 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - zstd
0.11.2+zstd.1.5.2
- anyhow
uint
0.9.5crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52unicode-bidi
0.3.10crates.io↘ 0↖ 2unicode-ident
1.0.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebcused byunicode-normalization
0.1.22crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921depends onunicode-width
0.1.10crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8bunicode-xid
0.2.4crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8cunique-node
0.9.36workspace↘ 69↖ 0depends on- app-promotion-rpc
0.1.0 - clap
4.1.4 - cumulus-client-cli
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - futures
0.3.26 - log
0.4.17 - opal-runtime
0.9.36 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-scale-codec
3.3.0 - polkadot-cli
0.9.37 - polkadot-primitives
0.9.37 - polkadot-service
0.9.37 - quartz-runtime
0.9.36 - rmrk-rpc
0.0.2 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-network
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.152 - serde_json
1.0.92 - sp-api
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-core
7.0.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-build-script-utils
3.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.25.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3
- app-promotion-rpc
unique-rpc
0.1.2workspace↘ 27↖ 1depends on- app-promotion-rpc
0.1.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - jsonrpsee
0.16.2 - pallet-transaction-payment-rpc
4.0.0-dev - rmrk-rpc
0.0.2 - sc-client-api
4.0.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.152 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-runtime
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.4 - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3
used by- app-promotion-rpc
unique-runtime
0.9.36workspace↘ 97↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.3.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - logtest
2.0.0 - num_enum
0.5.9 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.1.4 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-collator-selection
4.0.0 - pallet-common
0.1.13 - pallet-configuration
0.1.3 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-nonfungible
0.1.13 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-xcm
0.9.37 - parachain-info
0.1.0 - parity-scale-codec
3.3.0 - polkadot-parachain
0.9.37 - precompile-utils-macro
0.1.0 - rmrk-rpc
0.0.2 - scale-info
2.3.1 - serde
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.36 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
used by- app-promotion-rpc
universal-hash
0.4.1crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05depends onunsigned-varint
0.7.1crates.io↘ 4↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836untrusted
0.7.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aup-data-structs
0.2.2workspace↘ 12↖ 20depends onused by- opal-runtime
0.9.36 - pallet-app-promotion
0.1.4 - pallet-common
0.1.13 - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.10 - pallet-nonfungible
0.1.13 - pallet-refungible
0.2.13 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.36 - tests
0.1.1 - uc-rpc
0.1.4 - unique-node
0.9.36 - unique-rpc
0.1.2 - unique-runtime
0.9.36 - up-rpc
0.1.3
- opal-runtime
up-pov-estimate-rpc
0.1.0workspace↘ 7↖ 7up-sponsorship
0.1.0github.com/uniquenetwork/pallet-sponsoring↘ 1↖ 7sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.37#72931fde262ecc4418928dd4bbeea10c64593175depends onurl
2.3.1crates.io↘ 3↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643uuid
1.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79depends onused byvaluable
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6dused byvalue-bag
1.0.0-alpha.9crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55depends onused byvcpkg
0.2.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaccd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426used byversion_check
0.9.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483fvoid
1.0.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887dwaitgroup
0.1.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd1f50000a783467e6c0200f9d10642f4bc424e39efc1b770203e88b488f79292depends onwaker-fn
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceecawalkdir
2.3.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56want
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0depends onused bywasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.10.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasi
0.11.0+wasi-snapshot-preview1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423wasm-bindgen
0.2.84crates.io↘ 2↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53bdepends onwasm-bindgen-backend
0.2.84crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9depends onwasm-bindgen-futures
0.4.34crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454wasm-bindgen-macro
0.2.84crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5used bywasm-bindgen-macro-support
0.2.84crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6used bywasm-instrument
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa1dafb3e60065305741e83db35c6c2584bb3725b692b5b66148a38d72ace6cddepends onused bywasm-opt
0.110.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb68e8037b4daf711393f4be2056246d12d975651b14d581520ad5d1f19219cecdepends onwasm-opt-cxx-sys
0.110.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91adbad477e97bba3fbd21dd7bfb594e7ad5ceb9169ab1c93ab9cb0ada636b6fused bywasm-opt-sys
0.110.2crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec4fa5a322a4e6ac22fd141f498d56afbdbf9df5debeac32380d2dcaa3e06941wasm-timer
0.2.5crates.io↘ 7↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onwasmi
0.13.2crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422wasmi_core
0.2.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7used bywasmi-validation
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867bdepends onused bywasmparser
0.89.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab5d3e08b13876f96dd55608d03cd4883a0545884932d5adf11925876c96daefdepends onwasmtime
1.0.2crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ad5af6ba38311282f2a21670d96e78266e8c8e2f38cbcd52c254df6ccbc7731depends onwasmtime-asm-macros
1.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45de63ddfc8b9223d1adc8f7b2ee5f35d1f6d112833934ad7ea66e4f4339e597depends onused bywasmtime-cache
1.0.2crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbcd849399d17d2270141cfe47fa0d91ee52d5f8ea9b98cf7ddde0d53e5f79882depends onused bywasmtime-cranelift
1.0.2crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4bd91339b742ff20bfed4532a27b73c86b5bcbfedd6bea2dcdf2d64471e1b5c6depends onused bywasmtime-environ
1.0.2crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebb881c61f4f627b5d45c54e629724974f8a8890d455bcbe634330cc27309644depends onwasmtime-jit
1.0.2crates.io↘ 17↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1985c628011fe26adf5e23a5301bdc79b245e0e338f14bb58b39e4e25e4d8681depends onused bywasmtime-jit-debug
1.0.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf671b588486f5ccec8c5a3dba6b4c07eac2e66ab8c60e6f4e53717c77f709731depends onwasmtime-runtime
1.0.2crates.io↘ 17↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee8f92ad4b61736339c29361da85769ebc200f184361959d1792832e592a1afddepends onwasmtime-types
1.0.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23d61cb4c46e837b431196dd06abb11731541021916d03476a178b54dc07aebweb-sys
0.3.61crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97depends onwebpki
0.21.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4eadepends onused bywebpki
0.22.0crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bddepends onwebpki-roots
0.22.6crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87depends onwebrtc
0.6.0crates.io↘ 33↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d3bc9049bdb2cea52f5fd4f6f728184225bdb867ed0dc2410eab6df5bdd67bbdepends on- arc-swap
1.6.0 - async-trait
0.1.64 - bytes
1.4.0 - hex
0.4.3 - interceptor
0.8.2 - lazy_static
1.4.0 - log
0.4.17 - rand
0.8.5 - rcgen
0.9.3 - regex
1.7.1 - ring
0.16.20 - rtcp
0.7.2 - rtp
0.6.8 - rustls
0.19.1 - sdp
0.5.3 - serde
1.0.152 - serde_json
1.0.92 - sha2
0.10.6 - stun
0.4.4 - thiserror
1.0.38 - time
0.3.17 - tokio
1.25.0 - turn
0.6.1 - url
2.3.1 - waitgroup
0.1.2 - webrtc-data
0.6.0 - webrtc-dtls
0.7.0 - webrtc-ice
0.9.0 - webrtc-mdns
0.5.2 - webrtc-media
0.5.0 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
used by- arc-swap
webrtc-data
0.6.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ef36a4d12baa6e842582fe9ec16a57184ba35e1a09308307b67d43ec8883100depends onused bywebrtc-dtls
0.7.0crates.io↘ 33↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7021987ae0a2ed6c8cd33f68e98e49bb6e74ffe9543310267b48a1bbe3900e5fdepends on- aes
0.6.0 - aes-gcm
0.8.0 - async-trait
0.1.64 - bincode
1.3.3 - block-modes
0.7.0 - byteorder
1.4.3 - ccm
0.3.0 - curve25519-dalek
3.2.0 - der-parser
8.1.0 - elliptic-curve
0.12.3 - hkdf
0.12.3 - hmac
0.10.1 - log
0.4.17 - oid-registry
0.6.1 - p256
0.11.1 - p384
0.11.2 - rand
0.8.5 - rand_core
0.6.4 - rcgen
0.9.3 - ring
0.16.20 - rustls
0.19.1 - sec1
0.3.0 - serde
1.0.152 - sha-1
0.9.8 - sha2
0.9.9 - signature
1.6.4 - subtle
2.4.1 - thiserror
1.0.38 - tokio
1.25.0 - webpki
0.21.4 - webrtc-util
0.7.0 - x25519-dalek
2.0.0-pre.1 - x509-parser
0.13.2
used by- aes
webrtc-ice
0.9.0crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum494483fbb2f5492620871fdc78b084aed8807377f6e3fe88b2e49f0a9c9c41d7depends onused bywebrtc-mdns
0.5.2crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106used bywebrtc-media
0.5.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee2a3c157a040324e5049bcbd644ffc9079e6738fa2cfab2bcff64e5cc4c00d7depends onused bywebrtc-sctp
0.7.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d47adcd9427eb3ede33d5a7f3424038f63c965491beafcc20bc650a2f6679c0depends onused bywebrtc-srtp
0.9.1crates.io↘ 16↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6183edc4c1c6c0175f8812eefdce84dfa0aea9c3ece71c2bf6ddd3c964de3da5depends onused bywebrtc-util
0.7.0crates.io↘ 13↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93f1db1727772c05cf7a2cfece52c3aca8045ca1e176cd517d323489aa3c6d87depends onwepoll-ffi
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fbdepends onused bywestend-runtime
0.9.37github.com/paritytech/polkadot↘ 83↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - parity-scale-codec
3.3.0 - polkadot-parachain
0.9.37 - polkadot-primitives
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - rustc-hex
2.1.0 - scale-info
2.3.1 - serde
1.0.152 - serde_derive
1.0.152 - smallvec
1.10.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-beefy
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - westend-runtime-constants
0.9.37 - xcm
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
used by- bitvec
westend-runtime-constants
0.9.37github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused bywhich
4.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269depends onused bywidestring
0.5.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983used bywinapi
0.3.9crates.io↘ 2↖ 27sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.23 - cpu-time
1.0.0 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - fs2
0.4.3 - gethostname
0.2.3 - hostname
0.3.1 - iana-time-zone
0.1.53 - if-addrs
0.7.0 - ipconfig
0.3.1 - libloading
0.7.4 - parking_lot_core
0.8.6 - remove_dir_all
0.5.3 - ring
0.16.20 - rpassword
7.2.0 - rtoolbox
0.0.1 - socket2
0.4.7 - static_init
1.0.3 - tempfile
3.3.0 - time
0.1.45 - walkdir
2.3.2 - webrtc-util
0.7.0 - winapi-util
0.1.5 - winreg
0.10.1
- ansi_term
winapi-i686-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6used bywinapi-util
0.1.5crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178depends onwinapi-x86_64-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183fused bywindows
0.34.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829fdepends onused bywindows_aarch64_gnullvm
0.42.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608windows_aarch64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881dused bywindows_aarch64_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47used bywindows_aarch64_msvc
0.42.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7windows_i686_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688edused bywindows_i686_gnu
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6used bywindows_i686_gnu
0.42.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640windows_i686_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956used bywindows_i686_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024used bywindows_i686_msvc
0.42.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605windows_x86_64_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4used bywindows_x86_64_gnu
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1used bywindows_x86_64_gnu
0.42.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45windows_x86_64_gnullvm
0.42.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463windows_x86_64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9used bywindows_x86_64_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680used bywindows_x86_64_msvc
0.42.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffdwindows-sys
0.36.1crates.io↘ 5↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2depends onwindows-sys
0.42.0crates.io↘ 7↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7depends onwindows-sys
0.45.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0depends onwindows-targets
0.42.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7depends onused bywinreg
0.10.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869ddepends onused bywyz
0.5.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9eddepends onused byx25519-dalek
1.1.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byx25519-dalek
2.0.0-pre.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48dfused byx509-parser
0.13.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1cdepends onused byx509-parser
0.14.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8depends onused byxcm
0.9.37github.com/paritytech/polkadot↘ 7↖ 22sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - orml-traits
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-configuration
0.1.3 - pallet-foreign-assets
0.1.0 - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-common
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - xcm-builder
0.9.37 - xcm-executor
0.9.37
- cumulus-pallet-dmp-queue
xcm-builder
0.9.37github.com/paritytech/polkadot↘ 13↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onxcm-executor
0.9.37github.com/paritytech/polkadot↘ 11↖ 16sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3depends onused by- cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.37 - opal-runtime
0.9.36 - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-foreign-assets
0.1.0 - pallet-xcm
0.9.37 - pallet-xcm-benchmarks
0.9.37 - polkadot-runtime
0.9.37 - polkadot-runtime-parachains
0.9.37 - quartz-runtime
0.9.36 - rococo-runtime
0.9.37 - unique-runtime
0.9.36 - westend-runtime
0.9.37 - xcm-builder
0.9.37
- cumulus-pallet-xcmp-queue
xcm-procedural
0.9.37github.com/paritytech/polkadot↘ 4↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.37#645723987cf9662244be8faf4e9b63e8b9a1b3a3used byyamux
0.10.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5used byyasna
0.5.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaed2e7a52e3744ab4d0c05c20aa065258e84c49fd4226f5191b2ed29712710b4depends onzeroize
1.5.7crates.io↘ 1↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149fdepends onused by- chacha20
0.8.2 - chacha20poly1305
0.9.1 - crypto-bigint
0.4.9 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-rc.0 - der
0.6.1 - ed25519-dalek
1.0.1 - ed25519-zebra
3.1.0 - elliptic-curve
0.12.3 - libp2p-core
0.38.0 - libp2p-noise
0.41.0 - merlin
2.0.1 - rfc6979
0.3.1 - sc-network
0.10.0-dev - schnorrkel
0.9.1 - sec1
0.3.0 - secrecy
0.8.0 - sp-core
7.0.0 - substrate-bip39
0.4.4 - tiny-bip39
1.0.0 - x25519-dalek
1.1.1 - x25519-dalek
2.0.0-pre.1
- chacha20
zeroize_derive
1.3.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36cused byzstd
0.11.2+zstd.1.5.2crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4depends onzstd-safe
5.0.2+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4dbdepends onused byzstd-sys
2.0.6+zstd.1.5.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68a3f9792c0c3dc6c165840a75f47ae1f4da402c2d006881129579f6597e801bdepends onused by
Cargo.tomldiffbeforeafterboth--- a/Cargo.toml
+++ b/Cargo.toml
@@ -43,9 +43,6 @@
pallet-inflation = { path = "pallets/inflation", default-features = false }
pallet-maintenance = { default-features = false, path = "pallets/maintenance" }
pallet-nonfungible = { default-features = false, path = "pallets/nonfungible" }
-pallet-proxy-rmrk-core = { default-features = false, path = "pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
-pallet-proxy-rmrk-equip = { default-features = false, path = "pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
-rmrk-traits = { default-features = false, path = "primitives/rmrk-traits" }
pallet-refungible = { default-features = false, path = "pallets/refungible" }
pallet-structure = { default-features = false, path = "pallets/structure" }
pallet-unique = { path = "pallets/unique", default-features = false }
@@ -53,7 +50,6 @@
pallet-test-utils = { default-features = false, path = "test-pallets/utils" }
pallet-app-promotion = { path = "pallets/app-promotion", default-features = false }
app-promotion-rpc = { path = "primitives/app_promotion_rpc", default-features = false }
-rmrk-rpc = { path = "primitives/rmrk-rpc", default-features = false }
# Unique: Runtimes
unique-runtime = { path = "runtime/unique" }
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -121,14 +121,6 @@
bench-scheduler:
make _bench PALLET=unique-scheduler-v2 PALLET_DIR=scheduler-v2
-.PHONY: bench-rmrk-core
-bench-rmrk-core:
- make _bench PALLET=proxy-rmrk-core
-
-.PHONY: bench-rmrk-equip
-bench-rmrk-equip:
- make _bench PALLET=proxy-rmrk-equip
-
.PHONY: bench-foreign-assets
bench-foreign-assets:
make _bench PALLET=foreign-assets
@@ -146,7 +138,7 @@
make _bench PALLET=app-promotion PALLET_DIR=app-promotion
.PHONY: bench
-# Disabled: bench-scheduler, bench-collator-selection, bench-identity, bench-rmrk-core, bench-rmrk-equip
+# Disabled: bench-scheduler, bench-collator-selection, bench-identity
bench: bench-common bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets
.PHONY: check
client/rpc/Cargo.tomldiffbeforeafterboth--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -14,7 +14,6 @@
codec = { workspace = true, package = "parity-scale-codec" }
app-promotion-rpc = { workspace = true }
-rmrk-rpc = { workspace = true }
up-common = { workspace = true }
up-data-structs = { workspace = true }
up-pov-estimate-rpc = { workspace = true, optional = true }
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -17,7 +17,7 @@
// Original License
use std::sync::Arc;
-use codec::{Decode, Encode};
+use codec::Decode;
use jsonrpsee::{
core::{RpcResult as Result},
proc_macros::rpc,
@@ -32,15 +32,8 @@
use sp_blockchain::HeaderBackend;
use up_rpc::UniqueApi as UniqueRuntimeApi;
use app_promotion_rpc::AppPromotionApi as AppPromotionRuntimeApi;
-
-// RMRK
-use rmrk_rpc::RmrkApi as RmrkRuntimeApi;
-use up_data_structs::{
- RmrkCollectionId, RmrkNftId, RmrkBaseId, RmrkNftChild, RmrkThemeName, RmrkResourceId,
-};
pub use app_promotion_unique_rpc::AppPromotionApiServer;
-pub use rmrk_unique_rpc::RmrkApiServer;
#[cfg(feature = "pov-estimate")]
pub mod pov_estimate;
@@ -300,129 +293,7 @@
) -> Result<Vec<(BlockNumber, String)>>;
}
}
-
-mod rmrk_unique_rpc {
- use super::*;
-
- #[rpc(server)]
- #[async_trait]
- pub trait RmrkApi<
- BlockHash,
- AccountId,
- CollectionInfo,
- NftInfo,
- ResourceInfo,
- PropertyInfo,
- BaseInfo,
- PartType,
- Theme,
- >
- {
- /// Get the latest created collection ID.
- #[method(name = "rmrk_lastCollectionIdx")]
- fn last_collection_idx(&self, at: Option<BlockHash>) -> Result<RmrkCollectionId>;
-
- /// Get collection info by ID.
- #[method(name = "rmrk_collectionById")]
- fn collection_by_id(
- &self,
- id: RmrkCollectionId,
- at: Option<BlockHash>,
- ) -> Result<Option<CollectionInfo>>;
-
- /// Get NFT info by collection and NFT IDs.
- #[method(name = "rmrk_nftById")]
- fn nft_by_id(
- &self,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- at: Option<BlockHash>,
- ) -> Result<Option<NftInfo>>;
-
- /// Get tokens owned by an account in a collection.
- #[method(name = "rmrk_accountTokens")]
- fn account_tokens(
- &self,
- account_id: AccountId,
- collection_id: RmrkCollectionId,
- at: Option<BlockHash>,
- ) -> Result<Vec<RmrkNftId>>;
-
- /// Get tokens nested in an NFT - its direct children (not the children's children).
- #[method(name = "rmrk_nftChildren")]
- fn nft_children(
- &self,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- at: Option<BlockHash>,
- ) -> Result<Vec<RmrkNftChild>>;
-
- /// Get collection properties, created by the user - not the proxy-specific properties.
- #[method(name = "rmrk_collectionProperties")]
- fn collection_properties(
- &self,
- collection_id: RmrkCollectionId,
- filter_keys: Option<Vec<String>>,
- at: Option<BlockHash>,
- ) -> Result<Vec<PropertyInfo>>;
-
- /// Get NFT properties, created by the user - not the proxy-specific properties.
- #[method(name = "rmrk_nftProperties")]
- fn nft_properties(
- &self,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- filter_keys: Option<Vec<String>>,
- at: Option<BlockHash>,
- ) -> Result<Vec<PropertyInfo>>;
-
- /// Get data of resources of an NFT.
- #[method(name = "rmrk_nftResources")]
- fn nft_resources(
- &self,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- at: Option<BlockHash>,
- ) -> Result<Vec<ResourceInfo>>;
- /// Get the priority of a resource in an NFT.
- #[method(name = "rmrk_nftResourcePriority")]
- fn nft_resource_priority(
- &self,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- at: Option<BlockHash>,
- ) -> Result<Option<u32>>;
-
- /// Get base info by its ID.
- #[method(name = "rmrk_base")]
- fn base(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Option<BaseInfo>>;
-
- /// Get all parts of a base.
- #[method(name = "rmrk_baseParts")]
- fn base_parts(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Vec<PartType>>;
-
- /// Get the theme names belonging to a base.
- #[method(name = "rmrk_themeNames")]
- fn theme_names(
- &self,
- base_id: RmrkBaseId,
- at: Option<BlockHash>,
- ) -> Result<Vec<RmrkThemeName>>;
-
- /// Get theme info, including properties, optionally limited to the provided keys.
- #[method(name = "rmrk_themes")]
- fn theme(
- &self,
- base_id: RmrkBaseId,
- theme_name: String,
- filter_keys: Option<Vec<String>>,
- at: Option<BlockHash>,
- ) -> Result<Option<Theme>>;
- }
-}
-
#[macro_export]
macro_rules! define_struct_for_server_api {
($name:ident { $($arg:ident: $arg_ty:ty),+ $(,)? }) => {
@@ -454,12 +325,6 @@
}
}
-define_struct_for_server_api! {
- Rmrk {
- client: Arc<Client>
- }
-}
-
macro_rules! pass_method {
(
$method_name:ident(
@@ -508,12 +373,6 @@
macro_rules! app_promotion_api {
() => {
dyn AppPromotionRuntimeApi<Block, BlockNumber, CrossAccountId, AccountId>
- };
-}
-
-macro_rules! rmrk_api {
- () => {
- dyn RmrkRuntimeApi<Block, AccountId, CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme>
};
}
@@ -627,94 +486,6 @@
.into_iter()
.map(|(b, a)| (b, a.to_string()))
.collect::<Vec<_>>(), app_promotion_api);
-}
-
-#[allow(deprecated)]
-impl<
- C,
- Block,
- AccountId,
- CollectionInfo,
- NftInfo,
- ResourceInfo,
- PropertyInfo,
- BaseInfo,
- PartType,
- Theme,
- >
- rmrk_unique_rpc::RmrkApiServer<
- <Block as BlockT>::Hash,
- AccountId,
- CollectionInfo,
- NftInfo,
- ResourceInfo,
- PropertyInfo,
- BaseInfo,
- PartType,
- Theme,
- > for Rmrk<C, Block>
-where
- C: Send + Sync + 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
- C::Api: RmrkRuntimeApi<
- Block,
- AccountId,
- CollectionInfo,
- NftInfo,
- ResourceInfo,
- PropertyInfo,
- BaseInfo,
- PartType,
- Theme,
- >,
- AccountId: Decode + Encode,
- CollectionInfo: Decode,
- NftInfo: Decode,
- ResourceInfo: Decode,
- PropertyInfo: Decode,
- BaseInfo: Decode,
- PartType: Decode,
- Theme: Decode,
- Block: BlockT,
-{
- pass_method!(last_collection_idx() -> RmrkCollectionId, rmrk_api);
- pass_method!(collection_by_id(id: RmrkCollectionId) -> Option<CollectionInfo>, rmrk_api);
- pass_method!(nft_by_id(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Option<NftInfo>, rmrk_api);
- pass_method!(account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Vec<RmrkNftId>, rmrk_api);
- pass_method!(nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<RmrkNftChild>, rmrk_api);
- pass_method!(
- collection_properties(
- collection_id: RmrkCollectionId,
-
- #[map(|keys| string_keys_to_bytes_keys(keys))]
- filter_keys: Option<Vec<String>>
- ) -> Vec<PropertyInfo>,
- rmrk_api
- );
- pass_method!(
- nft_properties(
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
-
- #[map(|keys| string_keys_to_bytes_keys(keys))]
- filter_keys: Option<Vec<String>>
- ) -> Vec<PropertyInfo>,
- rmrk_api
- );
- pass_method!(nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<ResourceInfo>, rmrk_api);
- pass_method!(nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Option<u32>, rmrk_api);
- pass_method!(base(base_id: RmrkBaseId) -> Option<BaseInfo>, rmrk_api);
- pass_method!(base_parts(base_id: RmrkBaseId) -> Vec<PartType>, rmrk_api);
- pass_method!(theme_names(base_id: RmrkBaseId) -> Vec<RmrkThemeName>, rmrk_api);
- pass_method!(
- theme(
- base_id: RmrkBaseId,
-
- #[map(|n| n.into_bytes())]
- theme_name: String,
-
- #[map(|keys| string_keys_to_bytes_keys(keys))]
- filter_keys: Option<Vec<String>>
- ) -> Option<Theme>, rmrk_api);
}
fn string_keys_to_bytes_keys(keys: Option<Vec<String>>) -> Option<Vec<Vec<u8>>> {
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -89,7 +89,6 @@
fp-rpc = { workspace = true }
app-promotion-rpc = { workspace = true }
-rmrk-rpc = { workspace = true }
uc-rpc = { workspace = true }
unique-rpc = { workspace = true }
up-pov-estimate-rpc = { workspace = true }
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -71,12 +71,6 @@
#[cfg(feature = "pov-estimate")]
use crate::chain_spec::RuntimeIdentification;
-// RMRK
-use up_data_structs::{
- RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
- RmrkPartType, RmrkTheme,
-};
-
/// Unique native executor instance.
#[cfg(feature = "unique-runtime")]
pub struct UniqueRuntimeExecutor;
@@ -403,17 +397,7 @@
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
+ app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
- + rmrk_rpc::RmrkApi<
- Block,
- AccountId,
- RmrkCollectionInfo<AccountId>,
- RmrkInstanceInfo<AccountId>,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo<AccountId>,
- RmrkPartType,
- RmrkTheme,
- > + up_pov_estimate_rpc::PovEstimateApi<Block>
+ + up_pov_estimate_rpc::PovEstimateApi<Block>
+ substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block>
@@ -732,17 +716,7 @@
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
+ app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
- + rmrk_rpc::RmrkApi<
- Block,
- AccountId,
- RmrkCollectionInfo<AccountId>,
- RmrkInstanceInfo<AccountId>,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo<AccountId>,
- RmrkPartType,
- RmrkTheme,
- > + up_pov_estimate_rpc::PovEstimateApi<Block>
+ + up_pov_estimate_rpc::PovEstimateApi<Block>
+ substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block>
@@ -882,17 +856,7 @@
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
+ app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
- + rmrk_rpc::RmrkApi<
- Block,
- AccountId,
- RmrkCollectionInfo<AccountId>,
- RmrkInstanceInfo<AccountId>,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo<AccountId>,
- RmrkPartType,
- RmrkTheme,
- > + up_pov_estimate_rpc::PovEstimateApi<Block>
+ + up_pov_estimate_rpc::PovEstimateApi<Block>
+ substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
+ sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block>
node/rpc/Cargo.tomldiffbeforeafterboth--- a/node/rpc/Cargo.toml
+++ b/node/rpc/Cargo.toml
@@ -33,7 +33,6 @@
fp-storage = { workspace = true }
app-promotion-rpc = { workspace = true }
-rmrk-rpc = { workspace = true }
serde = { workspace = true }
uc-rpc = { workspace = true }
up-common = { workspace = true }
node/rpc/src/lib.rsdiffbeforeafterboth--- a/node/rpc/src/lib.rs
+++ b/node/rpc/src/lib.rs
@@ -42,12 +42,6 @@
use up_common::types::opaque::*;
-// RMRK
-use up_data_structs::{
- RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
- RmrkPartType, RmrkTheme,
-};
-
#[cfg(feature = "pov-estimate")]
type FullBackend = sc_service::TFullBackend<Block>;
@@ -164,17 +158,6 @@
<R as RuntimeInstance>::CrossAccountId,
AccountId,
>,
- C::Api: rmrk_rpc::RmrkApi<
- Block,
- AccountId,
- RmrkCollectionInfo<AccountId>,
- RmrkInstanceInfo<AccountId>,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo<AccountId>,
- RmrkPartType,
- RmrkTheme,
- >,
C::Api: up_pov_estimate_rpc::PovEstimateApi<Block>,
B: sc_client_api::Backend<Block> + Send + Sync + 'static,
B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,
@@ -193,9 +176,6 @@
#[cfg(not(feature = "unique-runtime"))]
use uc_rpc::{AppPromotionApiServer, AppPromotion};
- #[cfg(not(feature = "unique-runtime"))]
- use uc_rpc::{RmrkApiServer, Rmrk};
-
#[cfg(feature = "pov-estimate")]
use uc_rpc::pov_estimate::{PovEstimateApiServer, PovEstimate};
@@ -267,9 +247,6 @@
#[cfg(not(feature = "unique-runtime"))]
io.merge(AppPromotion::new(client.clone()).into_rpc())?;
-
- #[cfg(not(feature = "unique-runtime"))]
- io.merge(Rmrk::new(client.clone()).into_rpc())?;
#[cfg(feature = "pov-estimate")]
io.merge(
pallets/common/src/erc.rsdiffbeforeafterboth--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -33,7 +33,7 @@
};
use crate::{
- Pallet, CollectionHandle, Config, CollectionProperties, SelfWeightOf, eth, weights::WeightInfo,
+ Pallet, CollectionHandle, Config, CollectionProperties, eth, SelfWeightOf, weights::WeightInfo,
};
frontier_contract! {
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -109,15 +109,6 @@
TokenData,
TrySetProperty,
PropertyScope,
- // RMRK
- RmrkCollectionInfo,
- RmrkInstanceInfo,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo,
- RmrkPartType,
- RmrkBoundedTheme,
- RmrkNftChild,
CollectionPermissions,
};
use up_pov_estimate_rpc::PovInfo;
@@ -898,15 +889,6 @@
PhantomType<(
TokenData<T::CrossAccountId>,
RpcCollection<T::AccountId>,
- // RMRK
- RmrkCollectionInfo<T::AccountId>,
- RmrkInstanceInfo<T::AccountId>,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo<T::AccountId>,
- RmrkPartType,
- RmrkBoundedTheme,
- RmrkNftChild,
// PoV Estimate Info
PovInfo,
)>,
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -38,8 +38,8 @@
use sp_core::{U256, Get};
use crate::{
- Allowance, Balance, Config, FungibleHandle, Pallet, SelfWeightOf, TotalSupply,
- weights::WeightInfo,
+ Allowance, Balance, Config, FungibleHandle, Pallet, TotalSupply,
+ SelfWeightOf, weights::WeightInfo,
};
frontier_contract! {
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -47,7 +47,7 @@
use crate::{
AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted,
- SelfWeightOf, weights::WeightInfo, TokenProperties,
+ TokenProperties, SelfWeightOf, weights::WeightInfo,
};
frontier_contract! {
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -214,7 +214,7 @@
/// usual [`TokenProperties`] due to an unlimited number
/// and separately stored and written-to key-value pairs.
///
- /// Currently used to store RMRK data.
+ /// Currently unused.
#[pallet::storage]
#[pallet::getter(fn token_aux_property)]
pub type TokenAuxProperties<T: Config> = StorageNMap<
pallets/proxy-rmrk-core/CHANGELOG.mddiffbeforeafterboth--- a/pallets/proxy-rmrk-core/CHANGELOG.md
+++ /dev/null
@@ -1,17 +0,0 @@
-<!-- bureaucrate goes here -->
-## [v0.1.2] 2022-08-16
-
-### Other changes
-
-- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
-
-- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
-
-- refactor: Remove `#[transactional]` from extrinsics 7fd36cea2f6e00c02c67ccc1de9649ae404efd31
-
-Every extrinsic now runs in transaction implicitly, and
-`#[transactional]` on pallet dispatchable is now meaningless
-
-Upstream-Change: https://github.com/paritytech/substrate/issues/10806
-
-- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
\ No newline at end of file
pallets/proxy-rmrk-core/Cargo.tomldiffbeforeafterboth--- a/pallets/proxy-rmrk-core/Cargo.toml
+++ /dev/null
@@ -1,41 +0,0 @@
-[package]
-edition = "2021"
-license = "GPLv3"
-name = "pallet-rmrk-core"
-version = "0.1.2"
-
-[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
-scale-info = { workspace = true }
-
-frame-benchmarking = { workspace = true, optional = true }
-frame-support = { workspace = true }
-frame-system = { workspace = true }
-pallet-common = { workspace = true }
-pallet-evm = { workspace = true }
-pallet-nonfungible = { workspace = true }
-pallet-structure = { workspace = true }
-rmrk-traits = { workspace = true }
-sp-runtime = { workspace = true }
-sp-std = { workspace = true }
-up-data-structs = { workspace = true }
-
-[features]
-default = ["std"]
-runtime-benchmarks = ['frame-benchmarking', 'frame-support/runtime-benchmarks', 'frame-system/runtime-benchmarks']
-std = [
- "frame-support/std",
- "frame-system/std",
- "pallet-common/std",
- "pallet-evm/std",
- "pallet-nonfungible/std",
- "pallet-structure/std",
- "rmrk-traits/std",
- "sp-runtime/std",
- "sp-std/std",
- "up-data-structs/std",
- 'frame-benchmarking/std',
-]
-try-runtime = ["frame-support/try-runtime"]
pallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/benchmarking.rs
+++ /dev/null
@@ -1,544 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-use sp_std::vec;
-
-use frame_benchmarking::{benchmarks, account};
-use frame_system::RawOrigin;
-use frame_support::{
- traits::{Currency, Get},
- BoundedVec,
-};
-use sp_runtime::Permill;
-
-use up_data_structs::*;
-
-use super::*;
-
-const SEED: u32 = 1;
-
-fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {
- vec![b'A'; S::get() as usize].try_into().expect("size == S")
-}
-
-fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {
- vec![0; S::get() as usize].try_into().expect("size == S")
-}
-
-fn create_basic_resource() -> RmrkBasicResource {
- RmrkBasicResource {
- src: Some(create_data()),
- metadata: Some(create_data()),
- license: Some(create_data()),
- thumb: Some(create_data()),
- }
-}
-
-fn create_composable_resource() -> RmrkComposableResource {
- RmrkComposableResource {
- parts: create_u32_array(),
- base: 100,
- src: Some(create_data()),
- metadata: Some(create_data()),
- license: Some(create_data()),
- thumb: Some(create_data()),
- }
-}
-
-fn create_slot_resource() -> RmrkSlotResource {
- RmrkSlotResource {
- base: 100,
- slot: 200,
- src: Some(create_data()),
- metadata: Some(create_data()),
- license: Some(create_data()),
- thumb: Some(create_data()),
- }
-}
-
-fn create_max_resource_types_array<S: Get<u32>>(num: usize) -> BoundedVec<RmrkResourceTypes, S> {
- vec![RmrkResourceTypes::Composable(create_composable_resource()); num]
- .try_into()
- .expect("num <= S")
-}
-
-fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {
- <T as pallet_common::Config>::Currency::deposit_creating(
- owner,
- T::CollectionCreationPrice::get(),
- );
-
- let metadata = create_data();
- let max = None;
- let symbol = create_data();
-
- <Pallet<T>>::create_collection(
- RawOrigin::Signed(owner.clone()).into(),
- metadata,
- max,
- symbol,
- )
-}
-
-fn create_nft<T: Config>(owner: &T::AccountId, collection_id: RmrkCollectionId) -> DispatchResult {
- let royalty_recipient = Some(owner.clone());
- let royalty_amount = Some(Permill::from_percent(25));
- let metadata = create_data();
- let transferable = true;
-
- <Pallet<T>>::mint_nft(
- RawOrigin::Signed(owner.clone()).into(),
- None,
- collection_id,
- royalty_recipient,
- royalty_amount,
- metadata,
- transferable,
- None,
- )
-}
-
-struct NftBuilder {
- collection_id: RmrkCollectionId,
- current_nft_id: RmrkNftId,
-}
-
-impl NftBuilder {
- fn new(collection_id: RmrkCollectionId) -> Self {
- Self {
- collection_id,
- current_nft_id: 0,
- }
- }
-
- fn build<T: Config>(&mut self, owner: &T::AccountId) -> Result<RmrkNftId, DispatchError> {
- create_nft::<T>(owner, self.collection_id)?;
- self.current_nft_id += 1;
-
- Ok(self.current_nft_id)
- }
-
- fn build_tower<T: Config>(
- &mut self,
- owner: &T::AccountId,
- height: u32,
- ) -> Result<(RmrkNftId, RmrkNftId), DispatchError> {
- self.build::<T>(owner)?;
-
- let root_nft_id = self.current_nft_id;
- let mut prev_nft_id = root_nft_id;
-
- for _ in 0..height {
- self.build::<T>(owner)?;
-
- let new_owner =
- <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
- self.collection_id,
- prev_nft_id,
- );
-
- <Pallet<T>>::send(
- RawOrigin::Signed(owner.clone()).into(),
- self.collection_id,
- self.current_nft_id,
- new_owner,
- )?;
-
- prev_nft_id = self.current_nft_id;
- }
-
- let deepest_nft_id = self.current_nft_id;
-
- Ok((root_nft_id, deepest_nft_id))
- }
-
- fn build_wide_tree<T: Config>(
- &mut self,
- owner: &T::AccountId,
- width: u32,
- ) -> Result<RmrkNftId, DispatchError> {
- self.build::<T>(owner)?;
-
- let root_nft_id = self.current_nft_id;
-
- let root_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
- self.collection_id,
- root_nft_id,
- );
-
- for _ in 0..width {
- self.build::<T>(owner)?;
-
- <Pallet<T>>::send(
- RawOrigin::Signed(owner.clone()).into(),
- self.collection_id,
- self.current_nft_id,
- root_owner.clone(),
- )?;
- }
-
- Ok(root_nft_id)
- }
-}
-
-benchmarks! {
- create_collection {
- let caller = account("caller", 0, SEED);
- <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
- let metadata = create_data();
- let max = None;
- let symbol = create_data();
- }: _(RawOrigin::Signed(caller), metadata, max, symbol)
-
- destroy_collection {
- let caller = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
- }: _(RawOrigin::Signed(caller), collection_id)
-
- change_collection_issuer {
- let caller: T::AccountId = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let new_owner: T::AccountId = account("new_owner", 0, SEED);
-
- let new_owner_source = T::Lookup::unlookup(new_owner);
- }: _(RawOrigin::Signed(caller), collection_id, new_owner_source)
-
- lock_collection {
- let caller: T::AccountId = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
- }: _(RawOrigin::Signed(caller), collection_id)
-
- mint_nft {
- let b in 0..100;
-
- let caller: T::AccountId = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
- let owner = caller.clone();
-
- let royalty_recipient = Some(caller.clone());
- let royalty_amount = Some(Permill::from_percent(25));
- let metadata = create_data();
- let transferable = true;
- }: _(
- RawOrigin::Signed(caller),
- None,
- collection_id,
- royalty_recipient,
- royalty_amount,
- metadata,
- transferable,
- Some(create_max_resource_types_array(b as usize))
- )
-
- burn_nft {
- let b in 0..200;
-
- let caller: T::AccountId = account("caller", 0, SEED);
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let root_nft_id = nft_builder.build_wide_tree::<T>(&caller, b)?;
- let max_burns = b + 1;
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- root_nft_id,
- max_burns
- )
-
- send {
- let caller: T::AccountId = account("caller", 0, SEED);
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let src_nft_id = nft_builder.build::<T>(&caller)?;
- let (_, target_nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- src_nft_id,
- <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)
- )
-
- accept_nft {
- let caller: T::AccountId = account("caller", 0, SEED);
- let sender: T::AccountId = account("sender", 0, SEED);
-
- create_max_collection::<T>(&sender)?;
- let src_collection_id = 0;
-
- create_max_collection::<T>(&caller)?;
- let target_collection_id = 1;
-
- let mut src_nft_builder = NftBuilder::new(src_collection_id);
- let src_nft_id = src_nft_builder.build::<T>(&sender)?;
-
- let mut target_nft_builder = NftBuilder::new(target_collection_id);
- let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;
- let (_, target_nft_id) = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
-
- let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
- target_collection_id,
- fake_target_nft_id
- );
-
- let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
- target_collection_id,
- target_nft_id
- );
-
- <Pallet<T>>::send(
- RawOrigin::Signed(sender.clone()).into(),
- src_collection_id,
- src_nft_id,
- new_owner,
- )?;
- }: _(
- RawOrigin::Signed(caller),
- src_collection_id,
- src_nft_id,
- actual_new_owner
- )
-
- reject_nft {
- let caller: T::AccountId = account("caller", 0, SEED);
- let sender: T::AccountId = account("sender", 0, SEED);
-
- create_max_collection::<T>(&sender)?;
- let src_collection_id = 0;
-
- create_max_collection::<T>(&caller)?;
- let target_collection_id = 1;
-
- let mut src_nft_builder = NftBuilder::new(src_collection_id);
- let (src_root_nft_id, _) = src_nft_builder.build_tower::<T>(&sender, NESTING_BUDGET - 1)?;
-
- let mut target_nft_builder = NftBuilder::new(target_collection_id);
- let target_nft_id = target_nft_builder.build::<T>(&caller)?;
-
- let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
- target_collection_id,
- target_nft_id
- );
-
- <Pallet<T>>::send(
- RawOrigin::Signed(sender.clone()).into(),
- src_collection_id,
- src_root_nft_id,
- new_owner,
- )?;
- }: _(
- RawOrigin::Signed(caller),
- src_collection_id,
- src_root_nft_id
- )
-
- set_property {
- let caller: T::AccountId = account("caller", 0, SEED);
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
-
- let key = create_data();
- let value = create_data();
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- Some(nft_id),
- key,
- value
- )
-
- set_priority {
- let caller: T::AccountId = account("caller", 0, SEED);
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
- let priorities = create_u32_array();
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- nft_id,
- priorities
- )
-
- add_basic_resource {
- let caller: T::AccountId = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
- let resource = create_basic_resource();
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- nft_id,
- resource
- )
-
- add_composable_resource {
- let caller: T::AccountId = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
- let resource = create_composable_resource();
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- nft_id,
- resource
- )
-
- add_slot_resource {
- let caller: T::AccountId = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
- let resource = create_slot_resource();
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- nft_id,
- resource
- )
-
- remove_resource {
- let caller: T::AccountId = account("caller", 0, SEED);
-
- create_max_collection::<T>(&caller)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
- let resource = create_basic_resource();
-
- <Pallet<T>>::add_basic_resource(
- RawOrigin::Signed(caller.clone()).into(),
- collection_id,
- nft_id,
- resource
- )?;
-
- let resource_id = 0;
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- nft_id,
- resource_id
- )
-
- accept_resource {
- let caller: T::AccountId = account("caller", 0, SEED);
- let admin: T::AccountId = account("admin", 0, SEED);
-
- create_max_collection::<T>(&admin)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let root_nft_id = 1;
- let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;
- let resource = create_basic_resource();
-
- let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());
-
- <Pallet<T>>::send(
- RawOrigin::Signed(admin.clone()).into(),
- collection_id,
- root_nft_id,
- new_owner,
- )?;
-
- <Pallet<T>>::add_basic_resource(
- RawOrigin::Signed(admin.clone()).into(),
- collection_id,
- nested_nft_id,
- resource
- )?;
-
- let resource_id = 0;
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- nested_nft_id,
- resource_id
- )
-
- accept_resource_removal {
- let caller: T::AccountId = account("caller", 0, SEED);
- let admin: T::AccountId = account("admin", 0, SEED);
-
- create_max_collection::<T>(&admin)?;
- let collection_id = 0;
-
- let mut nft_builder = NftBuilder::new(collection_id);
- let root_nft_id = 1;
- let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;
- let resource = create_basic_resource();
-
- <Pallet<T>>::add_basic_resource(
- RawOrigin::Signed(admin.clone()).into(),
- collection_id,
- nested_nft_id,
- resource
- )?;
-
- let resource_id = 0;
-
- let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());
-
- <Pallet<T>>::send(
- RawOrigin::Signed(admin.clone()).into(),
- collection_id,
- root_nft_id,
- new_owner,
- )?;
-
- <Pallet<T>>::remove_resource(
- RawOrigin::Signed(admin).into(),
- collection_id,
- nested_nft_id,
- resource_id
- )?;
- }: _(
- RawOrigin::Signed(caller),
- collection_id,
- nested_nft_id,
- resource_id
- )
-}
pallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/lib.rs
+++ /dev/null
@@ -1,2119 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-//! # RMRK Core Proxy Pallet
-//!
-//! A pallet used as proxy for RMRK Core (<https://rmrk-team.github.io/rmrk-substrate/#/pallets/rmrk-core>).
-//!
-//! - [`Config`]
-//! - [`Call`]
-//! - [`Pallet`]
-//!
-//! ## Overview
-//!
-//! The RMRK Core Proxy pallet mirrors the functionality of RMRK Core,
-//! binding its externalities to Unique's own underlying structure.
-//! It is purposed to mimic RMRK Core exactly, allowing seamless integrations
-//! of solutions based on RMRK.
-//!
-//! RMRK Core itself contains essential functionality for RMRK's nested and
-//! multi-resourced NFTs.
-//!
-//! *Note*, that while RMRK itself is subject to active development and restructuring,
-//! the proxy may be caught temporarily out of date.
-//!
-//! ### What is RMRK?
-//!
-//! RMRK is a set of NFT standards which compose several "NFT 2.0 lego" primitives.
-//! Putting these legos together allows a user to create NFT systems of arbitrary complexity.
-//!
-//! Meaning, RMRK NFTs are dynamic, able to nest into each other and form a hierarchy,
-//! make use of specific changeable and partially shared metadata in the form of resources,
-//! and more.
-//!
-//! Visit RMRK documentation and repositories to learn more:
-//! - Docs: <https://docs.rmrk.app/getting-started/>
-//! - FAQ: <https://coda.io/@rmrk/faq>
-//! - Substrate code repository: <https://github.com/rmrk-team/rmrk-substrate>
-//! - RMRK specification repository: <https://github.com/rmrk-team/rmrk-spec>
-//!
-//! ## Terminology
-//!
-//! For more information on RMRK, see RMRK's own documentation.
-//!
-//! ### Intro to RMRK
-//!
-//! - **Resource:** Additional piece of metadata of an NFT usually serving to add
-//! a piece of media on top of the root metadata (NFT's own), be it a different wing
-//! on the root template bird or something entirely unrelated.
-//!
-//! - **Base:** A list of possible "components" - Parts, a combination of which can
-//! be appended/equipped to/on an NFT.
-//!
-//! - **Part:** Something that, together with other Parts, can constitute an NFT.
-//! Parts are defined in the Base to which they belong. Parts can be either
-//! of the `slot` type or `fixed` type. Slots are intended for equippables.
-//! Note that "part of something" and "Part of a Base" can be easily confused,
-//! and so in this documentation these words are distinguished by the capital letter.
-//!
-//! - **Theme:** Named objects of variable => value pairs which get interpolated into
-//! the Base's `themable` Parts. Themes can hold any value, but are often represented
-//! in RMRK's examples as colors applied to visible Parts.
-//!
-//! ### Peculiarities in Unique
-//!
-//! - **Scoped properties:** Properties that are normally obscured from users.
-//! Their purpose is to contain structured metadata that was not included in the Unique standard
-//! for collections and tokens, meant to be operated on by proxies and other outliers.
-//! Scoped property keys are prefixed with `some-scope:`, where `some-scope` is
-//! an arbitrary keyword, like "rmrk". `:` is considered an unacceptable symbol in user-defined
-//! properties, which, along with other safeguards, makes scoped ones impossible to tamper with.
-//!
-//! - **Auxiliary properties:** A slightly different structure of properties,
-//! trading universality of use for more convenient storage, writes and access.
-//! Meant to be inaccessible to end users.
-//!
-//! ## Proxy Implementation
-//!
-//! An external user is supposed to be able to utilize this proxy as they would
-//! utilize RMRK, and get exactly the same results. Normally, Unique transactions
-//! are off-limits to RMRK collections and tokens, and vice versa. However,
-//! the information stored on chain can be freely interpreted by storage reads and Unique RPCs.
-//!
-//! ### ID Mapping
-//!
-//! RMRK's collections' IDs are counted independently of Unique's and start at 0.
-//! Note that tokens' IDs still start at 1.
-//! The collections themselves, as well as tokens, are stored as Unique collections,
-//! and thus RMRK IDs are mapped to Unique IDs (but not vice versa).
-//!
-//! ### External/Internal Collection Insulation
-//!
-//! A Unique transaction cannot target collections purposed for RMRK,
-//! and they are flagged as `external` to specify that. On the other hand,
-//! due to the mapping, RMRK transactions and RPCs simply cannot reach Unique collections.
-//!
-//! ### Native Properties
-//!
-//! Many of RMRK's native parameters are stored as scoped properties of a collection
-//! or an NFT on the chain. Scoped properties are prefixed with `rmrk:`, where `:`
-//! is an unacceptable symbol in user-defined properties, which, along with other safeguards,
-//! makes them impossible to tamper with.
-//!
-//! ### Collection and NFT Types, or Base, Parts and Themes Handling
-//!
-//! RMRK introduces the concept of a Base, which is a catalogue of Parts,
-//! possible components of an NFT. Due to its similarity with the functionality
-//! of a token collection, a Base is stored and handled as one, and the Base's Parts and Themes
-//! are this collection's NFTs. See [`CollectionType`] and [`NftType`].
-//!
-//! ## Interface
-//!
-//! ### Dispatchables
-//!
-//! - `create_collection` - Create a new collection of NFTs.
-//! - `destroy_collection` - Destroy a collection.
-//! - `change_collection_issuer` - Change the issuer of a collection.
-//! Analogous to Unique's collection's [`owner`](up_data_structs::Collection).
-//! - `lock_collection` - "Lock" the collection and prevent new token creation. **Cannot be undone.**
-//! - `mint_nft` - Mint an NFT in a specified collection.
-//! - `burn_nft` - Burn an NFT, destroying it and its nested tokens.
-//! - `send` - Transfer an NFT from an account/NFT A to another account/NFT B.
-//! - `accept_nft` - Accept an NFT sent from another account to self or an owned NFT.
-//! - `reject_nft` - Reject an NFT sent from another account to self or owned NFT and **burn it**.
-//! - `accept_resource` - Accept the addition of a newly created pending resource to an existing NFT.
-//! - `accept_resource_removal` - Accept the removal of a removal-pending resource from an NFT.
-//! - `set_property` - Add or edit a custom user property of a token or a collection.
-//! - `set_priority` - Set a different order of resource priorities for an NFT.
-//! - `add_basic_resource` - Create and set/propose a basic resource for an NFT.
-//! - `add_composable_resource` - Create and set/propose a composable resource for an NFT.
-//! - `add_slot_resource` - Create and set/propose a slot resource for an NFT.
-//! - `remove_resource` - Remove and erase a resource from an NFT.
-
-#![cfg_attr(not(feature = "std"), no_std)]
-
-use frame_support::{pallet_prelude::*, BoundedVec, dispatch::DispatchResult};
-use frame_system::{pallet_prelude::*, ensure_signed};
-use sp_runtime::{DispatchError, Permill, traits::StaticLookup};
-use sp_std::{
- vec::Vec,
- collections::{btree_set::BTreeSet, btree_map::BTreeMap},
-};
-use up_data_structs::{*, mapping::TokenAddressMapping};
-use pallet_common::{
- Pallet as PalletCommon, Error as CommonError, CollectionHandle, CommonCollectionOperations,
-};
-use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle, TokenData};
-use pallet_structure::{Pallet as PalletStructure, Error as StructureError};
-use pallet_evm::account::CrossAccountId;
-use core::convert::AsRef;
-
-pub use pallet::*;
-
-#[cfg(feature = "runtime-benchmarks")]
-pub mod benchmarking;
-pub mod misc;
-pub mod property;
-pub mod rpc;
-pub mod weights;
-
-pub type SelfWeightOf<T> = <T as Config>::WeightInfo;
-
-use weights::WeightInfo;
-use misc::*;
-pub use property::*;
-
-use RmrkProperty::*;
-
-/// A maximum number of levels of depth in the token nesting tree.
-pub const NESTING_BUDGET: u32 = 5;
-
-type PendingTarget = (CollectionId, TokenId);
-type PendingChild = (RmrkCollectionId, RmrkNftId);
-type PendingChildrenSet = BTreeSet<PendingChild>;
-
-type BasesMap = BTreeMap<RmrkBaseId, u32>;
-
-#[frame_support::pallet]
-pub mod pallet {
- use super::*;
-
- #[pallet::config]
- pub trait Config:
- frame_system::Config
- + pallet_common::Config
- + pallet_nonfungible::Config
- + pallet_evm::Config
- {
- /// Overarching event type.
- type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
-
- /// The weight information of this pallet.
- type WeightInfo: WeightInfo;
- }
-
- /// Latest yet-unused collection ID.
- #[pallet::storage]
- #[pallet::getter(fn collection_index)]
- pub type CollectionIndex<T: Config> = StorageValue<_, RmrkCollectionId, ValueQuery>;
-
- /// Mapping from RMRK collection ID to Unique's.
- #[pallet::storage]
- pub type UniqueCollectionId<T: Config> =
- StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;
-
- #[pallet::pallet]
- #[pallet::generate_store(pub(super) trait Store)]
- pub struct Pallet<T>(_);
-
- #[pallet::event]
- #[pallet::generate_deposit(pub(super) fn deposit_event)]
- pub enum Event<T: Config> {
- CollectionCreated {
- issuer: T::AccountId,
- collection_id: RmrkCollectionId,
- },
- CollectionDestroyed {
- issuer: T::AccountId,
- collection_id: RmrkCollectionId,
- },
- IssuerChanged {
- old_issuer: T::AccountId,
- new_issuer: T::AccountId,
- collection_id: RmrkCollectionId,
- },
- CollectionLocked {
- issuer: T::AccountId,
- collection_id: RmrkCollectionId,
- },
- NftMinted {
- owner: T::AccountId,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- },
- NFTBurned {
- owner: T::AccountId,
- nft_id: RmrkNftId,
- },
- NFTSent {
- sender: T::AccountId,
- recipient: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- approval_required: bool,
- },
- NFTAccepted {
- sender: T::AccountId,
- recipient: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- },
- NFTRejected {
- sender: T::AccountId,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- },
- PropertySet {
- collection_id: RmrkCollectionId,
- maybe_nft_id: Option<RmrkNftId>,
- key: RmrkKeyString,
- value: RmrkValueString,
- },
- ResourceAdded {
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- },
- ResourceRemoval {
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- },
- ResourceAccepted {
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- },
- ResourceRemovalAccepted {
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- },
- PrioritySet {
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- },
- }
-
- #[pallet::error]
- pub enum Error<T> {
- /* Unique proxy-specific events */
- /// Property of the type of RMRK collection could not be read successfully.
- CorruptedCollectionType,
- // NftTypeEncodeError,
- /// Too many symbols supplied as the property key. The maximum is [256](up_data_structs::MAX_PROPERTY_KEY_LENGTH).
- RmrkPropertyKeyIsTooLong,
- /// Too many bytes supplied as the property value. The maximum is [32768](up_data_structs::MAX_PROPERTY_VALUE_LENGTH).
- RmrkPropertyValueIsTooLong,
- /// Could not find a property by the supplied key.
- RmrkPropertyIsNotFound,
- /// Something went wrong when decoding encoded data from the storage.
- /// Perhaps, there was a wrong key supplied for the type, or the data was improperly stored.
- UnableToDecodeRmrkData,
-
- /* RMRK compatible events */
- /// Only destroying collections without tokens is allowed.
- CollectionNotEmpty,
- /// Could not find an ID for a collection. It is likely there were too many collections created on the chain, causing an overflow.
- NoAvailableCollectionId,
- /// Token does not exist, or there is no suitable ID for it, likely too many tokens were created in a collection, causing an overflow.
- NoAvailableNftId,
- /// Collection does not exist, has a wrong type, or does not map to a Unique ID.
- CollectionUnknown,
- /// No permission to perform action.
- NoPermission,
- /// Token is marked as non-transferable, and thus cannot be transferred.
- NonTransferable,
- /// Too many tokens created in the collection, no new ones are allowed.
- CollectionFullOrLocked,
- /// No such resource found.
- ResourceDoesntExist,
- /// If an NFT is sent to a descendant, that would form a nesting loop, an ouroboros.
- /// Sending to self is redundant.
- CannotSendToDescendentOrSelf,
- /// Not the target owner of the sent NFT.
- CannotAcceptNonOwnedNft,
- /// Not the target owner of the sent NFT.
- CannotRejectNonOwnedNft,
- /// NFT was not sent and is not pending.
- CannotRejectNonPendingNft,
- /// Resource is not pending for the operation.
- ResourceNotPending,
- /// Could not find an ID for the resource. It is likely there were too many resources created on an NFT, causing an overflow.
- NoAvailableResourceId,
- }
-
- #[pallet::call]
- impl<T: Config> Pallet<T> {
- // todo :refactor replace every collection_id with rmrk_collection_id (and nft_id) in arguments for uniformity?
-
- /// Create a new collection of NFTs.
- ///
- /// # Permissions:
- /// * Anyone - will be assigned as the issuer of the collection.
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `metadata`: Metadata describing the collection, e.g. IPFS hash. Cannot be changed.
- /// - `max`: Optional maximum number of tokens.
- /// - `symbol`: UTF-8 string with token prefix, by which to represent the token in wallets and UIs.
- /// Analogous to Unique's [`token_prefix`](up_data_structs::Collection). Cannot be changed.
- #[pallet::call_index(0)]
- #[pallet::weight(<SelfWeightOf<T>>::create_collection())]
- pub fn create_collection(
- origin: OriginFor<T>,
- metadata: RmrkString,
- max: Option<u32>,
- symbol: RmrkCollectionSymbol,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
-
- let limits = CollectionLimits {
- owner_can_transfer: Some(false),
- token_limit: max,
- ..Default::default()
- };
-
- let data = CreateCollectionData {
- limits: Some(limits),
- token_prefix: symbol
- .into_inner()
- .try_into()
- .map_err(|_| <CommonError<T>>::CollectionTokenPrefixLimitExceeded)?,
- permissions: Some(CollectionPermissions {
- nesting: Some(NestingPermissions {
- token_owner: true,
- collection_admin: false,
- restricted: None,
- #[cfg(feature = "runtime-benchmarks")]
- permissive: false,
- }),
- ..Default::default()
- }),
- ..Default::default()
- };
-
- let unique_collection_id = Self::init_collection(
- T::CrossAccountId::from_sub(sender.clone()),
- data,
- [
- Self::encode_rmrk_property(Metadata, &metadata)?,
- Self::encode_rmrk_property(CollectionType, &misc::CollectionType::Regular)?,
- ]
- .into_iter(),
- )?;
- let rmrk_collection_id = <CollectionIndex<T>>::get();
-
- <UniqueCollectionId<T>>::insert(rmrk_collection_id, unique_collection_id);
-
- <PalletCommon<T>>::set_scoped_collection_property(
- unique_collection_id,
- RMRK_SCOPE,
- Self::encode_rmrk_property(RmrkInternalCollectionId, &rmrk_collection_id)?,
- )?;
-
- <CollectionIndex<T>>::mutate(|n| *n += 1);
-
- Self::deposit_event(Event::CollectionCreated {
- issuer: sender,
- collection_id: rmrk_collection_id,
- });
-
- Ok(())
- }
-
- /// Destroy a collection.
- ///
- /// Only empty collections can be destroyed. If it has any tokens, they must be burned first.
- ///
- /// # Permissions:
- /// * Collection issuer
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `collection_id`: RMRK ID of the collection to destroy.
- #[pallet::call_index(1)]
- #[pallet::weight(<SelfWeightOf<T>>::destroy_collection())]
- pub fn destroy_collection(
- origin: OriginFor<T>,
- collection_id: RmrkCollectionId,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let collection = Self::get_typed_nft_collection(
- Self::unique_collection_id(collection_id)?,
- misc::CollectionType::Regular,
- )?;
- collection.check_is_external()?;
-
- <PalletNft<T>>::destroy_collection(collection, &cross_sender)
- .map_err(Self::map_unique_err_to_proxy)?;
-
- Self::deposit_event(Event::CollectionDestroyed {
- issuer: sender,
- collection_id,
- });
-
- Ok(())
- }
-
- /// Change the issuer of a collection. Analogous to Unique's collection's [`owner`](up_data_structs::Collection).
- ///
- /// # Permissions:
- /// * Collection issuer
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `collection_id`: RMRK collection ID to change the issuer of.
- /// - `new_issuer`: Collection's new issuer.
- #[pallet::call_index(2)]
- #[pallet::weight(<SelfWeightOf<T>>::change_collection_issuer())]
- pub fn change_collection_issuer(
- origin: OriginFor<T>,
- collection_id: RmrkCollectionId,
- new_issuer: <T::Lookup as StaticLookup>::Source,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
-
- let collection = Self::get_nft_collection(Self::unique_collection_id(collection_id)?)?;
- collection.check_is_external()?;
-
- let new_issuer = T::Lookup::lookup(new_issuer)?;
-
- Self::change_collection_owner(
- Self::unique_collection_id(collection_id)?,
- misc::CollectionType::Regular,
- sender.clone(),
- new_issuer.clone(),
- )?;
-
- Self::deposit_event(Event::IssuerChanged {
- old_issuer: sender,
- new_issuer,
- collection_id,
- });
-
- Ok(())
- }
-
- /// "Lock" the collection and prevent new token creation. Cannot be undone.
- ///
- /// # Permissions:
- /// * Collection issuer
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `collection_id`: RMRK ID of the collection to lock.
- #[pallet::call_index(3)]
- #[pallet::weight(<SelfWeightOf<T>>::lock_collection())]
- pub fn lock_collection(
- origin: OriginFor<T>,
- collection_id: RmrkCollectionId,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let collection = Self::get_typed_nft_collection(
- Self::unique_collection_id(collection_id)?,
- misc::CollectionType::Regular,
- )?;
- collection.check_is_external()?;
-
- Self::check_collection_owner(&collection, &cross_sender)?;
-
- let token_count = collection.total_supply();
-
- let mut collection = collection.into_inner();
- collection.limits.token_limit = Some(token_count);
- collection.save()?;
-
- Self::deposit_event(Event::CollectionLocked {
- issuer: sender,
- collection_id,
- });
-
- Ok(())
- }
-
- /// Mint an NFT in a specified collection.
- ///
- /// # Permissions:
- /// * Collection issuer
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `owner`: Owner account of the NFT. If set to None, defaults to the sender (collection issuer).
- /// - `collection_id`: RMRK collection ID for the NFT to be minted within. Cannot be changed.
- /// - `recipient`: Receiver account of the royalty. Has no effect if the `royalty_amount` is not set. Cannot be changed.
- /// - `royalty_amount`: Optional permillage reward from each trade for the `recipient`. Cannot be changed.
- /// - `metadata`: Arbitrary data about an NFT, e.g. IPFS hash. Cannot be changed.
- /// - `transferable`: Can this NFT be transferred? Cannot be changed.
- /// - `resources`: Resource data to be added to the NFT immediately after minting.
- #[pallet::call_index(4)]
- #[pallet::weight(<SelfWeightOf<T>>::mint_nft(resources.as_ref().map(|r| r.len() as u32).unwrap_or(0)))]
- pub fn mint_nft(
- origin: OriginFor<T>,
- owner: Option<T::AccountId>,
- collection_id: RmrkCollectionId,
- recipient: Option<T::AccountId>,
- royalty_amount: Option<Permill>,
- metadata: RmrkString,
- transferable: bool,
- resources: Option<BoundedVec<RmrkResourceTypes, MaxResourcesOnMint>>,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let owner = owner.unwrap_or(sender.clone());
- let cross_owner = T::CrossAccountId::from_sub(owner.clone());
-
- let collection = Self::get_typed_nft_collection(
- Self::unique_collection_id(collection_id)?,
- misc::CollectionType::Regular,
- )?;
- collection.check_is_external()?;
-
- let royalty_info = royalty_amount.map(|amount| rmrk_traits::RoyaltyInfo {
- recipient: recipient.unwrap_or_else(|| owner.clone()),
- amount,
- });
-
- let nft_id = Self::create_nft(
- &cross_sender,
- &cross_owner,
- &collection,
- [
- Self::encode_rmrk_property(TokenType, &NftType::Regular)?,
- Self::encode_rmrk_property(Transferable, &transferable)?,
- Self::encode_rmrk_property(PendingNftAccept, &None::<PendingTarget>)?,
- Self::encode_rmrk_property(RoyaltyInfo, &royalty_info)?,
- Self::encode_rmrk_property(Metadata, &metadata)?,
- Self::encode_rmrk_property(Equipped, &false)?,
- Self::encode_rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,
- Self::encode_rmrk_property(NextResourceId, &(0 as RmrkResourceId))?,
- Self::encode_rmrk_property(PendingChildren, &PendingChildrenSet::new())?,
- Self::encode_rmrk_property(AssociatedBases, &BasesMap::new())?,
- ]
- .into_iter(),
- )
- .map_err(|err| match err {
- DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),
- err => Self::map_unique_err_to_proxy(err),
- })?;
-
- if let Some(resources) = resources {
- for resource in resources {
- Self::resource_add(sender.clone(), collection.id, nft_id, resource)?;
- }
- }
-
- Self::deposit_event(Event::NftMinted {
- owner,
- collection_id,
- nft_id: nft_id.0,
- });
-
- Ok(())
- }
-
- /// Burn an NFT, destroying it and its nested tokens up to the specified limit.
- /// If the burning budget is exceeded, the transaction is reverted.
- ///
- /// This is the way to burn a nested token as well.
- ///
- /// For more information, see [`burn_recursively`](pallet_nonfungible::pallet::Pallet::burn_recursively).
- ///
- /// # Permissions:
- /// * Token owner
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `collection_id`: RMRK ID of the collection in which the NFT to burn belongs to.
- /// - `nft_id`: ID of the NFT to be destroyed.
- /// - `max_burns`: Maximum number of tokens to burn, assuming nesting. The transaction
- /// is reverted if there are more tokens to burn in the nesting tree than this number.
- /// This is primarily a mechanism of transaction weight control.
- #[pallet::call_index(5)]
- #[pallet::weight(<SelfWeightOf<T>>::burn_nft(*max_burns))]
- pub fn burn_nft(
- origin: OriginFor<T>,
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- max_burns: u32,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let collection = Self::get_typed_nft_collection(
- Self::unique_collection_id(collection_id)?,
- misc::CollectionType::Regular,
- )?;
- collection.check_is_external()?;
-
- Self::destroy_nft(
- cross_sender,
- Self::unique_collection_id(collection_id)?,
- nft_id.into(),
- max_burns,
- <Error<T>>::NoPermission,
- )
- .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;
-
- Self::deposit_event(Event::NFTBurned {
- owner: sender,
- nft_id,
- });
-
- Ok(())
- }
-
- /// Transfer an NFT from an account/NFT A to another account/NFT B.
- /// The token must be transferable. Nesting cannot occur deeper than the [`NESTING_BUDGET`].
- ///
- /// If the target owner is an NFT owned by another account, then the NFT will enter
- /// the pending state and will have to be accepted by the other account.
- ///
- /// # Permissions:
- /// - Token owner
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK ID of the collection of the NFT to be transferred.
- /// - `rmrk_nft_id`: ID of the NFT to be transferred.
- /// - `new_owner`: New owner of the nft which can be either an account or a NFT.
- #[pallet::call_index(6)]
- #[pallet::weight(<SelfWeightOf<T>>::send())]
- pub fn send(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- rmrk_nft_id: RmrkNftId,
- new_owner: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,
- ) -> DispatchResult {
- let sender = ensure_signed(origin.clone())?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let nft_id = rmrk_nft_id.into();
-
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let token_data =
- <TokenData<T>>::get((collection_id, nft_id)).ok_or(<Error<T>>::NoAvailableNftId)?;
-
- let from = token_data.owner;
-
- ensure!(
- Self::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Transferable)?,
- <Error<T>>::NonTransferable
- );
-
- ensure!(
- Self::get_nft_property_decoded::<Option<PendingTarget>>(
- collection_id,
- nft_id,
- RmrkProperty::PendingNftAccept
- )?
- .is_none(),
- <Error<T>>::NoPermission
- );
-
- let target_owner;
- let approval_required;
-
- match new_owner {
- RmrkAccountIdOrCollectionNftTuple::AccountId(ref account_id) => {
- target_owner = T::CrossAccountId::from_sub(account_id.clone());
- approval_required = false;
- }
- RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(
- target_collection_id,
- target_nft_id,
- ) => {
- let target_collection_id = Self::unique_collection_id(target_collection_id)?;
-
- let target_nft_budget = budget::Value::new(NESTING_BUDGET);
-
- let target_nft_owner = <PalletStructure<T>>::get_checked_topmost_owner(
- target_collection_id,
- target_nft_id.into(),
- Some((collection_id, nft_id)),
- &target_nft_budget,
- )
- .map_err(Self::map_unique_err_to_proxy)?
- .ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
-
- approval_required = cross_sender != target_nft_owner;
-
- if approval_required {
- target_owner = target_nft_owner;
-
- <PalletNft<T>>::set_scoped_token_property(
- collection.id,
- nft_id,
- RMRK_SCOPE,
- Self::encode_rmrk_property::<Option<PendingTarget>>(
- PendingNftAccept,
- &Some((target_collection_id, target_nft_id.into())),
- )?,
- )?;
-
- Self::insert_pending_child(
- (target_collection_id, target_nft_id.into()),
- (rmrk_collection_id, rmrk_nft_id),
- )?;
- } else {
- target_owner = T::CrossTokenAddressMapping::token_to_address(
- target_collection_id,
- target_nft_id.into(),
- );
- }
- }
- }
-
- let src_nft_budget = budget::Value::new(NESTING_BUDGET);
-
- <PalletNft<T>>::transfer_from(
- &collection,
- &cross_sender,
- &from,
- &target_owner,
- nft_id,
- &src_nft_budget,
- )
- .map_err(Self::map_unique_err_to_proxy)?;
-
- Self::deposit_event(Event::NFTSent {
- sender,
- recipient: new_owner,
- collection_id: rmrk_collection_id,
- nft_id: rmrk_nft_id,
- approval_required,
- });
-
- Ok(())
- }
-
- /// Accept an NFT sent from another account to self or an owned NFT.
- ///
- /// The NFT in question must be pending, and, thus, be [sent](`Pallet::send`) first.
- ///
- /// # Permissions:
- /// - Token-owner-to-be
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID of the NFT to be accepted.
- /// - `rmrk_nft_id`: ID of the NFT to be accepted.
- /// - `new_owner`: Either the sender's account ID or a sender-owned NFT,
- /// whichever the accepted NFT was sent to.
- #[pallet::call_index(7)]
- #[pallet::weight(<SelfWeightOf<T>>::accept_nft())]
- pub fn accept_nft(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- rmrk_nft_id: RmrkNftId,
- new_owner: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,
- ) -> DispatchResult {
- let sender = ensure_signed(origin.clone())?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let nft_id = rmrk_nft_id.into();
-
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let new_cross_owner = match new_owner {
- RmrkAccountIdOrCollectionNftTuple::AccountId(ref account_id) => {
- T::CrossAccountId::from_sub(account_id.clone())
- }
- RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(
- target_collection_id,
- target_nft_id,
- ) => {
- let target_collection_id = Self::unique_collection_id(target_collection_id)?;
-
- T::CrossTokenAddressMapping::token_to_address(
- target_collection_id,
- TokenId(target_nft_id),
- )
- }
- };
-
- let budget = budget::Value::new(NESTING_BUDGET);
-
- <PalletNft<T>>::transfer(
- &collection,
- &cross_sender,
- &new_cross_owner,
- nft_id,
- &budget,
- )
- .map_err(|err| {
- if err == <CommonError<T>>::UserIsNotAllowedToNest.into() {
- <Error<T>>::CannotAcceptNonOwnedNft.into()
- } else {
- Self::map_unique_err_to_proxy(err)
- }
- })?;
-
- let pending_target = Self::get_nft_property_decoded::<Option<PendingTarget>>(
- collection_id,
- nft_id,
- RmrkProperty::PendingNftAccept,
- )?;
-
- if let Some(pending_target) = pending_target {
- Self::remove_pending_child(pending_target, (rmrk_collection_id, rmrk_nft_id))?;
-
- <PalletNft<T>>::set_scoped_token_property(
- collection.id,
- nft_id,
- RMRK_SCOPE,
- Self::encode_rmrk_property(PendingNftAccept, &None::<PendingTarget>)?,
- )?;
- }
-
- Self::deposit_event(Event::NFTAccepted {
- sender,
- recipient: new_owner,
- collection_id: rmrk_collection_id,
- nft_id: rmrk_nft_id,
- });
-
- Ok(())
- }
-
- /// Reject an NFT sent from another account to self or owned NFT.
- /// The NFT in question will not be sent back and burnt instead.
- ///
- /// The NFT in question must be pending, and, thus, be [sent](`Pallet::send`) first.
- ///
- /// # Permissions:
- /// - Token-owner-to-be-not
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK ID of the NFT to be rejected.
- /// - `rmrk_nft_id`: ID of the NFT to be rejected.
- #[pallet::call_index(8)]
- #[pallet::weight(<SelfWeightOf<T>>::reject_nft())]
- pub fn reject_nft(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- rmrk_nft_id: RmrkNftId,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let nft_id = rmrk_nft_id.into();
-
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- ensure!(
- <TokenData<T>>::get((collection_id, nft_id)).is_some(),
- <Error<T>>::NoAvailableNftId
- );
-
- let pending_target = Self::get_nft_property_decoded::<Option<PendingTarget>>(
- collection_id,
- nft_id,
- RmrkProperty::PendingNftAccept,
- )?;
-
- match pending_target {
- Some(pending_target) => {
- Self::remove_pending_child(pending_target, (rmrk_collection_id, rmrk_nft_id))?
- }
- None => return Err(<Error<T>>::CannotRejectNonPendingNft.into()),
- }
-
- Self::destroy_nft(
- cross_sender,
- collection_id,
- nft_id,
- NESTING_BUDGET,
- <Error<T>>::CannotRejectNonOwnedNft,
- )
- .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;
-
- Self::deposit_event(Event::NFTRejected {
- sender,
- collection_id: rmrk_collection_id,
- nft_id: rmrk_nft_id,
- });
-
- Ok(())
- }
-
- /// Accept the addition of a newly created pending resource to an existing NFT.
- ///
- /// This transaction is needed when a resource is created and assigned to an NFT
- /// by a non-owner, i.e. the collection issuer, with one of the
- /// [`add_...` transactions](Pallet::add_basic_resource).
- ///
- /// # Permissions:
- /// - Token owner
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID of the NFT.
- /// - `rmrk_nft_id`: ID of the NFT with a pending resource to be accepted.
- /// - `resource_id`: ID of the newly created pending resource.
- /// accept the addition of a new resource to an existing NFT
- #[pallet::call_index(9)]
- #[pallet::weight(<SelfWeightOf<T>>::accept_resource())]
- pub fn accept_resource(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- rmrk_nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender);
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let nft_id = rmrk_nft_id.into();
-
- let budget = budget::Value::new(NESTING_BUDGET);
-
- let nft_owner =
- <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?
- .ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
-
- Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {
- ensure!(res.pending, <Error<T>>::ResourceNotPending);
- ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
-
- res.pending = false;
-
- Ok(())
- })?;
-
- Self::deposit_event(Event::<T>::ResourceAccepted {
- nft_id: rmrk_nft_id,
- resource_id,
- });
-
- Ok(())
- }
-
- /// Accept the removal of a removal-pending resource from an NFT.
- ///
- /// This transaction is needed when a non-owner, i.e. the collection issuer,
- /// requests a [removal](`Pallet::remove_resource`) of a resource from an NFT.
- ///
- /// # Permissions:
- /// - Token owner
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID of the NFT.
- /// - `rmrk_nft_id`: ID of the NFT with a resource to be removed.
- /// - `resource_id`: ID of the removal-pending resource.
- #[pallet::call_index(10)]
- #[pallet::weight(<SelfWeightOf<T>>::accept_resource_removal())]
- pub fn accept_resource_removal(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- rmrk_nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender);
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let nft_id = rmrk_nft_id.into();
-
- let budget = budget::Value::new(NESTING_BUDGET);
-
- let nft_owner =
- <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
- .map_err(|_| <Error<T>>::ResourceDoesntExist)?
- .ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
-
- ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
-
- let resource_id_key = Self::get_scoped_property_key(ResourceId(resource_id))?;
-
- let resource_info = <PalletNft<T>>::token_aux_property((
- collection_id,
- nft_id,
- RMRK_SCOPE,
- resource_id_key.clone(),
- ))
- .ok_or(<Error<T>>::ResourceDoesntExist)?;
-
- let resource_info: RmrkResourceInfo = Self::decode_property_value(&resource_info)?;
-
- ensure!(
- resource_info.pending_removal,
- <Error<T>>::ResourceNotPending
- );
-
- <PalletNft<T>>::remove_token_aux_property(
- collection_id,
- nft_id,
- RMRK_SCOPE,
- resource_id_key,
- );
-
- if let RmrkResourceTypes::Composable(resource) = resource_info.resource {
- let base_id = resource.base;
-
- Self::remove_associated_base_id(collection_id, nft_id, base_id)?;
- }
-
- Self::deposit_event(Event::<T>::ResourceRemovalAccepted {
- nft_id: rmrk_nft_id,
- resource_id,
- });
-
- Ok(())
- }
-
- /// Add or edit a custom user property, a key-value pair, describing the metadata
- /// of a token or a collection, on either one of these.
- ///
- /// Note that in this proxy implementation many details regarding RMRK are stored
- /// as scoped properties prefixed with "rmrk:", normally inaccessible
- /// to external transactions and RPCs.
- ///
- /// # Permissions:
- /// - Collection issuer - in case of collection property
- /// - Token owner - in case of NFT property
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID.
- /// - `maybe_nft_id`: Optional ID of the NFT. If left empty, then the property is set for the collection.
- /// - `key`: Key of the custom property to be referenced by.
- /// - `value`: Value of the custom property to be stored.
- #[pallet::call_index(11)]
- #[pallet::weight(<SelfWeightOf<T>>::set_property())]
- pub fn set_property(
- origin: OriginFor<T>,
- #[pallet::compact] rmrk_collection_id: RmrkCollectionId,
- maybe_nft_id: Option<RmrkNftId>,
- key: RmrkKeyString,
- value: RmrkValueString,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let sender = T::CrossAccountId::from_sub(sender);
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let budget = budget::Value::new(NESTING_BUDGET);
-
- match maybe_nft_id {
- Some(nft_id) => {
- let token_id: TokenId = nft_id.into();
-
- Self::ensure_nft_type(collection_id, token_id, NftType::Regular)?;
- Self::ensure_nft_owner(collection_id, token_id, &sender, &budget)?;
-
- <PalletNft<T>>::set_scoped_token_property(
- collection_id,
- token_id,
- RMRK_SCOPE,
- Self::encode_rmrk_property(UserProperty(key.as_slice()), &value)?,
- )?;
- }
- None => {
- let collection = Self::get_typed_nft_collection(
- collection_id,
- misc::CollectionType::Regular,
- )?;
-
- Self::check_collection_owner(&collection, &sender)?;
-
- <PalletCommon<T>>::set_scoped_collection_property(
- collection_id,
- RMRK_SCOPE,
- Self::encode_rmrk_property(UserProperty(key.as_slice()), &value)?,
- )?;
- }
- }
-
- Self::deposit_event(Event::PropertySet {
- collection_id: rmrk_collection_id,
- maybe_nft_id,
- key,
- value,
- });
-
- Ok(())
- }
-
- /// Set a different order of resource priorities for an NFT. Priorities can be used,
- /// for example, for order of rendering.
- ///
- /// Note that the priorities are not updated automatically, and are an empty vector
- /// by default. There is no pre-set definition for the order to be particular,
- /// it can be interpreted arbitrarily use-case by use-case.
- ///
- /// # Permissions:
- /// - Token owner
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID of the NFT.
- /// - `rmrk_nft_id`: ID of the NFT to rearrange resource priorities for.
- /// - `priorities`: Ordered vector of resource IDs.
- #[pallet::call_index(12)]
- #[pallet::weight(<SelfWeightOf<T>>::set_priority())]
- pub fn set_priority(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- rmrk_nft_id: RmrkNftId,
- priorities: BoundedVec<RmrkResourceId, RmrkMaxPriorities>,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let sender = T::CrossAccountId::from_sub(sender);
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let nft_id = rmrk_nft_id.into();
-
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let budget = budget::Value::new(NESTING_BUDGET);
-
- Self::ensure_nft_type(collection_id, nft_id, NftType::Regular)?;
- Self::ensure_nft_owner(collection_id, nft_id, &sender, &budget)?;
-
- <PalletNft<T>>::set_scoped_token_property(
- collection_id,
- nft_id,
- RMRK_SCOPE,
- Self::encode_rmrk_property(ResourcePriorities, &priorities.into_inner())?,
- )?;
-
- Self::deposit_event(Event::<T>::PrioritySet {
- collection_id: rmrk_collection_id,
- nft_id: rmrk_nft_id,
- });
-
- Ok(())
- }
-
- /// Create and set/propose a basic resource for an NFT.
- ///
- /// A basic resource is the simplest, lacking a Base and anything that comes with it.
- /// See RMRK docs for more information and examples.
- ///
- /// # Permissions:
- /// - Collection issuer - if not the token owner, adding the resource will warrant
- /// the owner's [acceptance](Pallet::accept_resource).
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID of the NFT.
- /// - `nft_id`: ID of the NFT to assign a resource to.
- /// - `resource`: Data of the resource to be created.
- #[pallet::call_index(13)]
- #[pallet::weight(<SelfWeightOf<T>>::add_basic_resource())]
- pub fn add_basic_resource(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- resource: RmrkBasicResource,
- ) -> DispatchResult {
- let sender = ensure_signed(origin.clone())?;
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let resource_id = Self::resource_add(
- sender,
- collection_id,
- nft_id.into(),
- RmrkResourceTypes::Basic(resource),
- )?;
-
- Self::deposit_event(Event::ResourceAdded {
- nft_id,
- resource_id,
- });
- Ok(())
- }
-
- /// Create and set/propose a composable resource for an NFT.
- ///
- /// A composable resource links to a Base and has a subset of its Parts it is composed of.
- /// See RMRK docs for more information and examples.
- ///
- /// # Permissions:
- /// - Collection issuer - if not the token owner, adding the resource will warrant
- /// the owner's [acceptance](Pallet::accept_resource).
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID of the NFT.
- /// - `nft_id`: ID of the NFT to assign a resource to.
- /// - `resource`: Data of the resource to be created.
- #[pallet::call_index(14)]
- #[pallet::weight(<SelfWeightOf<T>>::add_composable_resource())]
- pub fn add_composable_resource(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- resource: RmrkComposableResource,
- ) -> DispatchResult {
- let sender = ensure_signed(origin.clone())?;
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let base_id = resource.base;
-
- let resource_id = Self::resource_add(
- sender,
- collection_id,
- nft_id.into(),
- RmrkResourceTypes::Composable(resource),
- )?;
-
- <PalletNft<T>>::try_mutate_token_aux_property(
- collection_id,
- nft_id.into(),
- RMRK_SCOPE,
- Self::get_scoped_property_key(AssociatedBases)?,
- |value| -> DispatchResult {
- let mut bases: BasesMap = match value {
- Some(value) => Self::decode_property_value(value)?,
- None => BasesMap::new(),
- };
-
- *bases.entry(base_id).or_insert(0) += 1;
-
- *value = Some(Self::encode_property_value(&bases)?);
- Ok(())
- },
- )?;
-
- Self::deposit_event(Event::ResourceAdded {
- nft_id,
- resource_id,
- });
- Ok(())
- }
-
- /// Create and set/propose a slot resource for an NFT.
- ///
- /// A slot resource links to a Base and a slot ID in it which it can fit into.
- /// See RMRK docs for more information and examples.
- ///
- /// # Permissions:
- /// - Collection issuer - if not the token owner, adding the resource will warrant
- /// the owner's [acceptance](Pallet::accept_resource).
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK collection ID of the NFT.
- /// - `nft_id`: ID of the NFT to assign a resource to.
- /// - `resource`: Data of the resource to be created.
- #[pallet::call_index(15)]
- #[pallet::weight(<SelfWeightOf<T>>::add_slot_resource())]
- pub fn add_slot_resource(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- resource: RmrkSlotResource,
- ) -> DispatchResult {
- let sender = ensure_signed(origin.clone())?;
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- let resource_id = Self::resource_add(
- sender,
- collection_id,
- nft_id.into(),
- RmrkResourceTypes::Slot(resource),
- )?;
-
- Self::deposit_event(Event::ResourceAdded {
- nft_id,
- resource_id,
- });
- Ok(())
- }
-
- /// Remove and erase a resource from an NFT.
- ///
- /// If the sender does not own the NFT, then it will be pending confirmation,
- /// and will have to be [accepted](Pallet::accept_resource_removal) by the token owner.
- ///
- /// # Permissions
- /// - Collection issuer
- ///
- /// # Arguments
- /// - `origin`: sender of the transaction
- /// - `rmrk_collection_id`: RMRK ID of a collection to which the NFT making use of the resource belongs to.
- /// - `nft_id`: ID of the NFT with a resource to be removed.
- /// - `resource_id`: ID of the resource to be removed.
- #[pallet::call_index(16)]
- #[pallet::weight(<SelfWeightOf<T>>::remove_resource())]
- pub fn remove_resource(
- origin: OriginFor<T>,
- rmrk_collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
- ) -> DispatchResult {
- let sender = ensure_signed(origin.clone())?;
-
- let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- collection.check_is_external()?;
-
- Self::resource_remove(sender, collection_id, nft_id.into(), resource_id)?;
-
- Self::deposit_event(Event::ResourceRemoval {
- nft_id,
- resource_id,
- });
- Ok(())
- }
- }
-}
-
-impl<T: Config> Pallet<T> {
- /// Transform one of possible RMRK keys into a byte key with a RMRK scope.
- pub fn get_scoped_property_key(rmrk_key: RmrkProperty) -> Result<PropertyKey, DispatchError> {
- let key = rmrk_key.to_key::<T>()?;
-
- let scoped_key = RMRK_SCOPE
- .apply(key)
- .map_err(|_| <Error<T>>::RmrkPropertyKeyIsTooLong)?;
-
- Ok(scoped_key)
- }
-
- /// Form a Unique property, transforming a RMRK key into bytes (without assigning the scope yet)
- /// and encoding the value from an arbitrary type into bytes.
- pub fn encode_rmrk_property<E: Encode>(
- rmrk_key: RmrkProperty,
- value: &E,
- ) -> Result<Property, DispatchError> {
- let key = rmrk_key.to_key::<T>()?;
-
- let value = Self::encode_property_value(value)?;
-
- let property = Property { key, value };
-
- Ok(property)
- }
-
- /// Encode property value from an arbitrary type into bytes for storage.
- pub fn encode_property_value<E: Encode, S: Get<u32>>(
- value: &E,
- ) -> Result<BoundedBytes<S>, DispatchError> {
- let value = value
- .encode()
- .try_into()
- .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong)?;
-
- Ok(value)
- }
-
- /// Decode property value from bytes into an arbitrary type.
- pub fn decode_property_value<D: Decode, S: Get<u32>>(
- vec: &BoundedBytes<S>,
- ) -> Result<D, DispatchError> {
- vec.decode()
- .map_err(|_| <Error<T>>::UnableToDecodeRmrkData.into())
- }
-
- /// Change the limit of a property value byte vector.
- pub fn rebind<L, S>(vec: &BoundedVec<u8, L>) -> Result<BoundedVec<u8, S>, DispatchError>
- where
- BoundedVec<u8, S>: TryFrom<Vec<u8>>,
- {
- vec.rebind()
- .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong.into())
- }
-
- /// Initialize a new NFT collection with certain RMRK-scoped properties.
- ///
- /// See [`init_collection`](pallet_nonfungible::pallet::Pallet::init_collection) for more details.
- fn init_collection(
- sender: T::CrossAccountId,
- data: CreateCollectionData<T::AccountId>,
- properties: impl Iterator<Item = Property>,
- ) -> Result<CollectionId, DispatchError> {
- let collection_id = <PalletNft<T>>::init_collection(
- sender.clone(),
- sender,
- data,
- up_data_structs::CollectionFlags {
- external: true,
- ..Default::default()
- },
- );
-
- if let Err(DispatchError::Arithmetic(_)) = &collection_id {
- return Err(<Error<T>>::NoAvailableCollectionId.into());
- }
-
- <PalletCommon<T>>::set_scoped_collection_properties(
- collection_id?,
- RMRK_SCOPE,
- properties,
- )?;
-
- collection_id
- }
-
- /// Mint a new NFT with certain RMRK-scoped properties. Sender must be the collection owner.
- ///
- /// See [`create_item`](pallet_nonfungible::pallet::Pallet::create_item) for more details.
- pub fn create_nft(
- sender: &T::CrossAccountId,
- owner: &T::CrossAccountId,
- collection: &NonfungibleHandle<T>,
- properties: impl Iterator<Item = Property>,
- ) -> Result<TokenId, DispatchError> {
- let data = CreateNftExData {
- properties: BoundedVec::default(),
- owner: owner.clone(),
- };
-
- let budget = budget::Value::new(NESTING_BUDGET);
-
- <PalletNft<T>>::create_item(collection, sender, data, &budget)?;
-
- let nft_id = <PalletNft<T>>::current_token_id(collection.id);
-
- <PalletNft<T>>::set_scoped_token_properties(collection.id, nft_id, RMRK_SCOPE, properties)?;
-
- Ok(nft_id)
- }
-
- /// Burn an NFT, along with its nested children, limited by `max_burns`. The sender must be the token owner.
- ///
- /// See [`burn_recursively`](pallet_nonfungible::pallet::Pallet::burn_recursively) for more details.
- fn destroy_nft(
- sender: T::CrossAccountId,
- collection_id: CollectionId,
- token_id: TokenId,
- max_burns: u32,
- error_if_not_owned: Error<T>,
- ) -> DispatchResultWithPostInfo {
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
-
- let token_data =
- <TokenData<T>>::get((collection_id, token_id)).ok_or(<Error<T>>::NoAvailableNftId)?;
-
- let from = token_data.owner;
-
- let owner_check_budget = budget::Value::new(NESTING_BUDGET);
-
- ensure!(
- <PalletStructure<T>>::check_indirectly_owned(
- sender.clone(),
- collection_id,
- token_id,
- None,
- &owner_check_budget
- )?,
- error_if_not_owned,
- );
-
- let burns_budget = budget::Value::new(max_burns);
- let breadth_budget = budget::Value::new(max_burns);
-
- <PalletNft<T>>::burn_recursively(
- &collection,
- &from,
- token_id,
- &burns_budget,
- &breadth_budget,
- )
- }
-
- /// Add a sent token pending acceptance to the target owning token as a property.
- fn insert_pending_child(
- target: (CollectionId, TokenId),
- child: (RmrkCollectionId, RmrkNftId),
- ) -> DispatchResult {
- Self::mutate_pending_children(target, |pending_children| {
- pending_children.insert(child);
- })
- }
-
- /// Remove a sent token pending acceptance from the target token's properties.
- fn remove_pending_child(
- target: (CollectionId, TokenId),
- child: (RmrkCollectionId, RmrkNftId),
- ) -> DispatchResult {
- Self::mutate_pending_children(target, |pending_children| {
- pending_children.remove(&child);
- })
- }
-
- /// Apply a mutation to the property of a token containing sent tokens
- /// that are currently pending acceptance.
- fn mutate_pending_children(
- (target_collection_id, target_nft_id): (CollectionId, TokenId),
- f: impl FnOnce(&mut PendingChildrenSet),
- ) -> DispatchResult {
- <PalletNft<T>>::try_mutate_token_aux_property(
- target_collection_id,
- target_nft_id,
- RMRK_SCOPE,
- Self::get_scoped_property_key(PendingChildren)?,
- |pending_children| -> DispatchResult {
- let mut map = match pending_children {
- Some(map) => Self::decode_property_value(map)?,
- None => PendingChildrenSet::new(),
- };
-
- f(&mut map);
-
- *pending_children = Some(Self::encode_property_value(&map)?);
-
- Ok(())
- },
- )
- }
-
- /// Get an iterator from a token's property containing tokens sent to it
- /// that are currently pending acceptance.
- fn iterate_pending_children(
- collection_id: CollectionId,
- nft_id: TokenId,
- ) -> Result<impl Iterator<Item = PendingChild>, DispatchError> {
- let property = <PalletNft<T>>::token_aux_property((
- collection_id,
- nft_id,
- RMRK_SCOPE,
- Self::get_scoped_property_key(PendingChildren)?,
- ));
-
- let pending_children = match property {
- Some(map) => Self::decode_property_value(&map)?,
- None => PendingChildrenSet::new(),
- };
-
- Ok(pending_children.into_iter())
- }
-
- /// Get incremented resource ID from within an NFT's properties and store the new latest ID.
- /// Thus, the returned resource ID should be used.
- ///
- /// Resource IDs are unique only across an NFT.
- fn acquire_next_resource_id(
- collection_id: CollectionId,
- nft_id: TokenId,
- ) -> Result<RmrkResourceId, DispatchError> {
- let resource_id: RmrkResourceId =
- Self::get_nft_property_decoded(collection_id, nft_id, NextResourceId)?;
-
- let next_id = resource_id
- .checked_add(1)
- .ok_or(<Error<T>>::NoAvailableResourceId)?;
-
- <PalletNft<T>>::set_scoped_token_property(
- collection_id,
- nft_id,
- RMRK_SCOPE,
- Self::encode_rmrk_property(NextResourceId, &next_id)?,
- )?;
-
- Ok(resource_id)
- }
-
- /// Create and add a resource for a regular NFT, mark it as pending if the sender
- /// is not the token owner. The sender must be the collection owner.
- fn resource_add(
- sender: T::AccountId,
- collection_id: CollectionId,
- nft_id: TokenId,
- resource: RmrkResourceTypes,
- ) -> Result<RmrkResourceId, DispatchError> {
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- ensure!(collection.owner == sender, Error::<T>::NoPermission);
-
- let sender = T::CrossAccountId::from_sub(sender);
- let budget = budget::Value::new(NESTING_BUDGET);
-
- let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
- .map_err(Self::map_unique_err_to_proxy)?
- .ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
-
- let pending = sender != nft_owner;
-
- let id = Self::acquire_next_resource_id(collection_id, nft_id)?;
-
- let resource_info = RmrkResourceInfo {
- id,
- resource,
- pending,
- pending_removal: false,
- };
-
- <PalletNft<T>>::try_mutate_token_aux_property(
- collection_id,
- nft_id,
- RMRK_SCOPE,
- Self::get_scoped_property_key(ResourceId(id))?,
- |value| -> DispatchResult {
- *value = Some(Self::encode_property_value(&resource_info)?);
-
- Ok(())
- },
- )?;
-
- Ok(id)
- }
-
- /// Designate a resource for erasure from an NFT, and remove it if the sender is the token owner.
- /// The sender must be the collection owner.
- fn resource_remove(
- sender: T::AccountId,
- collection_id: CollectionId,
- nft_id: TokenId,
- resource_id: RmrkResourceId,
- ) -> DispatchResult {
- let collection =
- Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
- ensure!(collection.owner == sender, Error::<T>::NoPermission);
-
- let resource_id_key = Self::get_scoped_property_key(ResourceId(resource_id))?;
-
- let resource = <PalletNft<T>>::token_aux_property((
- collection_id,
- nft_id,
- RMRK_SCOPE,
- resource_id_key.clone(),
- ))
- .ok_or(<Error<T>>::ResourceDoesntExist)?;
-
- let resource_info: RmrkResourceInfo = Self::decode_property_value(&resource)?;
-
- let budget = up_data_structs::budget::Value::new(NESTING_BUDGET);
- let topmost_owner =
- <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?
- .ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
-
- let sender = T::CrossAccountId::from_sub(sender);
- if topmost_owner == sender {
- <PalletNft<T>>::remove_token_aux_property(
- collection_id,
- nft_id,
- RMRK_SCOPE,
- Self::get_scoped_property_key(ResourceId(resource_id))?,
- );
-
- if let RmrkResourceTypes::Composable(resource) = resource_info.resource {
- let base_id = resource.base;
-
- Self::remove_associated_base_id(collection_id, nft_id, base_id)?;
- }
- } else {
- Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {
- res.pending_removal = true;
-
- Ok(())
- })?;
- }
-
- Ok(())
- }
-
- /// Remove a Base ID from an NFT if they are associated.
- /// The Base itself is deleted if the number of associated NFTs reaches 0.
- fn remove_associated_base_id(
- collection_id: CollectionId,
- nft_id: TokenId,
- base_id: RmrkBaseId,
- ) -> DispatchResult {
- <PalletNft<T>>::try_mutate_token_aux_property(
- collection_id,
- nft_id,
- RMRK_SCOPE,
- Self::get_scoped_property_key(AssociatedBases)?,
- |value| -> DispatchResult {
- let mut bases: BasesMap = match value {
- Some(value) => Self::decode_property_value(value)?,
- None => BasesMap::new(),
- };
-
- let remaining = bases.get(&base_id);
-
- if let Some(remaining) = remaining {
- if let Some(0) | None = remaining.checked_sub(1) {
- bases.remove(&base_id);
- }
- }
-
- *value = Some(Self::encode_property_value(&bases)?);
- Ok(())
- },
- )
- }
-
- /// Apply a mutation to a resource stored in the token properties of an NFT.
- fn try_mutate_resource_info(
- collection_id: CollectionId,
- nft_id: TokenId,
- resource_id: RmrkResourceId,
- f: impl FnOnce(&mut RmrkResourceInfo) -> DispatchResult,
- ) -> DispatchResult {
- <PalletNft<T>>::try_mutate_token_aux_property(
- collection_id,
- nft_id,
- RMRK_SCOPE,
- Self::get_scoped_property_key(ResourceId(resource_id))?,
- |value| match value {
- Some(value) => {
- let mut resource_info: RmrkResourceInfo = Self::decode_property_value(value)?;
-
- f(&mut resource_info)?;
-
- *value = Self::encode_property_value(&resource_info)?;
-
- Ok(())
- }
- None => Err(<Error<T>>::ResourceDoesntExist.into()),
- },
- )
- }
-
- /// Change the owner of an NFT collection, ensuring that the sender is the current owner.
- fn change_collection_owner(
- collection_id: CollectionId,
- collection_type: misc::CollectionType,
- sender: T::AccountId,
- new_owner: T::AccountId,
- ) -> DispatchResult {
- let collection = Self::get_typed_nft_collection(collection_id, collection_type)?;
- Self::check_collection_owner(&collection, &T::CrossAccountId::from_sub(sender))?;
-
- let mut collection = collection.into_inner();
-
- collection.owner = new_owner;
- collection.save()
- }
-
- /// Ensure that an account is the collection owner/issuer, return an error if not.
- pub fn check_collection_owner(
- collection: &NonfungibleHandle<T>,
- account: &T::CrossAccountId,
- ) -> DispatchResult {
- collection
- .check_is_owner(account)
- .map_err(Self::map_unique_err_to_proxy)
- }
-
- /// Get the latest yet-unused RMRK collection index from the storage.
- pub fn last_collection_idx() -> RmrkCollectionId {
- <CollectionIndex<T>>::get()
- }
-
- /// Get a mapping from a RMRK collection ID to its corresponding Unique collection ID.
- pub fn unique_collection_id(
- rmrk_collection_id: RmrkCollectionId,
- ) -> Result<CollectionId, DispatchError> {
- <UniqueCollectionId<T>>::try_get(rmrk_collection_id)
- .map_err(|_| <Error<T>>::CollectionUnknown.into())
- }
-
- /// Get a mapping from a Unique collection ID to its RMRK collection ID counterpart, if it exists.
- pub fn rmrk_collection_id(
- unique_collection_id: CollectionId,
- ) -> Result<RmrkCollectionId, DispatchError> {
- Self::get_collection_property_decoded(unique_collection_id, RmrkInternalCollectionId)
- }
-
- /// Fetch a Unique NFT collection.
- pub fn get_nft_collection(
- collection_id: CollectionId,
- ) -> Result<NonfungibleHandle<T>, DispatchError> {
- let collection = <CollectionHandle<T>>::try_get(collection_id)
- .map_err(|_| <Error<T>>::CollectionUnknown)?;
-
- match collection.mode {
- CollectionMode::NFT => Ok(NonfungibleHandle::cast(collection)),
- _ => Err(<Error<T>>::CollectionUnknown.into()),
- }
- }
-
- /// Check if an NFT collection with such an ID exists.
- pub fn collection_exists(collection_id: CollectionId) -> bool {
- <CollectionHandle<T>>::try_get(collection_id).is_ok()
- }
-
- /// Fetch and decode a RMRK-scoped collection property value in bytes.
- pub fn get_collection_property(
- collection_id: CollectionId,
- key: RmrkProperty,
- ) -> Result<PropertyValue, DispatchError> {
- let collection_property = <PalletCommon<T>>::collection_properties(collection_id)
- .get(&Self::get_scoped_property_key(key)?)
- .ok_or(<Error<T>>::CollectionUnknown)?
- .clone();
-
- Ok(collection_property)
- }
-
- /// Fetch a RMRK-scoped collection property and decode it from bytes into an appropriate type.
- pub fn get_collection_property_decoded<V: Decode>(
- collection_id: CollectionId,
- key: RmrkProperty,
- ) -> Result<V, DispatchError> {
- Self::decode_property_value(&Self::get_collection_property(collection_id, key)?)
- }
-
- /// Get the type of a collection stored as a scoped property.
- ///
- /// RMRK Core proxy differentiates between regular collections as well as RMRK Bases as collections.
- pub fn get_collection_type(
- collection_id: CollectionId,
- ) -> Result<misc::CollectionType, DispatchError> {
- Self::get_collection_property_decoded(collection_id, CollectionType).map_err(|err| {
- if err != <Error<T>>::CollectionUnknown.into() {
- <Error<T>>::CorruptedCollectionType.into()
- } else {
- err
- }
- })
- }
-
- /// Ensure that the type of the collection equals the provided type,
- /// otherwise return an error.
- pub fn ensure_collection_type(
- collection_id: CollectionId,
- collection_type: misc::CollectionType,
- ) -> DispatchResult {
- let actual_type = Self::get_collection_type(collection_id)?;
- ensure!(
- actual_type == collection_type,
- <CommonError<T>>::NoPermission
- );
-
- Ok(())
- }
-
- /// Fetch an NFT collection, but make sure it has the appropriate type.
- pub fn get_typed_nft_collection(
- collection_id: CollectionId,
- collection_type: misc::CollectionType,
- ) -> Result<NonfungibleHandle<T>, DispatchError> {
- Self::ensure_collection_type(collection_id, collection_type)?;
-
- Self::get_nft_collection(collection_id)
- }
-
- /// Same as [`get_typed_nft_collection`](crate::pallet::Pallet::get_typed_nft_collection),
- /// but also return the Unique collection ID.
- pub fn get_typed_nft_collection_mapped(
- rmrk_collection_id: RmrkCollectionId,
- collection_type: misc::CollectionType,
- ) -> Result<(NonfungibleHandle<T>, CollectionId), DispatchError> {
- let unique_collection_id = match collection_type {
- misc::CollectionType::Regular => Self::unique_collection_id(rmrk_collection_id)?,
- _ => rmrk_collection_id.into(),
- };
-
- let collection = Self::get_typed_nft_collection(unique_collection_id, collection_type)?;
-
- Ok((collection, unique_collection_id))
- }
-
- /// Fetch and decode a RMRK-scoped NFT property value in bytes.
- pub fn get_nft_property(
- collection_id: CollectionId,
- nft_id: TokenId,
- key: RmrkProperty,
- ) -> Result<PropertyValue, DispatchError> {
- let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))
- .get(&Self::get_scoped_property_key(key)?)
- .ok_or(<Error<T>>::RmrkPropertyIsNotFound)?
- .clone();
-
- Ok(nft_property)
- }
-
- /// Fetch a RMRK-scoped NFT property and decode it from bytes into an appropriate type.
- pub fn get_nft_property_decoded<V: Decode>(
- collection_id: CollectionId,
- nft_id: TokenId,
- key: RmrkProperty,
- ) -> Result<V, DispatchError> {
- Self::decode_property_value(&Self::get_nft_property(collection_id, nft_id, key)?)
- }
-
- /// Check that an NFT exists.
- pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {
- <TokenData<T>>::contains_key((collection_id, nft_id))
- }
-
- /// Get the type of an NFT stored as a scoped property.
- ///
- /// RMRK Core proxy differentiates between regular NFTs, and RMRK Parts and Themes.
- pub fn get_nft_type(
- collection_id: CollectionId,
- token_id: TokenId,
- ) -> Result<NftType, DispatchError> {
- Self::get_nft_property_decoded(collection_id, token_id, TokenType)
- .map_err(|_| <Error<T>>::NoAvailableNftId.into())
- }
-
- /// Ensure that the type of the NFT equals the provided type, otherwise return an error.
- pub fn ensure_nft_type(
- collection_id: CollectionId,
- token_id: TokenId,
- nft_type: NftType,
- ) -> DispatchResult {
- let actual_type = Self::get_nft_type(collection_id, token_id)?;
- ensure!(actual_type == nft_type, <Error<T>>::NoPermission);
-
- Ok(())
- }
-
- /// Ensure that an account is the owner of the token, either directly
- /// or at the top of the nesting hierarchy; return an error if it is not.
- pub fn ensure_nft_owner(
- collection_id: CollectionId,
- token_id: TokenId,
- possible_owner: &T::CrossAccountId,
- nesting_budget: &dyn budget::Budget,
- ) -> DispatchResult {
- let is_owned = <PalletStructure<T>>::check_indirectly_owned(
- possible_owner.clone(),
- collection_id,
- token_id,
- None,
- nesting_budget,
- )
- .map_err(Self::map_unique_err_to_proxy)?;
-
- ensure!(is_owned, <Error<T>>::NoPermission);
-
- Ok(())
- }
-
- /// Fetch non-scoped properties of a collection or a token that match the filter keys supplied,
- /// or, if None are provided, return all non-scoped properties.
- pub fn filter_user_properties<Key, Value, R, Mapper>(
- collection_id: CollectionId,
- token_id: Option<TokenId>,
- filter_keys: Option<Vec<RmrkPropertyKey>>,
- mapper: Mapper,
- ) -> Result<Vec<R>, DispatchError>
- where
- Key: TryFrom<RmrkPropertyKey> + AsRef<[u8]>,
- Value: Decode + Default,
- Mapper: Fn(Key, Value) -> R,
- {
- filter_keys
- .map(|keys| {
- let properties = keys
- .into_iter()
- .filter_map(|key| {
- let key: Key = key.try_into().ok()?;
-
- let value = match token_id {
- Some(token_id) => Self::get_nft_property_decoded(
- collection_id,
- token_id,
- UserProperty(key.as_ref()),
- ),
- None => Self::get_collection_property_decoded(
- collection_id,
- UserProperty(key.as_ref()),
- ),
- }
- .ok()?;
-
- Some(mapper(key, value))
- })
- .collect();
-
- Ok(properties)
- })
- .unwrap_or_else(|| {
- let properties =
- Self::iterate_user_properties(collection_id, token_id, mapper)?.collect();
-
- Ok(properties)
- })
- }
-
- /// Get all non-scoped properties from a collection or a token, and apply some transformation,
- /// supplied by `mapper`, to each key-value pair.
- pub fn iterate_user_properties<Key, Value, R, Mapper>(
- collection_id: CollectionId,
- token_id: Option<TokenId>,
- mapper: Mapper,
- ) -> Result<impl Iterator<Item = R>, DispatchError>
- where
- Key: TryFrom<RmrkPropertyKey> + AsRef<[u8]>,
- Value: Decode + Default,
- Mapper: Fn(Key, Value) -> R,
- {
- let properties = match token_id {
- Some(token_id) => <PalletNft<T>>::token_properties((collection_id, token_id)),
- None => <PalletCommon<T>>::collection_properties(collection_id),
- };
-
- let properties = properties.into_iter().filter_map(move |(key, value)| {
- let key = strip_key_prefix(&key, USER_PROPERTY_PREFIX)?;
-
- let key: Key = key.to_vec().try_into().ok()?;
- let value: Value = value.decode().ok()?;
-
- Some(mapper(key, value))
- });
-
- Ok(properties)
- }
-
- /// Match Unique errors to RMRK's own and return the RMRK error if a match is successful.
- fn map_unique_err_to_proxy(err: DispatchError) -> DispatchError {
- map_unique_err_to_proxy! {
- match err {
- CommonError::NoPermission => NoPermission,
- CommonError::CollectionTokenLimitExceeded => CollectionFullOrLocked,
- CommonError::PublicMintingNotAllowed => NoPermission,
- CommonError::TokenNotFound => NoAvailableNftId,
- CommonError::ApprovedValueTooLow => NoPermission,
- CommonError::CantDestroyNotEmptyCollection => CollectionNotEmpty,
- StructureError::TokenNotFound => NoAvailableNftId,
- StructureError::OuroborosDetected => CannotSendToDescendentOrSelf,
- }
- }
- }
-}
pallets/proxy-rmrk-core/src/misc.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/misc.rs
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-//! Miscellaneous helpers and utilities used by the proxy pallet.
-
-use super::*;
-use codec::{Encode, Decode, Error};
-
-/// Match an error to a provided pattern matcher and get
-/// the corresponding error of another type if a match is successful.
-#[macro_export]
-macro_rules! map_unique_err_to_proxy {
- (match $err:ident { $($unique_err_ty:ident :: $unique_err:ident => $proxy_err:ident),+ $(,)? }) => {
- $(
- if $err == <$unique_err_ty<T>>::$unique_err.into() {
- return <Error<T>>::$proxy_err.into()
- } else
- )+ {
- $err
- }
- };
-}
-
-/// Interface to decode some serialized bytes into an arbitrary type `T`,
-/// preferably if these bytes were originally encoded from `T`.
-pub trait RmrkDecode<T: Decode, S> {
- /// Try to decode self into an arbitrary type `T`.
- fn decode(&self) -> Result<T, Error>;
-}
-
-impl<T: Decode, S> RmrkDecode<T, S> for BoundedVec<u8, S> {
- fn decode(&self) -> Result<T, Error> {
- let mut value = self.as_slice();
-
- T::decode(&mut value)
- }
-}
-
-/// Interface to "rebind" - change the limit of a bounded byte vector.
-pub trait RmrkRebind<T, S> {
- /// Try to change the limit of a bounded byte vector.
- fn rebind(&self) -> Result<BoundedVec<u8, S>, Error>;
-}
-
-impl<T, S> RmrkRebind<T, S> for BoundedVec<u8, T>
-where
- BoundedVec<u8, S>: TryFrom<Vec<u8>>,
-{
- fn rebind(&self) -> Result<BoundedVec<u8, S>, Error> {
- BoundedVec::<u8, S>::try_from(self.clone().into_inner())
- .map_err(|_| "BoundedVec exceeds its limit".into())
- }
-}
-
-/// RMRK Base shares functionality with a regular collection, and is thus
-/// stored as one, but they are used for different purposes and need to be differentiated.
-#[derive(Encode, Decode, PartialEq, Eq)]
-pub enum CollectionType {
- Regular,
- Base,
-}
-
-/// RMRK Base, being stored as a collection, can have different kinds of tokens,
-/// all except the `Regular` type, which is attributed to `Regular` collection.
-#[derive(Encode, Decode, PartialEq, Eq)]
-pub enum NftType {
- Regular,
- FixedPart,
- SlotPart,
- Theme,
-}
pallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/property.rs
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-//! Details of storing and handling RMRK properties.
-
-use super::*;
-use up_data_structs::PropertyScope;
-use core::convert::AsRef;
-
-/// Property prefix for storing resources.
-pub const RESOURCE_ID_PREFIX: &str = "rsid-";
-/// Property prefix for storing custom user-defined properties.
-pub const USER_PROPERTY_PREFIX: &str = "userprop-";
-/// Property scope for RMRK, used to signify that this property
-/// was created and is used by RMRK.
-pub const RMRK_SCOPE: PropertyScope = PropertyScope::Rmrk;
-
-/// Predefined RMRK property keys for storage of RMRK data format on the Unique chain.
-pub enum RmrkProperty<'r> {
- Metadata,
- CollectionType,
- RmrkInternalCollectionId,
- TokenType,
- Transferable,
- RoyaltyInfo,
- Equipped,
- ResourcePriorities,
- NextResourceId,
- ResourceId(RmrkResourceId),
- PendingNftAccept,
- PendingChildren,
- AssociatedBases,
- Parts,
- Base,
- Src,
- EquippedNft,
- BaseType,
- ExternalPartId,
- EquippableList,
- ZIndex,
- ThemeName,
- ThemeInherit,
- UserProperty(&'r [u8]),
-}
-
-impl<'r> RmrkProperty<'r> {
- /// Convert a predefined RMRK property key enum into string bytes.
- pub fn to_key<T: Config>(self) -> Result<PropertyKey, Error<T>> {
- fn get_bytes<T: AsRef<[u8]>>(container: &T) -> &[u8] {
- container.as_ref()
- }
-
- macro_rules! key {
- ($($component:expr),+) => {
- PropertyKey::try_from([$(key!(@ &$component)),+].concat())
- .map_err(|_| <Error<T>>::RmrkPropertyKeyIsTooLong)
- };
-
- (@ $key:expr) => {
- get_bytes($key)
- };
- }
-
- match self {
- Self::Metadata => key!("metadata"),
- Self::CollectionType => key!("collection-type"),
- Self::RmrkInternalCollectionId => key!("internal-id"),
- Self::TokenType => key!("token-type"),
- Self::Transferable => key!("transferable"),
- Self::RoyaltyInfo => key!("royalty-info"),
- Self::Equipped => key!("equipped"),
- Self::ResourcePriorities => key!("resource-priorities"),
- Self::NextResourceId => key!("next-resource-id"),
- Self::ResourceId(id) => key!(RESOURCE_ID_PREFIX, id.to_le_bytes()),
- Self::PendingNftAccept => key!("pending-nft-accept"),
- Self::PendingChildren => key!("pending-children"),
- Self::AssociatedBases => key!("assoc-bases"),
- Self::Parts => key!("parts"),
- Self::Base => key!("base"),
- Self::Src => key!("src"),
- Self::EquippedNft => key!("equipped-nft"),
- Self::BaseType => key!("base-type"),
- Self::ExternalPartId => key!("ext-part-id"),
- Self::EquippableList => key!("equippable-list"),
- Self::ZIndex => key!("z-index"),
- Self::ThemeName => key!("theme-name"),
- Self::ThemeInherit => key!("theme-inherit"),
- Self::UserProperty(name) => key!(USER_PROPERTY_PREFIX, name),
- }
- }
-}
-
-/// Strip a property key of its prefix and RMRK scope.
-pub fn strip_key_prefix(key: &PropertyKey, prefix: &str) -> Option<PropertyKey> {
- let key_prefix = PropertyKey::try_from(prefix.as_bytes().to_vec()).ok()?;
- let key_prefix = RMRK_SCOPE.apply(key_prefix).ok()?;
-
- key.as_slice()
- .strip_prefix(key_prefix.as_slice())?
- .to_vec()
- .try_into()
- .ok()
-}
-
-/// Check that the key has the prefix.
-pub fn is_valid_key_prefix(key: &PropertyKey, prefix: &str) -> bool {
- strip_key_prefix(key, prefix).is_some()
-}
pallets/proxy-rmrk-core/src/rpc.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/rpc.rs
+++ /dev/null
@@ -1,293 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-//! Realizations of RMRK RPCs (remote procedure calls) related to the Core pallet.
-
-use super::*;
-
-/// Get the latest created collection ID.
-pub fn last_collection_idx<T: Config>() -> Result<RmrkCollectionId, DispatchError> {
- Ok(<Pallet<T>>::last_collection_idx())
-}
-
-/// Get collection info by ID.
-pub fn collection_by_id<T: Config>(
- collection_id: RmrkCollectionId,
-) -> Result<Option<RmrkCollectionInfo<T::AccountId>>, DispatchError> {
- let (collection, collection_id) = match <Pallet<T>>::get_typed_nft_collection_mapped(
- collection_id,
- misc::CollectionType::Regular,
- ) {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- let nfts_count = collection.total_supply();
-
- Ok(Some(RmrkCollectionInfo {
- issuer: collection.owner.clone(),
- metadata: <Pallet<T>>::get_collection_property_decoded(
- collection_id,
- RmrkProperty::Metadata,
- )?,
- max: collection.limits.token_limit,
- symbol: <Pallet<T>>::rebind(&collection.token_prefix)?,
- nfts_count,
- }))
-}
-
-/// Get NFT info by collection and NFT IDs.
-pub fn nft_by_id<T: Config>(
- collection_id: RmrkCollectionId,
- nft_by_id: RmrkNftId,
-) -> Result<Option<RmrkInstanceInfo<T::AccountId>>, DispatchError> {
- let (collection, collection_id) = match <Pallet<T>>::get_typed_nft_collection_mapped(
- collection_id,
- misc::CollectionType::Regular,
- ) {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- let nft_id = TokenId(nft_by_id);
- if !<Pallet<T>>::nft_exists(collection_id, nft_id) {
- return Ok(None);
- }
-
- let owner = match collection.token_owner(nft_id) {
- Ok(owner) => match T::CrossTokenAddressMapping::address_to_token(&owner) {
- Some((col, tok)) => {
- let rmrk_collection = <Pallet<T>>::rmrk_collection_id(col)?;
-
- RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(rmrk_collection, tok.0)
- }
- None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone()),
- },
- _ => return Ok(None),
- };
-
- Ok(Some(RmrkInstanceInfo {
- owner: owner,
- royalty: <Pallet<T>>::get_nft_property_decoded(
- collection_id,
- nft_id,
- RmrkProperty::RoyaltyInfo,
- )?,
- metadata: <Pallet<T>>::get_nft_property_decoded(
- collection_id,
- nft_id,
- RmrkProperty::Metadata,
- )?,
- equipped: <Pallet<T>>::get_nft_property_decoded(
- collection_id,
- nft_id,
- RmrkProperty::Equipped,
- )?,
- pending: <Pallet<T>>::get_nft_property_decoded(
- collection_id,
- nft_id,
- RmrkProperty::PendingNftAccept,
- )?,
- }))
-}
-
-/// Get tokens owned by an account in a collection.
-pub fn account_tokens<T: Config>(
- account_id: T::AccountId,
- collection_id: RmrkCollectionId,
-) -> Result<Vec<RmrkNftId>, DispatchError> {
- let cross_account_id = CrossAccountId::from_sub(account_id);
-
- let (collection, collection_id) = match <Pallet<T>>::get_typed_nft_collection_mapped(
- collection_id,
- misc::CollectionType::Regular,
- ) {
- Ok(c) => c,
- Err(_) => return Ok(Vec::new()),
- };
-
- let tokens = collection
- .account_tokens(cross_account_id)
- .into_iter()
- .filter(|token| {
- let is_pending = <Pallet<T>>::get_nft_property_decoded(
- collection_id,
- *token,
- RmrkProperty::PendingNftAccept,
- )
- .unwrap_or(true);
-
- !is_pending
- })
- .map(|token| token.0)
- .collect();
-
- Ok(tokens)
-}
-
-/// Get tokens nested in an NFT - its direct children (not the children's children).
-pub fn nft_children<T: Config>(
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
-) -> Result<Vec<RmrkNftChild>, DispatchError> {
- let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new()),
- };
- let nft_id = TokenId(nft_id);
- if !<Pallet<T>>::nft_exists(collection_id, nft_id) {
- return Ok(Vec::new());
- }
-
- Ok(
- pallet_nonfungible::TokenChildren::<T>::iter_prefix((collection_id, nft_id))
- .filter_map(|((child_collection, child_token), _)| {
- let rmrk_child_collection =
- <Pallet<T>>::rmrk_collection_id(child_collection).ok()?;
-
- Some(RmrkNftChild {
- collection_id: rmrk_child_collection,
- nft_id: child_token.0,
- })
- })
- .chain(
- <Pallet<T>>::iterate_pending_children(collection_id, nft_id)?.map(
- |(child_collection, child_nft_id)| RmrkNftChild {
- collection_id: child_collection,
- nft_id: child_nft_id,
- },
- ),
- )
- .collect(),
- )
-}
-
-/// Get collection properties, created by the user - not the proxy-specific properties.
-pub fn collection_properties<T: Config>(
- collection_id: RmrkCollectionId,
- filter_keys: Option<Vec<RmrkPropertyKey>>,
-) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
- let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new()),
- };
- if <Pallet<T>>::ensure_collection_type(collection_id, misc::CollectionType::Regular).is_err() {
- return Ok(Vec::new());
- }
-
- let properties = <Pallet<T>>::filter_user_properties(
- collection_id,
- /* token_id = */ None,
- filter_keys,
- |key, value| RmrkPropertyInfo { key, value },
- )?;
-
- Ok(properties)
-}
-
-/// Get NFT properties, created by the user - not the proxy-specific properties.
-pub fn nft_properties<T: Config>(
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- filter_keys: Option<Vec<RmrkPropertyKey>>,
-) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
- let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new()),
- };
- let token_id = TokenId(nft_id);
-
- if <Pallet<T>>::ensure_nft_type(collection_id, token_id, NftType::Regular).is_err() {
- return Ok(Vec::new());
- }
-
- let properties = <Pallet<T>>::filter_user_properties(
- collection_id,
- Some(token_id),
- filter_keys,
- |key, value| RmrkPropertyInfo { key, value },
- )?;
-
- Ok(properties)
-}
-
-/// Get full information on each resource of an NFT, including pending.
-pub fn nft_resources<T: Config>(
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
-) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
- let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(Vec::new()),
- };
- if <Pallet<T>>::ensure_collection_type(collection_id, misc::CollectionType::Regular).is_err() {
- return Ok(Vec::new());
- }
-
- let nft_id = TokenId(nft_id);
- if <Pallet<T>>::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() {
- return Ok(Vec::new());
- }
-
- let resources = <pallet_nonfungible::Pallet<T>>::iterate_token_aux_properties(
- collection_id,
- nft_id,
- PropertyScope::Rmrk,
- )
- .filter_map(|(key, value)| {
- if !is_valid_key_prefix(&key, RESOURCE_ID_PREFIX) {
- return None;
- }
-
- let resource_info: RmrkResourceInfo = <Pallet<T>>::decode_property_value(&value).ok()?;
-
- Some(resource_info)
- })
- .collect();
-
- Ok(resources)
-}
-
-/// Get the priority of a resource in an NFT.
-pub fn nft_resource_priority<T: Config>(
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId,
-) -> Result<Option<u32>, DispatchError> {
- let collection_id = match <Pallet<T>>::unique_collection_id(collection_id) {
- Ok(id) => id,
- Err(_) => return Ok(None),
- };
- if <Pallet<T>>::ensure_collection_type(collection_id, misc::CollectionType::Regular).is_err() {
- return Ok(None);
- }
-
- let nft_id = TokenId(nft_id);
- if <Pallet<T>>::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() {
- return Ok(None);
- }
-
- let priorities: Vec<_> = <Pallet<T>>::get_nft_property_decoded(
- collection_id,
- nft_id,
- RmrkProperty::ResourcePriorities,
- )?;
- Ok(priorities
- .into_iter()
- .enumerate()
- .find(|(_, id)| *id == resource_id)
- .map(|(priority, _): (usize, RmrkResourceId)| priority as u32))
-}
pallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/weights.rs
+++ /dev/null
@@ -1,480 +0,0 @@
-// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
-
-//! Autogenerated weights for pallet_proxy_rmrk_core
-//!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-08-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
-
-// Executed Command:
-// target/release/unique-collator
-// benchmark
-// pallet
-// --pallet
-// pallet-proxy-rmrk-core
-// --wasm-execution
-// compiled
-// --extrinsic
-// *
-// --template
-// .maintain/frame-weight-template.hbs
-// --steps=50
-// --repeat=80
-// --heap-pages=4096
-// --output=./pallets/proxy-rmrk-core/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_proxy_rmrk_core.
-pub trait WeightInfo {
- fn create_collection() -> Weight;
- fn destroy_collection() -> Weight;
- fn change_collection_issuer() -> Weight;
- fn lock_collection() -> Weight;
- fn mint_nft(b: u32, ) -> Weight;
- fn burn_nft(b: u32, ) -> Weight;
- fn send() -> Weight;
- fn accept_nft() -> Weight;
- fn reject_nft() -> Weight;
- fn set_property() -> Weight;
- fn set_priority() -> Weight;
- fn add_basic_resource() -> Weight;
- fn add_composable_resource() -> Weight;
- fn add_slot_resource() -> Weight;
- fn remove_resource() -> Weight;
- fn accept_resource() -> Weight;
- fn accept_resource_removal() -> Weight;
-}
-
-/// Weights for pallet_proxy_rmrk_core 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: RmrkCore CollectionIndex (r:1 w:1)
- // Storage: Common CollectionPropertyPermissions (r:0 w:1)
- // Storage: Common CollectionProperties (r:0 w:1)
- // Storage: Common CollectionById (r:0 w:1)
- // Storage: RmrkCore UniqueCollectionId (r:0 w:1)
- fn create_collection() -> Weight {
- Weight::from_ref_time(49_754_000)
- .saturating_add(T::DbWeight::get().reads(5 as u64))
- .saturating_add(T::DbWeight::get().writes(8 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:1)
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Nonfungible TokenData (r:1 w:0)
- // Storage: Common DestroyedCollectionCount (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:0 w:1)
- // Storage: Nonfungible TokensBurnt (r:0 w:1)
- // Storage: Common AdminAmount (r:0 w:1)
- fn destroy_collection() -> Weight {
- Weight::from_ref_time(48_588_000)
- .saturating_add(T::DbWeight::get().reads(5 as u64))
- .saturating_add(T::DbWeight::get().writes(6 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Common CollectionProperties (r:1 w:0)
- fn change_collection_issuer() -> Weight {
- Weight::from_ref_time(25_054_000)
- .saturating_add(T::DbWeight::get().reads(3 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:1 w:0)
- // Storage: Nonfungible TokensBurnt (r:1 w:0)
- fn lock_collection() -> Weight {
- Weight::from_ref_time(26_483_000)
- .saturating_add(T::DbWeight::get().reads(5 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokensMinted (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
- fn mint_nft(b: u32, ) -> Weight {
- Weight::from_ref_time(62_419_000)
- // Standard Error: 7_000
- .saturating_add(Weight::from_ref_time(12_325_000).saturating_mul(b as u64))
- .saturating_add(T::DbWeight::get().reads(6 as u64))
- .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64)))
- .saturating_add(T::DbWeight::get().writes(5 as u64))
- .saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(b as u64)))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:1 w:1)
- // Storage: Nonfungible TokenChildren (r:1 w:0)
- // Storage: Nonfungible TokensBurnt (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible Allowance (r:1 w:0)
- // Storage: Nonfungible Owned (r:0 w:1)
- // Storage: Nonfungible TokenProperties (r:0 w:1)
- fn burn_nft(b: u32, ) -> Weight {
- (Weight::from_ref_time(0))
- // Standard Error: 1_488_000
- .saturating_add(Weight::from_ref_time(298_367_000).saturating_mul(b as u64))
- .saturating_add(T::DbWeight::get().reads(9 as u64))
- .saturating_add(T::DbWeight::get().reads((4 as u64).saturating_mul(b as u64)))
- .saturating_add(T::DbWeight::get().writes(6 as u64))
- .saturating_add(T::DbWeight::get().writes((4 as u64).saturating_mul(b as u64)))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:0)
- // Storage: Nonfungible AccountBalance (r:2 w:2)
- // Storage: Nonfungible Allowance (r:1 w:0)
- // Storage: Nonfungible TokenChildren (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:2)
- fn send() -> Weight {
- Weight::from_ref_time(81_942_000)
- .saturating_add(T::DbWeight::get().reads(12 as u64))
- .saturating_add(T::DbWeight::get().writes(6 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:2 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:2 w:0)
- // Storage: Nonfungible TokenData (r:6 w:1)
- // Storage: Nonfungible AccountBalance (r:2 w:2)
- // Storage: Nonfungible Allowance (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- // Storage: Nonfungible TokenChildren (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:2)
- fn accept_nft() -> Weight {
- Weight::from_ref_time(97_925_000)
- .saturating_add(T::DbWeight::get().reads(16 as u64))
- .saturating_add(T::DbWeight::get().writes(8 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:5)
- // Storage: Nonfungible TokenProperties (r:1 w:5)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- // Storage: Nonfungible TokenChildren (r:9 w:4)
- // Storage: Nonfungible TokensBurnt (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:5 w:5)
- // Storage: Nonfungible Allowance (r:5 w:0)
- // Storage: Nonfungible Owned (r:0 w:5)
- fn reject_nft() -> Weight {
- Weight::from_ref_time(277_794_000)
- .saturating_add(T::DbWeight::get().reads(30 as u64))
- .saturating_add(T::DbWeight::get().writes(26 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:5 w:0)
- fn set_property() -> Weight {
- Weight::from_ref_time(54_657_000)
- .saturating_add(T::DbWeight::get().reads(9 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:5 w:0)
- fn set_priority() -> Weight {
- Weight::from_ref_time(55_056_000)
- .saturating_add(T::DbWeight::get().reads(9 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn add_basic_resource() -> Weight {
- Weight::from_ref_time(61_673_000)
- .saturating_add(T::DbWeight::get().reads(10 as u64))
- .saturating_add(T::DbWeight::get().writes(2 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
- fn add_composable_resource() -> Weight {
- Weight::from_ref_time(67_125_000)
- .saturating_add(T::DbWeight::get().reads(11 as u64))
- .saturating_add(T::DbWeight::get().writes(3 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn add_slot_resource() -> Weight {
- Weight::from_ref_time(69_058_000)
- .saturating_add(T::DbWeight::get().reads(10 as u64))
- .saturating_add(T::DbWeight::get().writes(2 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:5 w:0)
- fn remove_resource() -> Weight {
- Weight::from_ref_time(53_427_000)
- .saturating_add(T::DbWeight::get().reads(9 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn accept_resource() -> Weight {
- Weight::from_ref_time(50_623_000)
- .saturating_add(T::DbWeight::get().reads(9 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn accept_resource_removal() -> Weight {
- Weight::from_ref_time(50_917_000)
- .saturating_add(T::DbWeight::get().reads(9 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
-}
-
-// 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: RmrkCore CollectionIndex (r:1 w:1)
- // Storage: Common CollectionPropertyPermissions (r:0 w:1)
- // Storage: Common CollectionProperties (r:0 w:1)
- // Storage: Common CollectionById (r:0 w:1)
- // Storage: RmrkCore UniqueCollectionId (r:0 w:1)
- fn create_collection() -> Weight {
- Weight::from_ref_time(49_754_000)
- .saturating_add(RocksDbWeight::get().reads(5 as u64))
- .saturating_add(RocksDbWeight::get().writes(8 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:1)
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Nonfungible TokenData (r:1 w:0)
- // Storage: Common DestroyedCollectionCount (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:0 w:1)
- // Storage: Nonfungible TokensBurnt (r:0 w:1)
- // Storage: Common AdminAmount (r:0 w:1)
- fn destroy_collection() -> Weight {
- Weight::from_ref_time(48_588_000)
- .saturating_add(RocksDbWeight::get().reads(5 as u64))
- .saturating_add(RocksDbWeight::get().writes(6 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Common CollectionProperties (r:1 w:0)
- fn change_collection_issuer() -> Weight {
- Weight::from_ref_time(25_054_000)
- .saturating_add(RocksDbWeight::get().reads(3 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:1 w:0)
- // Storage: Nonfungible TokensBurnt (r:1 w:0)
- fn lock_collection() -> Weight {
- Weight::from_ref_time(26_483_000)
- .saturating_add(RocksDbWeight::get().reads(5 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokensMinted (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
- fn mint_nft(b: u32, ) -> Weight {
- Weight::from_ref_time(62_419_000)
- // Standard Error: 7_000
- .saturating_add(Weight::from_ref_time(12_325_000).saturating_mul(b as u64))
- .saturating_add(RocksDbWeight::get().reads(6 as u64))
- .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64)))
- .saturating_add(RocksDbWeight::get().writes(5 as u64))
- .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(b as u64)))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:1 w:1)
- // Storage: Nonfungible TokenChildren (r:1 w:0)
- // Storage: Nonfungible TokensBurnt (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible Allowance (r:1 w:0)
- // Storage: Nonfungible Owned (r:0 w:1)
- // Storage: Nonfungible TokenProperties (r:0 w:1)
- fn burn_nft(b: u32, ) -> Weight {
- (Weight::from_ref_time(0))
- // Standard Error: 1_488_000
- .saturating_add(Weight::from_ref_time(298_367_000).saturating_mul(b as u64))
- .saturating_add(RocksDbWeight::get().reads(9 as u64))
- .saturating_add(RocksDbWeight::get().reads((4 as u64).saturating_mul(b as u64)))
- .saturating_add(RocksDbWeight::get().writes(6 as u64))
- .saturating_add(RocksDbWeight::get().writes((4 as u64).saturating_mul(b as u64)))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:0)
- // Storage: Nonfungible AccountBalance (r:2 w:2)
- // Storage: Nonfungible Allowance (r:1 w:0)
- // Storage: Nonfungible TokenChildren (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:2)
- fn send() -> Weight {
- Weight::from_ref_time(81_942_000)
- .saturating_add(RocksDbWeight::get().reads(12 as u64))
- .saturating_add(RocksDbWeight::get().writes(6 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:2 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:2 w:0)
- // Storage: Nonfungible TokenData (r:6 w:1)
- // Storage: Nonfungible AccountBalance (r:2 w:2)
- // Storage: Nonfungible Allowance (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- // Storage: Nonfungible TokenChildren (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:2)
- fn accept_nft() -> Weight {
- Weight::from_ref_time(97_925_000)
- .saturating_add(RocksDbWeight::get().reads(16 as u64))
- .saturating_add(RocksDbWeight::get().writes(8 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:5)
- // Storage: Nonfungible TokenProperties (r:1 w:5)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- // Storage: Nonfungible TokenChildren (r:9 w:4)
- // Storage: Nonfungible TokensBurnt (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:5 w:5)
- // Storage: Nonfungible Allowance (r:5 w:0)
- // Storage: Nonfungible Owned (r:0 w:5)
- fn reject_nft() -> Weight {
- Weight::from_ref_time(277_794_000)
- .saturating_add(RocksDbWeight::get().reads(30 as u64))
- .saturating_add(RocksDbWeight::get().writes(26 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:5 w:0)
- fn set_property() -> Weight {
- Weight::from_ref_time(54_657_000)
- .saturating_add(RocksDbWeight::get().reads(9 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:5 w:0)
- fn set_priority() -> Weight {
- Weight::from_ref_time(55_056_000)
- .saturating_add(RocksDbWeight::get().reads(9 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn add_basic_resource() -> Weight {
- Weight::from_ref_time(61_673_000)
- .saturating_add(RocksDbWeight::get().reads(10 as u64))
- .saturating_add(RocksDbWeight::get().writes(2 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
- fn add_composable_resource() -> Weight {
- Weight::from_ref_time(67_125_000)
- .saturating_add(RocksDbWeight::get().reads(11 as u64))
- .saturating_add(RocksDbWeight::get().writes(3 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn add_slot_resource() -> Weight {
- Weight::from_ref_time(69_058_000)
- .saturating_add(RocksDbWeight::get().reads(10 as u64))
- .saturating_add(RocksDbWeight::get().writes(2 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:5 w:0)
- fn remove_resource() -> Weight {
- Weight::from_ref_time(53_427_000)
- .saturating_add(RocksDbWeight::get().reads(9 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn accept_resource() -> Weight {
- Weight::from_ref_time(50_623_000)
- .saturating_add(RocksDbWeight::get().reads(9 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: Nonfungible TokenData (r:5 w:0)
- // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
- fn accept_resource_removal() -> Weight {
- Weight::from_ref_time(50_917_000)
- .saturating_add(RocksDbWeight::get().reads(9 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
-}
pallets/proxy-rmrk-equip/CHANGELOG.mddiffbeforeafterboth--- a/pallets/proxy-rmrk-equip/CHANGELOG.md
+++ /dev/null
@@ -1,17 +0,0 @@
-<!-- bureaucrate goes here -->
-## [v0.1.2] 2022-08-16
-
-### Other changes
-
-- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
-
-- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
-
-- refactor: Remove `#[transactional]` from extrinsics 7fd36cea2f6e00c02c67ccc1de9649ae404efd31
-
-Every extrinsic now runs in transaction implicitly, and
-`#[transactional]` on pallet dispatchable is now meaningless
-
-Upstream-Change: https://github.com/paritytech/substrate/issues/10806
-
-- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
\ No newline at end of file
pallets/proxy-rmrk-equip/Cargo.tomldiffbeforeafterboth--- a/pallets/proxy-rmrk-equip/Cargo.toml
+++ /dev/null
@@ -1,39 +0,0 @@
-[package]
-edition = "2021"
-license = "GPLv3"
-name = "pallet-rmrk-equip"
-version = "0.1.2"
-
-[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
-scale-info = { workspace = true }
-
-frame-benchmarking = {workspace = true, optional = true }
-frame-support = { workspace = true }
-frame-system = { workspace = true }
-pallet-common = { workspace = true }
-pallet-evm = { workspace = true }
-pallet-nonfungible = { workspace = true }
-pallet-proxy-rmrk-core = { workspace = true }
-sp-runtime = { workspace = true }
-sp-std = { workspace = true }
-up-data-structs = { workspace = true }
-
-[features]
-default = ["std"]
-runtime-benchmarks = ['frame-benchmarking', 'frame-support/runtime-benchmarks', 'frame-system/runtime-benchmarks']
-std = [
- "frame-support/std",
- "frame-system/std",
- "pallet-common/std",
- "pallet-evm/std",
- "pallet-nonfungible/std",
- "pallet-proxy-rmrk-core/std",
- "sp-runtime/std",
- "sp-std/std",
- "up-data-structs/std",
- 'frame-benchmarking/std',
-]
-try-runtime = ["frame-support/try-runtime"]
pallets/proxy-rmrk-equip/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-equip/src/benchmarking.rs
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-use sp_std::vec;
-
-use frame_benchmarking::{benchmarks, account};
-use frame_system::RawOrigin;
-use frame_support::{
- traits::{Currency, Get},
- BoundedVec,
-};
-
-use up_data_structs::*;
-
-use super::*;
-
-const SEED: u32 = 1;
-
-fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {
- vec![b'A'; S::get() as usize].try_into().expect("size == S")
-}
-
-fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {
- vec![0; S::get() as usize].try_into().expect("size == S")
-}
-
-fn create_max_part(id: RmrkSlotId) -> RmrkPartType {
- RmrkPartType::SlotPart(RmrkSlotPart {
- id,
- equippable: RmrkEquippableList::Custom(create_u32_array()),
- src: create_data(),
- z: 1,
- })
-}
-
-fn create_parts_array<S: Get<u32>>(num: u32) -> BoundedVec<RmrkPartType, S> {
- let mut parts: BoundedVec<RmrkPartType, S> = vec![].try_into().expect("0 <= S");
-
- for i in 0..num {
- parts.try_push(create_max_part(i)).expect("num <= S");
- }
-
- parts
-}
-
-fn create_max_theme_property() -> RmrkThemeProperty {
- RmrkThemeProperty {
- key: create_data(),
- value: create_data(),
- }
-}
-
-fn create_theme_properties_array<S: Get<u32>>(num: u32) -> BoundedVec<RmrkThemeProperty, S> {
- vec![create_max_theme_property(); num as usize]
- .try_into()
- .expect("num <= S")
-}
-
-fn create_max_theme(name: RmrkString, props_num: u32) -> RmrkBoundedTheme {
- RmrkBoundedTheme {
- name,
- properties: create_theme_properties_array(props_num),
- inherit: false,
- }
-}
-
-benchmarks! {
- create_base {
- let b in 0..RmrkPartsLimit::get();
-
- let caller = account("caller", 0, SEED);
- <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
-
- let base_type = create_data();
- let symbol = create_data();
- let parts = create_parts_array(b);
- }: _(RawOrigin::Signed(caller), base_type, symbol, parts)
-
- theme_add {
- let b in 0..MaxPropertiesPerTheme::get();
-
- let caller = account("caller", 0, SEED);
- <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
-
- let base_type = create_data();
- let symbol = create_data();
- let parts = create_parts_array(0);
-
- <Pallet<T>>::create_base(RawOrigin::Signed(caller.clone()).into(), base_type, symbol, parts)?;
- let base_id = 1;
-
-
- let default_theme_name = b"default".to_vec().try_into().expect("default is a valid name; qed");
- let default_theme = create_max_theme(default_theme_name, 0);
-
- <Pallet<T>>::theme_add(RawOrigin::Signed(caller.clone()).into(), base_id, default_theme)?;
-
- let theme = create_max_theme(create_data(), b);
- }: _(RawOrigin::Signed(caller), base_id, theme)
-
- equippable {
- let caller = account("caller", 0, SEED);
- <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
-
- let base_id = 1;
- let slot_id = 42;
-
- let base_type = create_data();
- let symbol = create_data();
- let parts = vec! {
- RmrkPartType::SlotPart(RmrkSlotPart {
- id: slot_id,
- equippable: RmrkEquippableList::All,
- src: create_data(),
- z: 1,
- })
- }.try_into().expect("1 <= RmrkPartsLimit");
-
- <Pallet<T>>::create_base(RawOrigin::Signed(caller.clone()).into(), base_type, symbol, parts)?;
-
- let equippables = RmrkEquippableList::Custom(create_u32_array());
- }: _(RawOrigin::Signed(caller), base_id, slot_id, equippables)
-}
pallets/proxy-rmrk-equip/src/lib.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-equip/src/lib.rs
+++ /dev/null
@@ -1,508 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-//! # RMRK Core Proxy Pallet
-//!
-//! A pallet used as proxy for RMRK Core (<https://rmrk-team.github.io/rmrk-substrate/#/pallets/rmrk-core>).
-//!
-//! - [`Config`]
-//! - [`Call`]
-//! - [`Pallet`]
-//!
-//! ## Overview
-//!
-//! The RMRK Equip Proxy pallet mirrors the functionality of RMRK Equip,
-//! binding its externalities to Unique's own underlying structure.
-//! It is purposed to mimic RMRK Equip exactly, allowing seamless integrations
-//! of solutions based on RMRK.
-//!
-//! RMRK Equip itself contains functionality to equip NFTs, and work with Bases,
-//! Parts, and Themes. See [Proxy Implementation](#proxy-implementation) for details.
-//!
-//! Equip Proxy is responsible for a more specific area of RMRK, and heavily relies on the Core.
-//! For a more foundational description of proxy implementation, please refer to [`pallet_rmrk_core`].
-//!
-//! *Note*, that while RMRK itself is subject to active development and restructuring,
-//! the proxy may be caught temporarily out of date.
-//!
-//! ### What is RMRK?
-//!
-//! RMRK is a set of NFT standards which compose several "NFT 2.0 lego" primitives.
-//! Putting these legos together allows a user to create NFT systems of arbitrary complexity.
-//!
-//! Meaning, RMRK NFTs are dynamic, able to nest into each other and form a hierarchy,
-//! make use of specific changeable and partially shared metadata in the form of resources,
-//! and more.
-//!
-//! Visit RMRK documentation and repositories to learn more:
-//! - Docs: <https://docs.rmrk.app/getting-started/>
-//! - FAQ: <https://coda.io/@rmrk/faq>
-//! - Substrate code repository: <https://github.com/rmrk-team/rmrk-substrate>
-//! - RMRK spec repository: <https://github.com/rmrk-team/rmrk-spec>
-//!
-//! ## Terminology
-//!
-//! For more information on RMRK, see RMRK's own documentation.
-//!
-//! ### Intro to RMRK
-//!
-//! - **Resource:** Additional piece of metadata of an NFT usually serving to add
-//! a piece of media on top of the root metadata (NFT's own), be it a different wing
-//! on the root template bird or something entirely unrelated.
-//!
-//! - **Base:** A list of possible "components" - Parts, a combination of which can
-//! be appended/equipped to/on an NFT.
-//!
-//! - **Part:** Something that, together with other Parts, can constitute an NFT.
-//! Parts are defined in the Base to which they belong. Parts can be either
-//! of the `slot` type or `fixed` type. Slots are intended for equippables.
-//! Note that "part of something" and "Part of a Base" can be easily confused,
-//! and so in this documentation these words are distinguished by the capital letter.
-//!
-//! - **Theme:** Named objects of variable => value pairs which get interpolated into
-//! the Base's `themable` Parts. Themes can hold any value, but are often represented
-//! in RMRK's examples as colors applied to visible Parts.
-//!
-//! ### Peculiarities in Unique
-//!
-//! - **Scoped properties:** Properties that are normally obscured from users.
-//! Their purpose is to contain structured metadata that was not included in the Unique standard
-//! for collections and tokens, meant to be operated on by proxies and other outliers.
-//! Scoped property keys are prefixed with `some-scope:`, where `some-scope` is
-//! an arbitrary keyword, like "rmrk". `:` is considered an unacceptable symbol in user-defined
-//! properties, which, along with other safeguards, makes scoped ones impossible to tamper with.
-//!
-//! - **Auxiliary properties:** A slightly different structure of properties,
-//! trading universality of use for more convenient storage, writes and access.
-//! Meant to be inaccessible to end users.
-//!
-//! ## Proxy Implementation
-//!
-//! An external user is supposed to be able to utilize this proxy as they would
-//! utilize RMRK, and get exactly the same results. Normally, Unique transactions
-//! are off-limits to RMRK collections and tokens, and vice versa. However,
-//! the information stored on chain can be freely interpreted by storage reads and Unique RPCs.
-//!
-//! ### ID Mapping
-//!
-//! RMRK's collections' IDs are counted independently of Unique's and start at 0.
-//! Note that tokens' IDs still start at 1.
-//! The collections themselves, as well as tokens, are stored as Unique collections,
-//! and thus RMRK IDs are mapped to Unique IDs (but not vice versa).
-//!
-//! ### External/Internal Collection Insulation
-//!
-//! A Unique transaction cannot target collections purposed for RMRK,
-//! and they are flagged as `external` to specify that. On the other hand,
-//! due to the mapping, RMRK transactions and RPCs simply cannot reach Unique collections.
-//!
-//! ### Native Properties
-//!
-//! Many of RMRK's native parameters are stored as scoped properties of a collection
-//! or an NFT on the chain. Scoped properties are prefixed with `rmrk:`, where `:`
-//! is an unacceptable symbol in user-defined properties, which, along with other safeguards,
-//! makes them impossible to tamper with.
-//!
-//! ### Collection and NFT Types, or Base, Parts and Themes Handling
-//!
-//! RMRK introduces the concept of a Base, which is a catalogue of Parts,
-//! possible components of an NFT. Due to its similarity with the functionality
-//! of a token collection, a Base is stored and handled as one, and the Base's Parts and Themes
-//! are this collection's NFTs. See [`CollectionType`] and [`NftType`].
-//!
-//! ## Interface
-//!
-//! ### Dispatchables
-//!
-//! - `create_base` - Create a new Base.
-//! - `theme_add` - Add a Theme to a Base.
-//! - `equippable` - Update the array of Collections allowed to be equipped to a Base's specified Slot Part.
-
-#![cfg_attr(not(feature = "std"), no_std)]
-
-use frame_support::{pallet_prelude::*, BoundedVec, dispatch::DispatchResult};
-use frame_system::{pallet_prelude::*, ensure_signed};
-use sp_runtime::DispatchError;
-use up_data_structs::*;
-use pallet_common::{Pallet as PalletCommon, Error as CommonError};
-use pallet_proxy_rmrk_core::{
- Pallet as PalletCore, Error as CoreError,
- misc::{self, *},
- property::RmrkProperty::*,
-};
-use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle};
-use pallet_evm::account::CrossAccountId;
-use weights::WeightInfo;
-
-pub use pallet::*;
-
-#[cfg(feature = "runtime-benchmarks")]
-pub mod benchmarking;
-pub mod rpc;
-pub mod weights;
-
-pub type SelfWeightOf<T> = <T as Config>::WeightInfo;
-
-#[frame_support::pallet]
-pub mod pallet {
- use super::*;
-
- #[pallet::config]
- pub trait Config: frame_system::Config + pallet_proxy_rmrk_core::Config {
- /// Overarching event type.
- type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
-
- /// The weight information of this pallet.
- type WeightInfo: WeightInfo;
- }
-
- /// Map of a Base ID and a Part ID to an NFT in the Base collection serving as the Part.
- #[pallet::storage]
- #[pallet::getter(fn internal_part_id)]
- pub type InernalPartId<T: Config> =
- StorageDoubleMap<_, Twox64Concat, CollectionId, Twox64Concat, RmrkPartId, TokenId>;
-
- /// Checkmark that a Base has a Theme NFT named "default".
- #[pallet::storage]
- #[pallet::getter(fn base_has_default_theme)]
- pub type BaseHasDefaultTheme<T: Config> =
- StorageMap<_, Twox64Concat, CollectionId, bool, ValueQuery>;
-
- #[pallet::pallet]
- #[pallet::generate_store(pub(super) trait Store)]
- pub struct Pallet<T>(_);
-
- #[pallet::event]
- #[pallet::generate_deposit(pub(super) fn deposit_event)]
- pub enum Event<T: Config> {
- BaseCreated {
- issuer: T::AccountId,
- base_id: RmrkBaseId,
- },
- EquippablesUpdated {
- base_id: RmrkBaseId,
- slot_id: RmrkSlotId,
- },
- }
-
- #[pallet::error]
- pub enum Error<T> {
- /// No permission to perform action.
- PermissionError,
- /// Could not find an ID for a Base collection. It is likely there were too many collections created on the chain, causing an overflow.
- NoAvailableBaseId,
- /// Could not find a suitable ID for a Part, likely too many Part tokens were created in the Base, causing an overflow
- NoAvailablePartId,
- /// Base collection linked to this ID does not exist.
- BaseDoesntExist,
- /// No Theme named "default" is associated with the Base.
- NeedsDefaultThemeFirst,
- /// Part linked to this ID does not exist.
- PartDoesntExist,
- /// Cannot assign equippables to a fixed Part.
- NoEquippableOnFixedPart,
- }
-
- #[pallet::call]
- impl<T: Config> Pallet<T> {
- /// Create a new Base.
- ///
- /// Modeled after the [Base interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/base.md)
- ///
- /// # Permissions
- /// - Anyone - will be assigned as the issuer of the Base.
- ///
- /// # Arguments:
- /// - `origin`: Caller, will be assigned as the issuer of the Base
- /// - `base_type`: Arbitrary media type, e.g. "svg".
- /// - `symbol`: Arbitrary client-chosen symbol.
- /// - `parts`: Array of Fixed and Slot Parts composing the Base,
- /// confined in length by [`RmrkPartsLimit`](up_data_structs::RmrkPartsLimit).
- #[pallet::call_index(0)]
- #[pallet::weight(<SelfWeightOf<T>>::create_base(parts.len() as u32))]
- pub fn create_base(
- origin: OriginFor<T>,
- base_type: RmrkString,
- symbol: RmrkBaseSymbol,
- parts: BoundedVec<RmrkPartType, RmrkPartsLimit>,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
- let cross_sender = T::CrossAccountId::from_sub(sender.clone());
-
- let data = CreateCollectionData {
- limits: None,
- token_prefix: symbol
- .into_inner()
- .try_into()
- .map_err(|_| <CommonError<T>>::CollectionTokenPrefixLimitExceeded)?,
- ..Default::default()
- };
-
- let collection_id_res = <PalletNft<T>>::init_collection(
- cross_sender.clone(),
- cross_sender.clone(),
- data,
- up_data_structs::CollectionFlags {
- external: true,
- ..Default::default()
- },
- );
-
- if let Err(DispatchError::Arithmetic(_)) = &collection_id_res {
- return Err(<Error<T>>::NoAvailableBaseId.into());
- }
-
- let collection_id = collection_id_res?;
-
- <PalletCommon<T>>::set_scoped_collection_properties(
- collection_id,
- PropertyScope::Rmrk,
- [
- <PalletCore<T>>::encode_rmrk_property(
- CollectionType,
- &misc::CollectionType::Base,
- )?,
- <PalletCore<T>>::encode_rmrk_property(BaseType, &base_type)?,
- ]
- .into_iter(),
- )?;
-
- let collection = <PalletCore<T>>::get_nft_collection(collection_id)?;
-
- for part in parts {
- Self::create_part(&cross_sender, &collection, part)?;
- }
-
- Self::deposit_event(Event::BaseCreated {
- issuer: sender,
- base_id: collection_id.0,
- });
-
- Ok(())
- }
-
- /// Add a Theme to a Base.
- /// A Theme named "default" is required prior to adding other Themes.
- ///
- /// Modeled after [Themeadd interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/themeadd.md).
- ///
- /// # Permissions:
- /// - Base issuer
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `base_id`: Base ID containing the Theme to be updated.
- /// - `theme`: Theme to add to the Base. A Theme has a name and properties, which are an
- /// array of [key, value, inherit].
- /// - `key`: Arbitrary BoundedString, defined by client.
- /// - `value`: Arbitrary BoundedString, defined by client.
- /// - `inherit`: Optional bool.
- #[pallet::call_index(1)]
- #[pallet::weight(<SelfWeightOf<T>>::theme_add(theme.properties.len() as u32))]
- pub fn theme_add(
- origin: OriginFor<T>,
- base_id: RmrkBaseId,
- theme: RmrkBoundedTheme,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
-
- let sender = T::CrossAccountId::from_sub(sender);
- let owner = &sender;
-
- let collection_id: CollectionId = base_id.into();
-
- let collection = Self::get_base(collection_id)?;
-
- if theme.name.as_slice() == b"default" {
- <BaseHasDefaultTheme<T>>::insert(collection_id, true);
- } else if !Self::base_has_default_theme(collection_id) {
- return Err(<Error<T>>::NeedsDefaultThemeFirst.into());
- }
-
- let token_id = <PalletCore<T>>::create_nft(
- &sender,
- owner,
- &collection,
- [
- <PalletCore<T>>::encode_rmrk_property(TokenType, &NftType::Theme)?,
- <PalletCore<T>>::encode_rmrk_property(ThemeName, &theme.name)?,
- <PalletCore<T>>::encode_rmrk_property(ThemeInherit, &theme.inherit)?,
- ]
- .into_iter(),
- )
- .map_err(|_| <Error<T>>::PermissionError)?;
-
- for property in theme.properties {
- <PalletNft<T>>::set_scoped_token_property(
- collection_id,
- token_id,
- PropertyScope::Rmrk,
- <PalletCore<T>>::encode_rmrk_property(
- UserProperty(property.key.as_slice()),
- &property.value,
- )?,
- )?;
- }
-
- Ok(())
- }
-
- /// Update the array of Collections allowed to be equipped to a Base's specified Slot Part.
- ///
- /// Modeled after [equippable interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/equippable.md).
- ///
- /// # Permissions:
- /// - Base issuer
- ///
- /// # Arguments:
- /// - `origin`: sender of the transaction
- /// - `base_id`: Base containing the Slot Part to be updated.
- /// - `slot_id`: Slot Part whose Equippable List is being updated .
- /// - `equippables`: List of equippables that will override the current Equippables list.
- #[pallet::call_index(2)]
- #[pallet::weight(<SelfWeightOf<T>>::equippable())]
- pub fn equippable(
- origin: OriginFor<T>,
- base_id: RmrkBaseId,
- slot_id: RmrkSlotId,
- equippables: RmrkEquippableList,
- ) -> DispatchResult {
- let sender = ensure_signed(origin)?;
-
- let base_collection_id = base_id.into();
- let collection = Self::get_base(base_collection_id)?;
-
- <PalletCore<T>>::check_collection_owner(
- &collection,
- &T::CrossAccountId::from_sub(sender),
- )
- .map_err(|err| {
- if err == <CoreError<T>>::NoPermission.into() {
- <Error<T>>::PermissionError.into()
- } else {
- err
- }
- })?;
-
- let part_id = Self::internal_part_id(base_collection_id, slot_id)
- .ok_or(<Error<T>>::PartDoesntExist)?;
-
- let nft_type = <PalletCore<T>>::get_nft_type(base_collection_id, part_id)
- .map_err(|_| <Error<T>>::PartDoesntExist)?;
-
- match nft_type {
- NftType::Regular | NftType::Theme => return Err(<Error<T>>::PermissionError.into()),
- NftType::FixedPart => return Err(<Error<T>>::NoEquippableOnFixedPart.into()),
- NftType::SlotPart => {
- <PalletNft<T>>::set_scoped_token_property(
- base_collection_id,
- part_id,
- PropertyScope::Rmrk,
- <PalletCore<T>>::encode_rmrk_property(EquippableList, &equippables)?,
- )?;
- }
- }
-
- Self::deposit_event(Event::EquippablesUpdated { base_id, slot_id });
-
- Ok(())
- }
- }
-}
-
-impl<T: Config> Pallet<T> {
- /// Create (or overwrite) a Part in a Base.
- /// The Part and the Base are represented as an NFT and a Collection.
- fn create_part(
- sender: &T::CrossAccountId,
- collection: &NonfungibleHandle<T>,
- part: RmrkPartType,
- ) -> DispatchResult {
- let owner = sender;
-
- let part_id = part.id();
- let src = part.src();
- let z_index = part.z_index();
-
- let nft_type = match part {
- RmrkPartType::FixedPart(_) => NftType::FixedPart,
- RmrkPartType::SlotPart(_) => NftType::SlotPart,
- };
-
- let token_id = match Self::internal_part_id(collection.id, part_id) {
- Some(token_id) => token_id,
- None => {
- let token_id =
- <PalletCore<T>>::create_nft(sender, owner, collection, [].into_iter())
- .map_err(|err| match err {
- DispatchError::Arithmetic(_) => <Error<T>>::NoAvailablePartId.into(),
- err => err,
- })?;
-
- <InernalPartId<T>>::insert(collection.id, part_id, token_id);
-
- <PalletNft<T>>::set_scoped_token_property(
- collection.id,
- token_id,
- PropertyScope::Rmrk,
- <PalletCore<T>>::encode_rmrk_property(ExternalPartId, &part_id)?,
- )?;
-
- token_id
- }
- };
-
- <PalletNft<T>>::set_scoped_token_properties(
- collection.id,
- token_id,
- PropertyScope::Rmrk,
- [
- <PalletCore<T>>::encode_rmrk_property(TokenType, &nft_type)?,
- <PalletCore<T>>::encode_rmrk_property(Src, &src)?,
- <PalletCore<T>>::encode_rmrk_property(ZIndex, &z_index)?,
- ]
- .into_iter(),
- )?;
-
- if let RmrkPartType::SlotPart(part) = part {
- <PalletNft<T>>::set_scoped_token_property(
- collection.id,
- token_id,
- PropertyScope::Rmrk,
- <PalletCore<T>>::encode_rmrk_property(EquippableList, &part.equippable)?,
- )?;
- }
-
- Ok(())
- }
-
- /// Ensure that the collection under the Base ID is a Base collection,
- /// and fetch it.
- fn get_base(base_id: CollectionId) -> Result<NonfungibleHandle<T>, DispatchError> {
- let collection =
- <PalletCore<T>>::get_typed_nft_collection(base_id, misc::CollectionType::Base)
- .map_err(|err| {
- if err == <CoreError<T>>::CollectionUnknown.into() {
- <Error<T>>::BaseDoesntExist.into()
- } else {
- err
- }
- })?;
- collection.check_is_external()?;
-
- Ok(collection)
- }
-}
pallets/proxy-rmrk-equip/src/rpc.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-equip/src/rpc.rs
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-//! Realizations of RMRK RPCs (remote procedure calls) related to the Equip pallet.
-
-use super::*;
-use pallet_proxy_rmrk_core::{misc, property::*};
-use sp_std::vec::Vec;
-
-/// Get base info by its ID.
-pub fn base<T: Config>(
- base_id: RmrkBaseId,
-) -> Result<Option<RmrkBaseInfo<T::AccountId>>, DispatchError> {
- let (collection, collection_id) =
- match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
- {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- Ok(Some(RmrkBaseInfo {
- issuer: collection.owner.clone(),
- base_type: <PalletCore<T>>::get_collection_property_decoded(
- collection_id,
- RmrkProperty::BaseType,
- )?,
- symbol: <PalletCore<T>>::rebind(&collection.token_prefix)?,
- }))
-}
-
-/// Get all parts of a base.
-pub fn base_parts<T: Config>(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) =
- match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
- {
- Ok(c) => c,
- Err(_) => return Ok(Vec::new()),
- };
-
- let parts = collection
- .collection_tokens()
- .into_iter()
- .filter_map(|token_id| {
- let nft_type = <PalletCore<T>>::get_nft_type(collection_id, token_id).ok()?;
-
- match nft_type {
- NftType::FixedPart => Some(RmrkPartType::FixedPart(RmrkFixedPart {
- id: <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::ExternalPartId,
- )
- .ok()?,
- src: <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::Src,
- )
- .ok()?,
- z: <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::ZIndex,
- )
- .ok()?,
- })),
- NftType::SlotPart => Some(RmrkPartType::SlotPart(RmrkSlotPart {
- id: <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::ExternalPartId,
- )
- .ok()?,
- src: <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::Src,
- )
- .ok()?,
- z: <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::ZIndex,
- )
- .ok()?,
- equippable: <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::EquippableList,
- )
- .ok()?,
- })),
- _ => None,
- }
- })
- .collect();
-
- Ok(parts)
-}
-
-/// Get the theme names belonging to a base.
-pub fn theme_names<T: Config>(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) =
- match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
- {
- Ok(c) => c,
- Err(_) => return Ok(Vec::new()),
- };
-
- let theme_names = collection
- .collection_tokens()
- .iter()
- .filter_map(|token_id| {
- let nft_type = <PalletCore<T>>::get_nft_type(collection_id, *token_id).ok()?;
-
- match nft_type {
- NftType::Theme => <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- *token_id,
- RmrkProperty::ThemeName,
- )
- .ok(),
- _ => None,
- }
- })
- .collect();
-
- Ok(theme_names)
-}
-
-/// Get theme info, including properties, optionally limited to the provided keys.
-pub fn theme<T: Config>(
- base_id: RmrkBaseId,
- theme_name: RmrkThemeName,
- filter_keys: Option<Vec<RmrkPropertyKey>>,
-) -> Result<Option<RmrkTheme>, DispatchError> {
- use pallet_common::CommonCollectionOperations;
-
- let (collection, collection_id) =
- match <PalletCore<T>>::get_typed_nft_collection_mapped(base_id, misc::CollectionType::Base)
- {
- Ok(c) => c,
- Err(_) => return Ok(None),
- };
-
- let theme_info = collection
- .collection_tokens()
- .into_iter()
- .find_map(|token_id| {
- <PalletCore<T>>::ensure_nft_type(collection_id, token_id, NftType::Theme).ok()?;
-
- let name: RmrkString = <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- token_id,
- RmrkProperty::ThemeName,
- )
- .ok()?;
-
- if name == theme_name {
- Some((name, token_id))
- } else {
- None
- }
- });
-
- let (name, theme_id) = match theme_info {
- Some((name, theme_id)) => (name, theme_id),
- None => return Ok(None),
- };
-
- let properties = <PalletCore<T>>::filter_user_properties(
- collection_id,
- Some(theme_id),
- filter_keys,
- |key, value| RmrkThemeProperty { key, value },
- )?;
-
- let inherit = <PalletCore<T>>::get_nft_property_decoded(
- collection_id,
- theme_id,
- RmrkProperty::ThemeInherit,
- )?;
-
- let theme = RmrkTheme {
- name,
- properties,
- inherit,
- };
-
- Ok(Some(theme))
-}
pallets/proxy-rmrk-equip/src/weights.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-equip/src/weights.rs
+++ /dev/null
@@ -1,138 +0,0 @@
-// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
-
-//! Autogenerated weights for pallet_proxy_rmrk_equip
-//!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-08-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
-
-// Executed Command:
-// target/release/unique-collator
-// benchmark
-// pallet
-// --pallet
-// pallet-proxy-rmrk-equip
-// --wasm-execution
-// compiled
-// --extrinsic
-// *
-// --template
-// .maintain/frame-weight-template.hbs
-// --steps=50
-// --repeat=80
-// --heap-pages=4096
-// --output=./pallets/proxy-rmrk-equip/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_proxy_rmrk_equip.
-pub trait WeightInfo {
- fn create_base(b: u32, ) -> Weight;
- fn theme_add(b: u32, ) -> Weight;
- fn equippable() -> Weight;
-}
-
-/// Weights for pallet_proxy_rmrk_equip 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 CollectionPropertyPermissions (r:0 w:1)
- // Storage: Common CollectionProperties (r:0 w:1)
- // Storage: Common CollectionById (r:0 w:1)
- // Storage: RmrkEquip InernalPartId (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:1)
- fn create_base(b: u32, ) -> Weight {
- Weight::from_ref_time(58_417_000)
- // Standard Error: 27_000
- .saturating_add(Weight::from_ref_time(20_439_000).saturating_mul(b as u64))
- .saturating_add(T::DbWeight::get().reads(6 as u64))
- .saturating_add(T::DbWeight::get().reads((2 as u64).saturating_mul(b as u64)))
- .saturating_add(T::DbWeight::get().writes(8 as u64))
- .saturating_add(T::DbWeight::get().writes((4 as u64).saturating_mul(b as u64)))
- }
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: RmrkEquip BaseHasDefaultTheme (r:1 w:0)
- // Storage: Nonfungible TokensMinted (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:1)
- fn theme_add(b: u32, ) -> Weight {
- Weight::from_ref_time(46_005_000)
- // Standard Error: 42_000
- .saturating_add(Weight::from_ref_time(2_922_000).saturating_mul(b as u64))
- .saturating_add(T::DbWeight::get().reads(6 as u64))
- .saturating_add(T::DbWeight::get().writes(5 as u64))
- }
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: RmrkEquip InernalPartId (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- fn equippable() -> Weight {
- Weight::from_ref_time(32_526_000)
- .saturating_add(T::DbWeight::get().reads(4 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
-}
-
-// 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 CollectionPropertyPermissions (r:0 w:1)
- // Storage: Common CollectionProperties (r:0 w:1)
- // Storage: Common CollectionById (r:0 w:1)
- // Storage: RmrkEquip InernalPartId (r:1 w:1)
- // Storage: Nonfungible TokensMinted (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:1)
- fn create_base(b: u32, ) -> Weight {
- Weight::from_ref_time(58_417_000)
- // Standard Error: 27_000
- .saturating_add(Weight::from_ref_time(20_439_000).saturating_mul(b as u64))
- .saturating_add(RocksDbWeight::get().reads(6 as u64))
- .saturating_add(RocksDbWeight::get().reads((2 as u64).saturating_mul(b as u64)))
- .saturating_add(RocksDbWeight::get().writes(8 as u64))
- .saturating_add(RocksDbWeight::get().writes((4 as u64).saturating_mul(b as u64)))
- }
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: RmrkEquip BaseHasDefaultTheme (r:1 w:0)
- // Storage: Nonfungible TokensMinted (r:1 w:1)
- // Storage: Nonfungible AccountBalance (r:1 w:1)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- // Storage: Nonfungible TokenData (r:0 w:1)
- // Storage: Nonfungible Owned (r:0 w:1)
- fn theme_add(b: u32, ) -> Weight {
- Weight::from_ref_time(46_005_000)
- // Standard Error: 42_000
- .saturating_add(Weight::from_ref_time(2_922_000).saturating_mul(b as u64))
- .saturating_add(RocksDbWeight::get().reads(6 as u64))
- .saturating_add(RocksDbWeight::get().writes(5 as u64))
- }
- // Storage: Common CollectionProperties (r:1 w:0)
- // Storage: Common CollectionById (r:1 w:0)
- // Storage: RmrkEquip InernalPartId (r:1 w:0)
- // Storage: Nonfungible TokenProperties (r:1 w:1)
- fn equippable() -> Weight {
- Weight::from_ref_time(32_526_000)
- .saturating_add(RocksDbWeight::get().reads(4 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
-}
pallets/refungible/src/erc.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -48,8 +48,8 @@
};
use crate::{
- AccountBalance, Balance, Config, CreateItemData, Pallet, RefungibleHandle, SelfWeightOf,
- TokenProperties, TokensMinted, TotalSupply, weights::WeightInfo,
+ AccountBalance, Balance, Config, CreateItemData, Pallet, RefungibleHandle,
+ TokenProperties, TokensMinted, TotalSupply, SelfWeightOf, weights::WeightInfo,
};
frontier_contract! {
pallets/refungible/src/erc_token.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc_token.rs
+++ b/pallets/refungible/src/erc_token.rs
@@ -28,6 +28,7 @@
use pallet_common::{
erc::{CommonEvmHandler, PrecompileResult},
eth::{collection_id_to_address, CrossAddress},
+ CommonWeightInfo,
};
use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::{
@@ -39,7 +40,7 @@
use sp_core::U256;
use up_data_structs::TokenId;
-use crate::{Allowance, Balance, Config, Pallet, RefungibleHandle, TotalSupply};
+use crate::{Allowance, Balance, Config, Pallet, RefungibleHandle, TotalSupply, common::CommonWeights, SelfWeightOf, weights::WeightInfo};
/// Refungible token handle contains information about token's collection and id
///
primitives/data-structs/Cargo.tomldiffbeforeafterboth--- a/primitives/data-structs/Cargo.toml
+++ b/primitives/data-structs/Cargo.toml
@@ -15,7 +15,6 @@
derivative = { workspace = true }
frame-support = { workspace = true }
pallet-evm = { workspace = true }
-rmrk-traits = { workspace = true }
scale-info = { workspace = true }
serde = { workspace = true, optional = true }
sp-core = { workspace = true }
@@ -33,7 +32,6 @@
"codec/std",
"frame-support/std",
"pallet-evm/std",
- "rmrk-traits/std",
"serde/std",
"serde1",
"sp-core/std",
primitives/data-structs/src/lib.rsdiffbeforeafterboth--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -27,33 +27,18 @@
use frame_support::{
storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},
traits::Get,
- parameter_types,
};
#[cfg(feature = "serde")]
use serde::{Serialize, Deserialize};
use sp_core::U256;
-use sp_runtime::{ArithmeticError, sp_std::prelude::Vec, Permill};
+use sp_runtime::{ArithmeticError, sp_std::prelude::Vec};
use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
use bondrewd::Bitfields;
use frame_support::{BoundedVec, traits::ConstU32};
use derivative::Derivative;
use scale_info::TypeInfo;
-
-// RMRK
-use rmrk_traits::{
- CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,
- ResourceTypes, BasicResource, ComposableResource, SlotResource, EquippableList,
-};
-pub use rmrk_traits::{
- primitives::{
- CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,
- SlotId as RmrkSlotId, PartId as RmrkPartId, ResourceId as RmrkResourceId,
- },
- NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,
- FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart,
-};
mod bondrewd_codec;
mod bounded;
@@ -174,6 +159,12 @@
impl EncodeLike<u32> for CollectionId {}
impl EncodeLike<CollectionId> for u32 {}
+impl From<u32> for CollectionId {
+ fn from(value: u32) -> Self {
+ Self(value)
+ }
+}
+
/// Token id.
#[derive(
Encode,
@@ -1367,73 +1358,3 @@
Properties::new(MAX_TOKEN_PROPERTIES_SIZE)
}
}
-
-// RMRK
-// todo document?
-parameter_types! {
- #[derive(PartialEq, TypeInfo)]
- pub const RmrkStringLimit: u32 = 128;
- #[derive(PartialEq)]
- pub const RmrkCollectionSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
- #[derive(PartialEq)]
- pub const RmrkResourceSymbolLimit: u32 = 10;
- #[derive(PartialEq)]
- pub const RmrkBaseSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
- #[derive(PartialEq)]
- pub const RmrkKeyLimit: u32 = 32;
- #[derive(PartialEq)]
- pub const RmrkValueLimit: u32 = 256;
- #[derive(PartialEq)]
- pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;
- #[derive(PartialEq)]
- pub const MaxPropertiesPerTheme: u32 = 5;
- #[derive(PartialEq)]
- pub const RmrkPartsLimit: u32 = 25;
- #[derive(PartialEq)]
- pub const RmrkMaxPriorities: u32 = 25;
- #[derive(PartialEq)]
- pub const MaxResourcesOnMint: u32 = 100;
-}
-
-impl From<RmrkCollectionId> for CollectionId {
- fn from(id: RmrkCollectionId) -> Self {
- Self(id)
- }
-}
-
-impl From<RmrkNftId> for TokenId {
- fn from(id: RmrkNftId) -> Self {
- Self(id)
- }
-}
-
-pub type RmrkCollectionInfo<AccountId> =
- CollectionInfo<RmrkString, RmrkCollectionSymbol, AccountId>;
-pub type RmrkInstanceInfo<AccountId> = NftInfo<AccountId, Permill, RmrkString>;
-pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;
-pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;
-pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;
-pub type BoundedEquippableCollectionIds =
- BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>;
-pub type RmrkPartType = PartType<RmrkString, BoundedEquippableCollectionIds>;
-pub type RmrkEquippableList = EquippableList<BoundedEquippableCollectionIds>;
-pub type RmrkThemeProperty = ThemeProperty<RmrkString>;
-pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;
-pub type RmrkBoundedTheme = Theme<RmrkString, BoundedVec<RmrkThemeProperty, MaxPropertiesPerTheme>>;
-pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;
-
-pub type RmrkBasicResource = BasicResource<RmrkString>;
-pub type RmrkComposableResource = ComposableResource<RmrkString, RmrkBoundedParts>;
-pub type RmrkSlotResource = SlotResource<RmrkString>;
-
-pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;
-pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;
-pub type RmrkBaseSymbol = BoundedVec<u8, RmrkBaseSymbolLimit>;
-pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;
-pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;
-pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;
-pub type RmrkBoundedParts = BoundedVec<RmrkPartId, RmrkPartsLimit>; // todo make sure it is needed
-
-pub type RmrkRpcString = Vec<u8>;
-pub type RmrkThemeName = RmrkRpcString;
-pub type RmrkPropertyKey = RmrkRpcString;
primitives/rmrk-rpc/CHANGELOG.mddiffbeforeafterboth--- a/primitives/rmrk-rpc/CHANGELOG.md
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- bureaucrate goes here -->
-## [v0.0.2] 2022-08-16
-
-### Other changes
-
-- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
-
-- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
-
-- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
\ No newline at end of file
primitives/rmrk-rpc/Cargo.tomldiffbeforeafterboth--- a/primitives/rmrk-rpc/Cargo.toml
+++ /dev/null
@@ -1,16 +0,0 @@
-[package]
-edition = "2021"
-license = ""
-name = "rmrk-rpc"
-version = "0.0.2"
-
-[dependencies]
-codec = { workspace = true }
-rmrk-traits = { workspace = true }
-sp-api = { workspace = true }
-sp-runtime = { workspace = true }
-sp-std = { workspace = true }
-
-[features]
-default = ["std"]
-std = ["codec/std", "rmrk-traits/std", "sp-api/std", "sp-runtime/std", "sp-std/std"]
primitives/rmrk-rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rmrk-rpc/src/lib.rs
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-#![cfg_attr(not(feature = "std"), no_std)]
-
-use sp_api::{Encode, Decode};
-use sp_std::vec::Vec;
-use sp_runtime::DispatchError;
-use rmrk_traits::{primitives::*, NftChild};
-
-pub type Result<T> = core::result::Result<T, DispatchError>;
-
-pub type RpcString = Vec<u8>;
-
-pub type PropertyKey = RpcString;
-
-pub type ThemeName = RpcString;
-
-sp_api::decl_runtime_apis! {
- pub trait RmrkApi<
- AccountId,
- CollectionInfo,
- NftInfo,
- ResourceInfo,
- PropertyInfo,
- BaseInfo,
- PartType,
- Theme
- >
- where
- AccountId: Encode,
- CollectionInfo: Decode,
- NftInfo: Decode,
- ResourceInfo: Decode,
- PropertyInfo: Decode,
- BaseInfo: Decode,
- PartType: Decode,
- Theme: Decode,
- {
- fn last_collection_idx() -> Result<CollectionId>;
-
- fn collection_by_id(id: CollectionId) -> Result<Option<CollectionInfo>>;
-
- fn nft_by_id(collection_id: CollectionId, nft_id: NftId) -> Result<Option<NftInfo>>;
-
- fn account_tokens(account_id: AccountId, collection_id: CollectionId) -> Result<Vec<NftId>>;
-
- fn nft_children(collection_id: CollectionId, nft_id: NftId) -> Result<Vec<NftChild>>;
-
- fn collection_properties(collection_id: CollectionId, filter_keys: Option<Vec<PropertyKey>>) -> Result<Vec<PropertyInfo>>;
-
- fn nft_properties(collection_id: CollectionId, nft_id: NftId, filter_keys: Option<Vec<PropertyKey>>) -> Result<Vec<PropertyInfo>>;
-
- fn nft_resources(collection_id: CollectionId, nft_id: NftId) -> Result<Vec<ResourceInfo>>;
-
- fn nft_resource_priority(collection_id: CollectionId, nft_id: NftId, resource_id: ResourceId) -> Result<Option<u32>>;
-
- fn base(base_id: BaseId) -> Result<Option<BaseInfo>>;
-
- fn base_parts(base_id: BaseId) -> Result<Vec<PartType>>;
-
- fn theme_names(base_id: BaseId) -> Result<Vec<ThemeName>>;
-
- fn theme(base_id: BaseId, theme_name: ThemeName, filter_keys: Option<Vec<PropertyKey>>) -> Result<Option<Theme>>;
- }
-}
primitives/rmrk-traits/Cargo.tomldiffbeforeafterboth--- a/primitives/rmrk-traits/Cargo.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-[package]
-authors = ["RMRK Team", "Unique Network <support@uniquenetwork.io>"]
-description = "RMRK proxy data structs definitions"
-edition = "2021"
-homepage = "https://unique.network"
-license = 'GPLv3'
-name = "rmrk-traits"
-repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = "0.1.0"
-
-[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
-scale-info = { workspace = true }
-serde = { workspace = true, optional = true }
-
-[features]
-default = ["std"]
-serde1 = ["serde/alloc"]
-std = ["codec/std", "serde/std", "serde1"]
primitives/rmrk-traits/src/base.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/base.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use codec::{Decode, Encode, MaxEncodedLen};
-use scale_info::TypeInfo;
-
-#[cfg(feature = "std")]
-use serde::Serialize;
-
-#[cfg(feature = "std")]
-use crate::serialize;
-
-#[cfg_attr(feature = "std", derive(PartialEq, Eq, Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- AccountId: Serialize,
- BoundedString: AsRef<[u8]>
- "#)
-)]
-pub struct BaseInfo<AccountId, BoundedString> {
- /// Original creator of the Base
- pub issuer: AccountId,
-
- /// Specifies how an NFT should be rendered, ie "svg"
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub base_type: BoundedString,
-
- /// User provided symbol during Base creation
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub symbol: BoundedString,
-}
primitives/rmrk-traits/src/collection.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/collection.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use codec::{Decode, Encode, MaxEncodedLen};
-use scale_info::TypeInfo;
-
-#[cfg(feature = "std")]
-use serde::Serialize;
-
-#[cfg(feature = "std")]
-use crate::serialize;
-
-#[cfg_attr(feature = "std", derive(PartialEq, Eq, Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- AccountId: Serialize,
- BoundedString: AsRef<[u8]>,
- BoundedSymbol: AsRef<[u8]>
- "#)
-)]
-pub struct CollectionInfo<BoundedString, BoundedSymbol, AccountId> {
- /// Current bidder and bid price.
- pub issuer: AccountId,
-
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub metadata: BoundedString,
- pub max: Option<u32>,
-
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub symbol: BoundedSymbol,
- pub nfts_count: u32,
-}
primitives/rmrk-traits/src/lib.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/lib.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-#![cfg_attr(not(feature = "std"), no_std)]
-
-pub mod base;
-pub mod collection;
-pub mod nft;
-pub mod part;
-pub mod property;
-pub mod resource;
-pub mod theme;
-
-#[cfg(feature = "std")]
-mod serialize;
-
-pub use base::BaseInfo;
-pub use part::{EquippableList, FixedPart, PartType, SlotPart};
-pub use theme::{Theme, ThemeProperty};
-pub use collection::CollectionInfo;
-pub use nft::{AccountIdOrCollectionNftTuple, NftInfo, RoyaltyInfo, NftChild};
-pub use property::PropertyInfo;
-pub use resource::{BasicResource, ComposableResource, ResourceInfo, ResourceTypes, SlotResource};
-pub mod primitives {
- pub type CollectionId = u32;
- pub type ResourceId = u32;
- pub type NftId = u32;
- pub type BaseId = u32;
- pub type SlotId = u32;
- pub type PartId = u32;
- pub type ZIndex = u32;
-}
primitives/rmrk-traits/src/nft.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/nft.rs
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use codec::{Decode, Encode, MaxEncodedLen};
-use scale_info::TypeInfo;
-
-#[cfg(feature = "std")]
-use serde::Serialize;
-
-#[cfg(feature = "std")]
-use crate::serialize;
-
-use crate::primitives::*;
-
-#[derive(Encode, Decode, Eq, PartialEq, Copy, Clone, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "std", derive(Serialize))]
-pub enum AccountIdOrCollectionNftTuple<AccountId> {
- AccountId(AccountId),
- CollectionAndNftTuple(CollectionId, NftId),
-}
-
-/// Royalty information (recipient and amount)
-#[cfg_attr(feature = "std", derive(PartialEq, Eq, Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, MaxEncodedLen)]
-pub struct RoyaltyInfo<AccountId, RoyaltyAmount> {
- /// Recipient (AccountId) of the royalty
- pub recipient: AccountId,
- /// Amount (Permill) of the royalty
- pub amount: RoyaltyAmount,
-}
-
-/// Nft info.
-#[cfg_attr(feature = "std", derive(PartialEq, Eq, Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- AccountId: Serialize,
- RoyaltyAmount: Serialize,
- BoundedString: AsRef<[u8]>
- "#)
-)]
-pub struct NftInfo<AccountId, RoyaltyAmount, BoundedString> {
- /// The owner of the NFT, can be either an Account or a tuple (CollectionId, NftId)
- pub owner: AccountIdOrCollectionNftTuple<AccountId>,
- /// Royalty (optional)
- pub royalty: Option<RoyaltyInfo<AccountId, RoyaltyAmount>>,
-
- /// Arbitrary data about an instance, e.g. IPFS hash
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub metadata: BoundedString,
-
- /// Equipped state
- pub equipped: bool,
- /// Pending state (if sent to NFT)
- pub pending: bool,
-}
-
-#[cfg_attr(feature = "std", derive(PartialEq, Eq, Serialize))]
-#[derive(Encode, Decode, TypeInfo, MaxEncodedLen)]
-pub struct NftChild {
- pub collection_id: CollectionId,
- pub nft_id: NftId,
-}
primitives/rmrk-traits/src/part.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/part.rs
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use codec::{Decode, Encode, MaxEncodedLen};
-use scale_info::TypeInfo;
-
-#[cfg(feature = "std")]
-use serde::Serialize;
-
-#[cfg(feature = "std")]
-use crate::serialize;
-
-use crate::primitives::*;
-
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, Eq, MaxEncodedLen)]
-#[cfg_attr(feature = "std", serde(bound = "BoundedString: AsRef<[u8]>"))]
-pub struct FixedPart<BoundedString> {
- pub id: PartId,
- pub z: ZIndex,
-
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub src: BoundedString,
-}
-
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, Eq, MaxEncodedLen)]
-#[cfg_attr(
- feature = "std",
- serde(bound = "BoundedCollectionList: AsRef<[CollectionId]>")
-)]
-pub enum EquippableList<BoundedCollectionList> {
- All,
- Empty,
- Custom(#[cfg_attr(feature = "std", serde(with = "serialize::vec"))] BoundedCollectionList),
-}
-
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, Eq, MaxEncodedLen)]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- BoundedString: AsRef<[u8]>,
- BoundedCollectionList: AsRef<[CollectionId]>
- "#)
-)]
-pub struct SlotPart<BoundedString, BoundedCollectionList> {
- pub id: PartId,
- pub equippable: EquippableList<BoundedCollectionList>,
-
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub src: BoundedString,
-
- pub z: ZIndex,
-}
-
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, Eq, MaxEncodedLen)]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- BoundedString: AsRef<[u8]>,
- BoundedCollectionList: AsRef<[CollectionId]>
- "#)
-)]
-pub enum PartType<BoundedString, BoundedCollectionList> {
- FixedPart(FixedPart<BoundedString>),
- SlotPart(SlotPart<BoundedString, BoundedCollectionList>),
-}
-
-impl<BoundedString, BoundedCollectionList> PartType<BoundedString, BoundedCollectionList> {
- pub fn id(&self) -> PartId {
- match self {
- Self::FixedPart(part) => part.id,
- Self::SlotPart(part) => part.id,
- }
- }
-
- pub fn src(&self) -> &BoundedString {
- match self {
- Self::FixedPart(part) => &part.src,
- Self::SlotPart(part) => &part.src,
- }
- }
-
- pub fn z_index(&self) -> ZIndex {
- match self {
- Self::FixedPart(part) => part.z,
- Self::SlotPart(part) => part.z,
- }
- }
-}
primitives/rmrk-traits/src/property.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/property.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use codec::{Decode, Encode};
-use scale_info::TypeInfo;
-
-#[cfg(feature = "std")]
-use serde::Serialize;
-
-#[cfg(feature = "std")]
-use crate::serialize;
-
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[derive(Encode, Decode, PartialEq, TypeInfo)]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- BoundedKey: AsRef<[u8]>,
- BoundedValue: AsRef<[u8]>
- "#)
-)]
-pub struct PropertyInfo<BoundedKey, BoundedValue> {
- /// Key of the property
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub key: BoundedKey,
-
- /// Value of the property
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub value: BoundedValue,
-}
primitives/rmrk-traits/src/resource.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/resource.rs
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use codec::{Decode, Encode, MaxEncodedLen};
-use scale_info::TypeInfo;
-
-#[cfg(feature = "std")]
-use serde::Serialize;
-
-#[cfg(feature = "std")]
-use crate::serialize;
-
-use crate::primitives::*;
-
-#[derive(Encode, Decode, Eq, PartialEq, Clone, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[cfg_attr(feature = "std", serde(bound = "BoundedString: AsRef<[u8]>"))]
-pub struct BasicResource<BoundedString> {
- /// If the resource is Media, the base property is absent. Media src should be a URI like an
- /// IPFS hash.
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub src: Option<BoundedString>,
-
- /// Reference to IPFS location of metadata
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub metadata: Option<BoundedString>,
-
- /// Optional location or identier of license
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub license: Option<BoundedString>,
-
- /// If the resource has the thumb property, this will be a URI to a thumbnail of the given
- /// resource. For example, if we have a composable NFT like a Kanaria bird, the resource is
- /// complex and too detailed to show in a search-results page or a list. Also, if a bird owns
- /// another bird, showing the full render of one bird inside the other's inventory might be a
- /// bit of a strain on the browser. For this reason, the thumb value can contain a URI to an
- /// image that is lighter and faster to load but representative of this resource.
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub thumb: Option<BoundedString>,
-}
-
-#[derive(Encode, Decode, Eq, PartialEq, Clone, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- BoundedString: AsRef<[u8]>,
- BoundedParts: AsRef<[PartId]>
- "#)
-)]
-pub struct ComposableResource<BoundedString, BoundedParts> {
- /// If a resource is composed, it will have an array of parts that compose it
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub parts: BoundedParts,
-
- /// A Base is uniquely identified by the combination of the word `base`, its minting block
- /// number, and user provided symbol during Base creation, glued by dashes `-`, e.g.
- /// base-4477293-kanaria_superbird.
- pub base: BaseId,
-
- /// If the resource is Media, the base property is absent. Media src should be a URI like an
- /// IPFS hash.
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub src: Option<BoundedString>,
-
- /// Reference to IPFS location of metadata
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub metadata: Option<BoundedString>,
-
- /// If the resource has the slot property, it was designed to fit into a specific Base's slot.
- /// The baseslot will be composed of two dot-delimited values, like so:
- /// "base-4477293-kanaria_superbird.machine_gun_scope". This means: "This resource is
- /// compatible with the machine_gun_scope slot of base base-4477293-kanaria_superbird
-
- /// Optional location or identier of license
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub license: Option<BoundedString>,
-
- /// If the resource has the thumb property, this will be a URI to a thumbnail of the given
- /// resource. For example, if we have a composable NFT like a Kanaria bird, the resource is
- /// complex and too detailed to show in a search-results page or a list. Also, if a bird owns
- /// another bird, showing the full render of one bird inside the other's inventory might be a
- /// bit of a strain on the browser. For this reason, the thumb value can contain a URI to an
- /// image that is lighter and faster to load but representative of this resource.
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub thumb: Option<BoundedString>,
-}
-
-#[derive(Encode, Decode, Eq, PartialEq, Clone, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[cfg_attr(feature = "std", serde(bound = "BoundedString: AsRef<[u8]>"))]
-pub struct SlotResource<BoundedString> {
- /// A Base is uniquely identified by the combination of the word `base`, its minting block
- /// number, and user provided symbol during Base creation, glued by dashes `-`, e.g.
- /// base-4477293-kanaria_superbird.
- pub base: BaseId,
-
- /// If the resource is Media, the base property is absent. Media src should be a URI like an
- /// IPFS hash.
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub src: Option<BoundedString>,
-
- /// Reference to IPFS location of metadata
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub metadata: Option<BoundedString>,
-
- /// If the resource has the slot property, it was designed to fit into a specific Base's slot.
- /// The baseslot will be composed of two dot-delimited values, like so:
- /// "base-4477293-kanaria_superbird.machine_gun_scope". This means: "This resource is
- /// compatible with the machine_gun_scope slot of base base-4477293-kanaria_superbird
- pub slot: SlotId,
-
- /// The license field, if present, should contain a link to a license (IPFS or static HTTP
- /// url), or an identifier, like RMRK_nocopy or ipfs://ipfs/someHashOfLicense.
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub license: Option<BoundedString>,
-
- /// If the resource has the thumb property, this will be a URI to a thumbnail of the given
- /// resource. For example, if we have a composable NFT like a Kanaria bird, the resource is
- /// complex and too detailed to show in a search-results page or a list. Also, if a bird owns
- /// another bird, showing the full render of one bird inside the other's inventory might be a
- /// bit of a strain on the browser. For this reason, the thumb value can contain a URI to an
- /// image that is lighter and faster to load but representative of this resource.
- #[cfg_attr(feature = "std", serde(with = "serialize::opt_vec"))]
- pub thumb: Option<BoundedString>,
-}
-
-#[derive(Encode, Decode, Eq, PartialEq, Clone, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- BoundedString: AsRef<[u8]>,
- BoundedParts: AsRef<[PartId]>
- "#)
-)]
-pub enum ResourceTypes<BoundedString, BoundedParts> {
- Basic(BasicResource<BoundedString>),
- Composable(ComposableResource<BoundedString, BoundedParts>),
- Slot(SlotResource<BoundedString>),
-}
-
-#[derive(Encode, Decode, Eq, PartialEq, Clone, Debug, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "std", derive(Serialize))]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- BoundedString: AsRef<[u8]>,
- BoundedParts: AsRef<[PartId]>
- "#)
-)]
-pub struct ResourceInfo<BoundedString, BoundedParts> {
- /// ID is a unique identifier for a resource across all those of a single NFT.
- /// The combination of a collection ID, an NFT ID, and the resource ID must be
- /// unique across the entire RMRK ecosystem.
- //#[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub id: ResourceId,
-
- /// Resource type and the accordingly structured data stored
- pub resource: ResourceTypes<BoundedString, BoundedParts>,
-
- /// If resource is sent to non-rootowned NFT, pending will be false and need to be accepted
- pub pending: bool,
-
- /// If resource removal request is sent by non-rootowned NFT, pending will be true and need to be accepted
- pub pending_removal: bool,
-}
primitives/rmrk-traits/src/serialize.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/serialize.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use core::convert::AsRef;
-use serde::ser::{self, Serialize};
-
-pub mod vec {
- use super::*;
-
- pub fn serialize<D, V, C>(value: &C, serializer: D) -> Result<D::Ok, D::Error>
- where
- D: ser::Serializer,
- V: Serialize,
- C: AsRef<[V]>,
- {
- value.as_ref().serialize(serializer)
- }
-}
-
-pub mod opt_vec {
- use super::*;
-
- pub fn serialize<D, V, C>(value: &Option<C>, serializer: D) -> Result<D::Ok, D::Error>
- where
- D: ser::Serializer,
- V: Serialize,
- C: AsRef<[V]>,
- {
- match value {
- Some(value) => super::vec::serialize(value, serializer),
- None => serializer.serialize_none(),
- }
- }
-}
primitives/rmrk-traits/src/theme.rsdiffbeforeafterboth--- a/primitives/rmrk-traits/src/theme.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (C) 2021-2022 RMRK
-// This file is part of rmrk-substrate.
-// License: Apache 2.0 modified by RMRK, see https://github.com/rmrk-team/rmrk-substrate/blob/main/LICENSE
-
-use codec::{Decode, Encode};
-use scale_info::TypeInfo;
-
-#[cfg(feature = "std")]
-use serde::Serialize;
-
-#[cfg(feature = "std")]
-use crate::serialize;
-
-#[cfg_attr(feature = "std", derive(Eq, Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq)]
-#[cfg_attr(
- feature = "std",
- serde(bound = r#"
- BoundedString: AsRef<[u8]>,
- PropertyList: AsRef<[ThemeProperty<BoundedString>]>,
- "#)
-)]
-pub struct Theme<BoundedString, PropertyList> {
- /// Name of the theme
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub name: BoundedString,
-
- /// Theme properties
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub properties: PropertyList,
- /// Inheritability
- pub inherit: bool,
-}
-
-#[cfg_attr(feature = "std", derive(Eq, Serialize))]
-#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq)]
-#[cfg_attr(feature = "std", serde(bound = "BoundedString: AsRef<[u8]>"))]
-pub struct ThemeProperty<BoundedString> {
- /// Key of the property
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub key: BoundedString,
-
- /// Value of the property
- #[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
- pub value: BoundedString,
-}
runtime/common/config/pallets/mod.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/mod.rs
+++ b/runtime/common/config/pallets/mod.rs
@@ -35,9 +35,6 @@
};
use sp_arithmetic::Perbill;
-#[cfg(feature = "rmrk")]
-pub mod rmrk;
-
#[cfg(feature = "scheduler")]
pub mod scheduler;
runtime/common/config/pallets/rmrk.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/rmrk.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-use crate::{Runtime, RuntimeEvent};
-
-impl pallet_proxy_rmrk_core::Config for Runtime {
- type WeightInfo = pallet_proxy_rmrk_core::weights::SubstrateWeight<Self>;
- type RuntimeEvent = RuntimeEvent;
-}
-
-impl pallet_proxy_rmrk_equip::Config for Runtime {
- type WeightInfo = pallet_proxy_rmrk_equip::weights::SubstrateWeight<Self>;
- type RuntimeEvent = RuntimeEvent;
-}
runtime/common/construct_runtime.rsdiffbeforeafterboth--- a/runtime/common/construct_runtime.rs
+++ b/runtime/common/construct_runtime.rs
@@ -82,11 +82,9 @@
Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,
Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,
- #[cfg(feature = "rmrk")]
- RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,
+ // RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,
- #[cfg(feature = "rmrk")]
- RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
+ // RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
#[cfg(feature = "app-promotion")]
AppPromotion: pallet_app_promotion::{Pallet, Call, Storage, Event<T>} = 73,
runtime/common/maintenance.rsdiffbeforeafterboth--- a/runtime/common/maintenance.rs
+++ b/runtime/common/maintenance.rs
@@ -70,11 +70,6 @@
#[cfg(feature = "scheduler")]
RuntimeCall::Scheduler(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),
- #[cfg(feature = "rmrk")]
- RuntimeCall::RmrkCore(_) | RuntimeCall::RmrkEquip(_) => {
- Err(TransactionValidityError::Invalid(InvalidTransaction::Call))
- }
-
#[cfg(feature = "app-promotion")]
RuntimeCall::AppPromotion(_) => {
Err(TransactionValidityError::Invalid(InvalidTransaction::Call))
runtime/common/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -231,149 +231,6 @@
}
}
- impl rmrk_rpc::RmrkApi<
- Block,
- AccountId,
- RmrkCollectionInfo<AccountId>,
- RmrkInstanceInfo<AccountId>,
- RmrkResourceInfo,
- RmrkPropertyInfo,
- RmrkBaseInfo<AccountId>,
- RmrkPartType,
- RmrkTheme
- > for Runtime {
- fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>();
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn collection_properties(
- collection_id: RmrkCollectionId,
- filter_keys: Option<Vec<RmrkPropertyKey>>
- ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn nft_properties(
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- filter_keys: Option<Vec<RmrkPropertyKey>>
- ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn nft_resources(collection_id: RmrkCollectionId,nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn nft_resource_priority(
- collection_id: RmrkCollectionId,
- nft_id: RmrkNftId,
- resource_id: RmrkResourceId
- ) -> Result<Option<u32>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
-
- #[allow(unused_variables)]
- fn theme(
- base_id: RmrkBaseId,
- theme_name: RmrkThemeName,
- filter_keys: Option<Vec<RmrkPropertyKey>>
- ) -> Result<Option<RmrkTheme>, DispatchError> {
- #[cfg(feature = "rmrk")]
- return pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys);
-
- #[cfg(not(feature = "rmrk"))]
- return unsupported!();
- }
- }
-
impl sp_api::Core<Block> for Runtime {
fn version() -> RuntimeVersion {
VERSION
@@ -701,13 +558,7 @@
#[cfg(feature = "scheduler")]
list_benchmark!(list, extra, pallet_unique_scheduler_v2, Scheduler);
-
- #[cfg(feature = "rmrk")]
- list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);
- #[cfg(feature = "rmrk")]
- list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);
-
#[cfg(feature = "collator-selection")]
list_benchmark!(list, extra, pallet_collator_selection, CollatorSelection);
@@ -771,12 +622,6 @@
#[cfg(feature = "scheduler")]
add_benchmark!(params, batches, pallet_unique_scheduler_v2, Scheduler);
-
- #[cfg(feature = "rmrk")]
- add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);
-
- #[cfg(feature = "rmrk")]
- add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);
#[cfg(feature = "collator-selection")]
add_benchmark!(params, batches, pallet_collator_selection, CollatorSelection);
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -41,8 +41,6 @@
'pallet-inflation/runtime-benchmarks',
'pallet-maintenance/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
- 'pallet-proxy-rmrk-core/runtime-benchmarks',
- 'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-refungible/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
@@ -95,8 +93,6 @@
'pallet-identity/std',
'pallet-inflation/std',
'pallet-nonfungible/std',
- 'pallet-proxy-rmrk-core/std',
- 'pallet-proxy-rmrk-equip/std',
'pallet-randomness-collective-flip/std',
'pallet-refungible/std',
'pallet-structure/std',
@@ -108,7 +104,6 @@
'pallet-unique-scheduler-v2/std',
'pallet-unique/std',
'parachain-info/std',
- 'rmrk-rpc/std',
'serde',
'sp-api/std',
'sp-block-builder/std',
@@ -176,8 +171,6 @@
'pallet-inflation/try-runtime',
'pallet-maintenance/try-runtime',
'pallet-nonfungible/try-runtime',
- 'pallet-proxy-rmrk-core/try-runtime',
- 'pallet-proxy-rmrk-equip/try-runtime',
'pallet-randomness-collective-flip/try-runtime',
'pallet-refungible/try-runtime',
'pallet-structure/try-runtime',
@@ -197,7 +190,6 @@
foreign-assets = []
pallet-test-utils = []
refungible = []
-rmrk = []
scheduler = []
################################################################################
@@ -282,14 +274,11 @@
pallet-inflation = { workspace = true }
pallet-maintenance = { workspace = true }
pallet-nonfungible = { workspace = true }
-pallet-proxy-rmrk-core = { workspace = true }
-pallet-proxy-rmrk-equip = { workspace = true }
pallet-refungible = { workspace = true }
pallet-structure = { workspace = true }
pallet-unique = { workspace = true }
pallet-unique-scheduler-v2 = { workspace = true }
precompile-utils-macro = { workspace = true }
-rmrk-rpc = { workspace = true }
scale-info = { workspace = true }
up-common = { workspace = true }
up-data-structs = { workspace = true }
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -42,8 +42,6 @@
'pallet-inflation/runtime-benchmarks',
'pallet-maintenance/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
- 'pallet-proxy-rmrk-core/runtime-benchmarks',
- 'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-refungible/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
@@ -95,8 +93,6 @@
'pallet-fungible/std',
'pallet-inflation/std',
'pallet-nonfungible/std',
- 'pallet-proxy-rmrk-core/std',
- 'pallet-proxy-rmrk-equip/std',
'pallet-randomness-collective-flip/std',
'pallet-refungible/std',
'pallet-structure/std',
@@ -107,7 +103,6 @@
'pallet-treasury/std',
'pallet-unique/std',
'parachain-info/std',
- 'rmrk-rpc/std',
'serde',
'sp-api/std',
'sp-block-builder/std',
@@ -171,8 +166,6 @@
'pallet-inflation/try-runtime',
'pallet-maintenance/try-runtime',
'pallet-nonfungible/try-runtime',
- 'pallet-proxy-rmrk-core/try-runtime',
- 'pallet-proxy-rmrk-equip/try-runtime',
'pallet-randomness-collective-flip/try-runtime',
'pallet-refungible/try-runtime',
'pallet-structure/try-runtime',
@@ -189,7 +182,6 @@
collator-selection = []
foreign-assets = []
refungible = []
-rmrk = []
scheduler = []
################################################################################
@@ -228,7 +220,6 @@
pallet-xcm = { workspace = true }
parachain-info = { workspace = true }
polkadot-parachain = { workspace = true }
-rmrk-rpc = { workspace = true }
smallvec = { workspace = true }
sp-api = { workspace = true }
sp-arithmetic = { workspace = true }
@@ -260,8 +251,6 @@
pallet-identity = { workspace = true }
pallet-inflation = { workspace = true }
pallet-nonfungible = { workspace = true }
-pallet-proxy-rmrk-core = { workspace = true }
-pallet-proxy-rmrk-equip = { workspace = true }
pallet-refungible = { workspace = true }
pallet-structure = { workspace = true }
pallet-unique = { workspace = true }
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -39,8 +39,6 @@
'pallet-inflation/runtime-benchmarks',
'pallet-maintenance/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
- 'pallet-proxy-rmrk-core/runtime-benchmarks',
- 'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-refungible/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
@@ -93,8 +91,6 @@
'pallet-fungible/std',
'pallet-inflation/std',
'pallet-nonfungible/std',
- 'pallet-proxy-rmrk-core/std',
- 'pallet-proxy-rmrk-equip/std',
'pallet-randomness-collective-flip/std',
'pallet-refungible/std',
'pallet-structure/std',
@@ -105,7 +101,6 @@
'pallet-treasury/std',
'pallet-unique/std',
'parachain-info/std',
- 'rmrk-rpc/std',
'sp-api/std',
'sp-block-builder/std',
'sp-core/std',
@@ -169,8 +164,6 @@
'pallet-inflation/try-runtime',
'pallet-maintenance/try-runtime',
'pallet-nonfungible/try-runtime',
- 'pallet-proxy-rmrk-core/try-runtime',
- 'pallet-proxy-rmrk-equip/try-runtime',
'pallet-randomness-collective-flip/try-runtime',
'pallet-refungible/try-runtime',
'pallet-structure/try-runtime',
@@ -187,7 +180,6 @@
collator-selection = []
foreign-assets = []
refungible = []
-rmrk = []
scheduler = []
################################################################################
@@ -255,12 +247,9 @@
pallet-identity = { workspace = true }
pallet-inflation = { workspace = true }
pallet-nonfungible = { workspace = true }
-pallet-proxy-rmrk-core = { workspace = true }
-pallet-proxy-rmrk-equip = { workspace = true }
pallet-refungible = { workspace = true }
pallet-structure = { workspace = true }
pallet-unique = { workspace = true }
-rmrk-rpc = { workspace = true }
scale-info = { workspace = true }
up-common = { workspace = true }
up-data-structs = { workspace = true }
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -43,7 +43,6 @@
"testEthFractionalizer": "yarn setup && mocha --timeout 9999999 -r ts-node/register './**/eth/fractionalizer/**/*.*test.ts'",
"testEthMarketplace": "yarn setup && mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.*test.ts'",
"testEvent": "yarn setup && mocha --timeout 9999999 -r ts-node/register ./src/check-event/*.*test.ts",
- "testRmrk": "yarn setup && mocha --timeout 9999999 -r ts-node/register ./**/rmrk/*.*test.ts",
"testEthPayable": "mocha --timeout 9999999 -r ts-node/register './**/eth/payable.test.ts'",
"testEvmCoder": "mocha --timeout 9999999 -r ts-node/register './**/eth/evmCoder.test.ts'",
"testNesting": "mocha --timeout 9999999 -r ts-node/register ./**/nest.test.ts",
tests/src/.outdated/rmrk/acceptNft.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/acceptNft.seqtest.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {
- createCollection,
- mintNft,
- sendNft,
- acceptNft,
-} from './util/tx';
-import {NftIdTuple} from './util/fetch';
-import {isNftChildOfAnother, expectTxFailure, requirePallets, Pallets} from './util/helpers';
-
-describe('integration test: accept NFT', () => {
- let api: any;
- before(async function() {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- const createTestCollection = async (issuerUri: string) => {
- return await createCollection(
- api,
- issuerUri,
- 'accept-metadata',
- null,
- 'acpt',
- );
- };
-
- it('accept NFT', async () => {
- const ownerAlice = alice;
- const ownerBob = bob;
-
- const aliceCollectionId = await createTestCollection(alice);
- const bobCollectionId = await createTestCollection(bob);
-
- const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];
-
- await sendNft(api, 'pending', ownerBob, bobCollectionId, childNftId, newOwnerNFT);
- await acceptNft(api, alice, bobCollectionId, childNftId, newOwnerNFT);
-
- const isChild = await isNftChildOfAnother(api, bobCollectionId, childNftId, newOwnerNFT);
- expect(isChild).to.be.true;
- });
-
- it('[negative] unable to accept NFT by a not-an-owner', async () => {
- const ownerAlice = alice;
- const ownerBob = bob;
-
- const aliceCollectionId = await createTestCollection(alice);
- const bobCollectionId = await createTestCollection(bob);
-
- const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];
-
- await sendNft(api, 'pending', ownerBob, bobCollectionId, childNftId, newOwnerNFT);
- const tx = acceptNft(api, bob, bobCollectionId, childNftId, newOwnerNFT);
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('[negative] unable to accept non-existing NFT', async () => {
- const collectionId = 0;
- const maxNftId = 0xFFFFFFFF;
-
- const owner = alice;
- const aliceCollectionId = await createTestCollection(alice);
-
- const parentNftId = await mintNft(api, alice, owner, aliceCollectionId, 'parent-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];
-
- const tx = acceptNft(api, alice, collectionId, maxNftId, newOwnerNFT);
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- it('[negative] unable to accept NFT which is not sent', async () => {
- const ownerAlice = alice;
- const ownerBob = bob;
-
- const aliceCollectionId = await createTestCollection(alice);
- const bobCollectionId = await createTestCollection(bob);
-
- const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];
-
- const tx = acceptNft(api, alice, bobCollectionId, childNftId, newOwnerNFT);
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
-
- const isChild = await isNftChildOfAnother(api, bobCollectionId, childNftId, newOwnerNFT);
- expect(isChild).to.be.false;
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/addResource.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/addResource.seqtest.ts
+++ /dev/null
@@ -1,435 +0,0 @@
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {NftIdTuple} from './util/fetch';
-import {expectTxFailure, getResourceById, requirePallets, Pallets} from './util/helpers';
-import {
- addNftBasicResource,
- acceptNftResource,
- createCollection,
- mintNft,
- sendNft,
- addNftSlotResource,
- addNftComposableResource,
-} from './util/tx';
-import {RmrkTraitsResourceResourceInfo as ResourceInfo} from '@polkadot/types/lookup';
-
-describe('integration test: add NFT resource', () => {
- const alice = '//Alice';
- const bob = '//Bob';
- const src = 'test-res-src';
- const metadata = 'test-res-metadata';
- const license = 'test-res-license';
- const thumb = 'test-res-thumb';
-
- const nonexistentId = 99999;
-
- let api: any;
- before(async function() {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- it('add resource', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
- });
-
- it('add a resource to the nested NFT', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const parentNftId = await mintNft(api, alice, alice, collectionIdAlice, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, alice, collectionIdAlice, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [collectionIdAlice, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionIdAlice, childNftId, newOwnerNFT);
-
- await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- childNftId,
- src,
- metadata,
- license,
- thumb,
- );
- });
-
- it('add multiple resources', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const baseId = 42;
- const slotId = 10;
- const parts = [0, 5, 2];
-
- const resourcesInfo = [];
- const resourceNum = 4;
-
- const checkResource = (resource: ResourceInfo, resType: string, expectedId: number, expected: {
- src: string,
- metadata: string,
- license: string,
- thumb: string
- }) => {
-
- // FIXME A workaround. It seems it is a PolkadotJS bug.
- // All of the following are `false`.
- //
- // console.log('>>> basic:', resource.resource.isBasic);
- // console.log('>>> composable:', resource.resource.isComposable);
- // console.log('>>> slot:', resource.resource.isSlot);
- const resourceJson = (resource.resource.toHuman() as any)[resType];
-
- expect(resource.id.toNumber(), 'Error: Invalid resource Id')
- .to.be.eq(expectedId);
-
- expect(resourceJson.src, 'Error: Invalid resource src')
- .to.be.eq(expected.src);
- expect(resourceJson.metadata, 'Error: Invalid resource metadata')
- .to.be.eq(expected.metadata);
- expect(resourceJson.license, 'Error: Invalid resource license')
- .to.be.eq(expected.license);
- expect(resourceJson.thumb, 'Error: Invalid resource thumb')
- .to.be.eq(expected.thumb);
- };
-
- for (let i = 0; i < resourceNum; i++) {
- resourcesInfo.push({
- src: src + 'r-' + i,
- metadata: metadata + 'r-' + i,
- license: license + 'r-' + i,
- thumb: thumb + 'r-' + i,
- });
- }
-
- const firstBasicResourceId = await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- resourcesInfo[0].src,
- resourcesInfo[0].metadata,
- resourcesInfo[0].license,
- resourcesInfo[0].thumb,
- );
-
- const secondBasicResourceId = await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- resourcesInfo[1].src,
- resourcesInfo[1].metadata,
- resourcesInfo[1].license,
- resourcesInfo[1].thumb,
- );
-
- const composableResourceId = await addNftComposableResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- parts,
- baseId,
- resourcesInfo[2].src,
- resourcesInfo[2].metadata,
- resourcesInfo[2].license,
- resourcesInfo[2].thumb,
- );
-
- const slotResourceId = await addNftSlotResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- baseId,
- slotId,
- resourcesInfo[3].src,
- resourcesInfo[3].metadata,
- resourcesInfo[3].license,
- resourcesInfo[3].thumb,
- );
-
- const firstResource = await getResourceById(api, collectionIdAlice, nftAlice, firstBasicResourceId);
- await checkResource(firstResource, 'Basic', firstBasicResourceId, resourcesInfo[0]);
-
- const secondResource = await getResourceById(api, collectionIdAlice, nftAlice, secondBasicResourceId);
- await checkResource(secondResource, 'Basic', secondBasicResourceId, resourcesInfo[1]);
-
- const composableResource = await getResourceById(api, collectionIdAlice, nftAlice, composableResourceId);
- await checkResource(composableResource, 'Composable', composableResourceId, resourcesInfo[2]);
-
- const slotResource = await getResourceById(api, collectionIdAlice, nftAlice, slotResourceId);
- await checkResource(slotResource, 'Slot', slotResourceId, resourcesInfo[3]);
- });
-
- it('[negative]: unable to add a resource to the non-existing NFT', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const tx = addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nonexistentId,
- src,
- metadata,
- license,
- thumb,
- );
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- it('[negative]: unable to add a resource by a not-an-owner user', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const tx = addNftBasicResource(
- api,
- bob,
- 'added',
- collectionIdAlice,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('[negative]: unable to add a resource to the nested NFT if it isnt root owned by the caller', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const parentNftId = await mintNft(api, alice, alice, collectionIdAlice, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, alice, collectionIdAlice, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [collectionIdAlice, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionIdAlice, childNftId, newOwnerNFT);
-
- const tx = addNftBasicResource(
- api,
- bob,
- 'added',
- collectionIdAlice,
- childNftId,
- src,
- metadata,
- license,
- thumb,
- );
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('accept resource', async () => {
- const collectionIdBob = await createCollection(
- api,
- bob,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- bob,
- alice,
- collectionIdBob,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- bob,
- 'pending',
- collectionIdBob,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- await acceptNftResource(api, alice, collectionIdBob, nftAlice, resourceId);
- });
-
- it('[negative]: unable to accept a non-existing resource', async () => {
- const collectionIdBob = await createCollection(
- api,
- bob,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- bob,
- alice,
- collectionIdBob,
- 'nft-metadata',
- );
-
- const tx = acceptNftResource(api, alice, collectionIdBob, nftAlice, nonexistentId);
- await expectTxFailure(/rmrkCore\.ResourceDoesntExist/, tx);
- });
-
- it('[negative]: unable to accept a resource by a not-an-NFT-owner user', async () => {
- const collectionIdBob = await createCollection(
- api,
- bob,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- bob,
- alice,
- collectionIdBob,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- bob,
- 'pending',
- collectionIdBob,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- const tx = acceptNftResource(api, bob, collectionIdBob, nftAlice, resourceId);
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('[negative]: unable to accept a resource to a non-target NFT', async () => {
- const collectionIdBob = await createCollection(
- api,
- bob,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- bob,
- alice,
- collectionIdBob,
- 'nft-metadata',
- );
-
- const wrongNft = await mintNft(
- api,
- bob,
- alice,
- collectionIdBob,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- bob,
- 'pending',
- collectionIdBob,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- const tx = acceptNftResource(api, bob, collectionIdBob, wrongNft, resourceId);
-
- await expectTxFailure(/rmrkCore\.ResourceDoesntExist/, tx);
- });
-
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/addTheme.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/addTheme.seqtest.ts
+++ /dev/null
@@ -1,129 +0,0 @@
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {createBase, addTheme} from './util/tx';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {getThemeNames} from './util/fetch';
-
-describe('integration test: add Theme to Base', () => {
- let api: any;
- before(async function() {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkEquip]);
- });
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- it('add default theme', async () => {
- const baseId = await createBase(api, alice, 'default-themed-base', 'DTBase', []);
- await addTheme(api, alice, baseId, {
- name: 'default',
- properties: [
- {
- key: 'some-key',
- value: 'some-key-value',
- },
- {
- key: 'another-key',
- value: 'another-key-value',
- },
- ],
- });
- });
-
- it('add default theme and a custom one', async () => {
- const baseId = await createBase(api, alice, '2-themed-base', '2TBase', []);
- await addTheme(api, alice, baseId, {
- name: 'default',
- properties: [
- {
- key: 'default-key',
- value: 'default-key-value',
- },
- ],
- });
- await addTheme(api, alice, baseId, {
- name: 'custom-theme',
- properties: [
- {
- key: 'custom-key-0',
- value: 'custom-key-value-0',
- },
- {
- key: 'custom-key-1',
- value: 'custom-key-value-1',
- },
- ],
- });
- });
-
- it('fetch filtered theme keys', async () => {
- const baseId = await createBase(api, alice, '2-themed-base', '2TBase', []);
- await addTheme(api, alice, baseId, {
- name: 'default',
- properties: [
- {
- key: 'first-key',
- value: 'first-key-value',
- },
- {
- key: 'second-key',
- value: 'second-key-value',
- },
- ],
- }, ['second-key']);
- });
-
- it('fetch theme names', async() => {
- const baseId = await createBase(api, alice, '3-themed-base', '3TBase', []);
- const names = [
- 'default',
- 'first-theme',
- 'second-theme',
- ];
-
- for (let i = 0; i < names.length; i++) {
- await addTheme(api, alice, baseId, {name: names[i], properties: [{key: 'dummy', value: 'dummy'}]});
- }
-
- const fetchedNames = await getThemeNames(api, baseId);
-
- for (let i = 0; i < names.length; i++) {
- const isFound = fetchedNames.find((name) => name === names[i]) !== undefined;
-
- expect(isFound, 'Error: invalid theme names').to.be.true;
- }
- });
-
- it('[negative] unable to add theme to non-existing base', async () => {
- const maxBaseId = 0xFFFFFFFF;
- const tx = addTheme(api, alice, maxBaseId, {
- name: 'default',
- properties: [],
- });
-
- await expectTxFailure(/rmrkEquip\.BaseDoesntExist/, tx);
- });
-
- it('[negative] unable to add custom theme if no default theme', async () => {
- const baseId = await createBase(api, alice, 'no-default-themed-base', 'NDTBase', []);
- const tx = addTheme(api, alice, baseId, {
- name: 'custom-theme',
- properties: [],
- });
-
- await expectTxFailure(/rmrkEquip\.NeedsDefaultThemeFirst/, tx);
- });
-
- it('[negative] unable to add theme by a not-an-owner', async () => {
- const baseId = await createBase(api, alice, 'no-default-themed-base', 'NDTBase', []);
- const tx = addTheme(api, bob, baseId, {
- name: 'default',
- properties: [],
- });
-
- await expectTxFailure(/rmrkEquip\.PermissionError/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/burnNft.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/burnNft.seqtest.ts
+++ /dev/null
@@ -1,170 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {NftIdTuple, getChildren} from './util/fetch';
-import {burnNft, createCollection, sendNft, mintNft} from './util/tx';
-
-import chai from 'chai';
-import chaiAsPromised from 'chai-as-promised';
-
-chai.use(chaiAsPromised);
-const expect = chai.expect;
-
-describe('integration test: burn nft', () => {
- const alice = '//Alice';
- const bob = '//Bob';
-
- let api: any;
- before(async function() {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
-
- it('burn nft', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- const nftId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
- await burnNft(api, alice, collectionId, nftId);
- });
- });
-
- it('burn nft with children', async () => {
- const collectionId = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const parentNftId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
-
- const childNftId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
-
- const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);
-
- const childrenBefore = await getChildren(api, collectionId, parentNftId);
- expect(childrenBefore.length === 1, 'Error: parent NFT should have children')
- .to.be.true;
-
- const child = childrenBefore[0];
- expect(child.collectionId.eq(collectionId), 'Error: invalid child collection Id')
- .to.be.true;
-
- expect(child.nftId.eq(childNftId), 'Error: invalid child NFT Id')
- .to.be.true;
-
- await burnNft(api, alice, collectionId, parentNftId);
-
- const childrenAfter = await getChildren(api, collectionId, parentNftId);
-
- expect(childrenAfter.length === 0, 'Error: children should be burned').to.be.true;
- });
-
- it('burn child nft', async () => {
- const collectionId = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const parentNftId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
-
- const childNftId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
-
- const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);
-
- const childrenBefore = await getChildren(api, collectionId, parentNftId);
- expect(childrenBefore.length === 1, 'Error: parent NFT should have children')
- .to.be.true;
-
- const child = childrenBefore[0];
- expect(child.collectionId.eq(collectionId), 'Error: invalid child collection Id')
- .to.be.true;
-
- expect(child.nftId.eq(childNftId), 'Error: invalid child NFT Id')
- .to.be.true;
-
- await burnNft(api, alice, collectionId, childNftId);
-
- const childrenAfter = await getChildren(api, collectionId, parentNftId);
-
- expect(childrenAfter.length === 0, 'Error: children should be burned').to.be.true;
- });
-
- it('[negative] burn non-existing NFT', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- const tx = burnNft(api, alice, collectionId, 99999);
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
- });
-
- it('[negative] burn not an owner NFT user', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- const nftId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
- const tx = burnNft(api, bob, collectionId, nftId);
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/changeCollectionIssuer.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/changeCollectionIssuer.seqtest.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {
- changeIssuer,
- createCollection,
-} from './util/tx';
-
-describe('integration test: collection issuer', () => {
- const alice = '//Alice';
- const bob = '//Bob';
-
- let api: any;
- before(async function() {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
-
-
- it('change collection issuer', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- await changeIssuer(api, alice, collectionId, bob);
- });
- });
-
- it('[negative] change not an owner NFT collection issuer', async () => {
- await createCollection(api, bob, 'test-metadata', null, 'test-symbol').then(async (collectionId) => {
- const tx = changeIssuer(api, alice, collectionId, bob);
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
- });
-
- it('[negative] change non-existigit NFT collection issuer', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async () => {
- const tx = changeIssuer(api, alice, 99999, bob);
- await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx);
- });
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/createBase.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/createBase.seqtest.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from './util/helpers';
-import {createCollection, createBase} from './util/tx';
-
-describe('integration test: create new Base', () => {
- let api: any;
- before(async function() {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore, Pallets.RmrkEquip]);
- });
-
- const alice = '//Alice';
-
- it('create empty Base', async () => {
- await createBase(api, alice, 'empty-base-type', 'EBase', []);
- });
-
- it('create Base with fixed part', async () => {
- await createBase(api, alice, 'fixedpart-base-type', 'FPBase', [
- {
- 'FixedPart': {
- id: 42,
- z: 0,
- src: 'some-fixed-url',
- },
- },
- ]);
- });
-
- it('create Base with slot part (no collection)', async () => {
- await createBase(api, alice, 'slotpart-base-type', 'SPBase', [
- {
- 'SlotPart': {
- id: 112,
- equippable: 'Empty',
- z: 0,
- src: 'some-fallback-slot-url',
- },
- },
- ]);
- });
-
- it('create Base with slot part (any collection)', async () => {
- await createBase(api, alice, 'slotpartany-base-type', 'SPABase', [
- {
- 'SlotPart': {
- id: 222,
- equippable: 'All',
- z: 1,
- src: 'some-fallback-slot-url',
- },
- },
- ]);
- });
-
- it('create Base with slot part (custom collections)', async () => {
- const firstCollectionId = await createCollection(
- api,
- alice,
- 'first-collection-meta',
- null,
- 'first-collection',
- );
-
- const secondCollectionId = await createCollection(
- api,
- alice,
- 'first-collection-meta',
- null,
- 'first-collection',
- );
-
- await createBase(api, alice, 'slotpartcustom-base-type', 'SPCBase', [
- {
- 'SlotPart': {
- id: 1024,
- equippable: {
- 'Custom': [firstCollectionId, secondCollectionId],
- },
- z: 2,
- src: 'some-fallback-slot-url',
- },
- },
- ]);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/createCollection.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/createCollection.seqtest.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from './util/helpers';
-import {createCollection} from './util/tx';
-
-describe('Integration test: create new collection', () => {
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
-
-
- const alice = '//Alice';
-
- it('create NFT collection', async () => {
- await createCollection(api, alice, 'test-metadata', 42, 'test-symbol');
- });
-
- it('create NFT collection without token limit', async () => {
- await createCollection(api, alice, 'no-limit-metadata', null, 'no-limit-symbol');
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/deleteCollection.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/deleteCollection.seqtest.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {createCollection, deleteCollection} from './util/tx';
-
-describe('integration test: delete collection', () => {
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- it('delete NFT collection', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- await deleteCollection(api, alice, collectionId.toString());
- });
- });
-
- it('[negative] delete non-existing NFT collection', async () => {
- const tx = deleteCollection(api, alice, '99999');
- await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx);
- });
-
- it('[negative] delete not an owner NFT collection', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- const tx = deleteCollection(api, bob, collectionId.toString());
- await expectTxFailure(/rmrkCore.NoPermission/, tx);
- });
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/equipNft.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/equipNft.seqtest.ts
+++ /dev/null
@@ -1,340 +0,0 @@
-import {ApiPromise} from '@polkadot/api';
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {getNft, NftIdTuple} from './util/fetch';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {
- addNftComposableResource,
- addNftSlotResource,
- createBase,
- createCollection,
- equipNft,
- mintNft,
- sendNft,
- unequipNft,
-} from './util/tx';
-
-const alice = '//Alice';
-const bob = '//Bob';
-
-const composableParts: number[] = [5, 2, 7];
-const composableSrc = 'test-cmp-src';
-const composableMetadata = 'test-cmp-metadata';
-const composableLicense = 'test-comp-license';
-const composableThumb = 'test-comp-thumb';
-
-const slotSrc = 'test-slot-src';
-const slotLicense = 'test-slot-license';
-const slotMetadata = 'test-slot-metadata';
-const slotThumb = 'test-slot-thumb';
-
-const slotId = 1;
-
-function createTestCollection(api: ApiPromise): Promise<number> {
- return createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-}
-
-async function mintTestNft(api: ApiPromise, collectionId: number): Promise<number> {
- return await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
-}
-
-async function mintChildNft(api: ApiPromise, collectionId: number, parentNftId: number): Promise<number> {
- const nftChildId = await mintTestNft(api, collectionId);
-
- const parentNFT: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionId, nftChildId, parentNFT);
-
- return nftChildId;
-}
-
-function createTestBase(api: ApiPromise): Promise<number> {
- return createBase(api, alice, 'test-base', 'DTBase', [
- {
- SlotPart: {
- id: slotId,
- equippable: 'All',
- z: 1,
- src: slotSrc,
- },
- },
- ]);
-}
-
-async function addTestComposable(api: ApiPromise, collectionId: number, nftId: number, baseId: number) {
- await addNftComposableResource(
- api,
- alice,
- 'added',
- collectionId,
- nftId,
- composableParts,
- baseId,
- composableSrc,
- composableMetadata,
- composableLicense,
- composableThumb,
- );
-}
-
-async function addTestSlot(api: ApiPromise, collectionId: number, nftId: number, baseId: number, slotId: number): Promise<number> {
- return await addNftSlotResource(
- api,
- alice,
- 'added',
- collectionId,
- nftId,
- baseId,
- slotId,
- slotSrc,
- slotMetadata,
- slotLicense,
- slotThumb,
- );
-}
-
-async function checkEquipStatus(
- api: ApiPromise,
- expectedStatus: 'equipped' | 'unequipped',
- collectionId: number,
- nftId: number,
-) {
- const itemNftDataOpt = await getNft(api, collectionId, nftId);
- expect(itemNftDataOpt.isSome, 'Error: unable to fetch item NFT data');
-
- const itemNftData = itemNftDataOpt.unwrap();
- expect(itemNftData.equipped.isTrue, `Error: item NFT should be ${expectedStatus}`)
- .to.be.equal(expectedStatus === 'equipped');
-}
-
-describe.skip('integration test: Equip NFT', () => {
-
- let api: any;
-
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore, Pallets.RmrkEquip]);
- });
-
- it('equip nft', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
-
- const baseId = await createTestBase(api);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
- const resourceId = await addTestSlot(api, collectionId, nftChildId, baseId, slotId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
-
- await equipNft(api, alice, itemNFT, equipperNFT, resourceId, baseId, slotId);
-
- await checkEquipStatus(api, 'equipped', collectionId, nftChildId);
- });
-
- it('unequip nft', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
-
- const baseId = await createTestBase(api);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
- const resourceId = await addTestSlot(api, collectionId, nftChildId, baseId, slotId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
-
- await equipNft(api, alice, itemNFT, equipperNFT, resourceId, baseId, slotId);
-
- await checkEquipStatus(api, 'equipped', collectionId, nftChildId);
-
- await unequipNft(api, alice, itemNFT, equipperNFT, resourceId, baseId, slotId);
- await checkEquipStatus(api, 'unequipped', collectionId, nftChildId);
- });
-
- it('[negative] equip NFT onto non-existing NFT', async () => {
- const collectionId = await createTestCollection(api);
-
- const nftChildId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
-
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
- const invalidEquipperNFT: NftIdTuple = [collectionId, 9999999];
-
- const baseId = 0;
- const resourceId = 0;
-
- const tx = equipNft(api, alice, itemNFT, invalidEquipperNFT, resourceId, baseId, slotId);
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- it('[negative] equip non-existing NFT', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'nft-metadata',
- );
-
- const baseId = await createTestBase(api);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const invalidItemNFT: NftIdTuple = [collectionId, 99999999];
-
- const resourceId = 0;
-
- const tx = equipNft(api, alice, invalidItemNFT, equipperNFT, resourceId, baseId, slotId);
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- it('[negative] equip NFT by a not-an-owner user', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
-
- const baseId = await createTestBase(api);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
-
- const resourceId = await addTestSlot(api, collectionId, nftChildId, baseId, slotId);
-
- const tx = equipNft(api, bob, itemNFT, equipperNFT, resourceId, baseId, slotId);
- await expectTxFailure(/rmrkEquip\.PermissionError/, tx);
- });
-
- it('[negative] unable to equip NFT onto indirect parent NFT', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
- const nftGrandchildId = await mintChildNft(api, collectionId, nftChildId);
-
- const baseId = await createTestBase(api);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
- const resourceId = await addTestSlot(api, collectionId, nftGrandchildId, baseId, slotId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftGrandchildId];
-
- const tx = equipNft(api, alice, itemNFT, equipperNFT, resourceId, baseId, slotId);
- await expectTxFailure(/rmrkEquip\.MustBeDirectParent/, tx);
- });
-
- it('[negative] unable to equip NFT onto parent NFT with another base', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
-
- const baseId = await createTestBase(api);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
- const resourceId = await addTestSlot(api, collectionId, nftChildId, baseId, slotId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
-
- const invalidBaseId = 99999;
-
- const tx = equipNft(api, alice, itemNFT, equipperNFT, resourceId, invalidBaseId, slotId);
- await expectTxFailure(/rmrkEquip\.NoResourceForThisBaseFoundOnNft/, tx);
- });
-
- it('[negative] unable to equip NFT into slot with another id', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
-
- const baseId = await createTestBase(api);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
- const resourceId = await addTestSlot(api, collectionId, nftChildId, baseId, slotId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
-
- const incorrectSlotId = slotId + 1;
- const tx = equipNft(api, alice, itemNFT, equipperNFT, resourceId, baseId, incorrectSlotId);
- await expectTxFailure(/rmrkEquip\.ItemHasNoResourceToEquipThere/, tx);
- });
-
- it('[negative] unable to equip NFT with incorrect slot (fixed part)', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
-
- const baseId = await createBase(api, alice, 'test-base', 'DTBase', [
- {
- FixedPart: {
- id: slotId,
- equippable: 'All',
- z: 1,
- src: slotSrc,
- },
- },
- ]);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
- const resourceId = await addTestSlot(api, collectionId, nftChildId, baseId, slotId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
-
- const tx = equipNft(api, alice, itemNFT, equipperNFT, resourceId, baseId, slotId);
- await expectTxFailure(/rmrkEquip\.CantEquipFixedPart/, tx);
- });
-
- it('[negative] unable to equip NFT from a collection that is not allowed by the slot', async () => {
- const collectionId = await createTestCollection(api);
- const nftParentId = await mintTestNft(api, collectionId);
- const nftChildId = await mintChildNft(api, collectionId, nftParentId);
-
- const baseId = await createBase(api, alice, 'test-base', 'DTBase', [
- {
- SlotPart: {
- id: 1,
- z: 1,
- equippable: 'Empty',
- src: slotSrc,
- },
- },
- ]);
-
- await addTestComposable(api, collectionId, nftParentId, baseId);
- const resourceId = await addTestSlot(api, collectionId, nftChildId, baseId, slotId);
-
- const equipperNFT: NftIdTuple = [collectionId, nftParentId];
- const itemNFT: NftIdTuple = [collectionId, nftChildId];
-
- const tx = equipNft(api, alice, itemNFT, equipperNFT, resourceId, baseId, slotId);
- await expectTxFailure(/rmrkEquip\.CollectionNotEquippable/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/getOwnedNfts.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/getOwnedNfts.seqtest.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from './util/helpers';
-import {getOwnedNfts} from './util/fetch';
-import {mintNft, createCollection} from './util/tx';
-
-describe('integration test: get owned NFTs', () => {
- let api: any;
-
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
-
- const alice = '//Alice';
-
- it('fetch all NFTs owned by a user', async () => {
- const owner = alice;
- const collectionMetadata = 'aliceCollectionMetadata';
- const collectionMax = null;
- const collectionSymbol = 'AliceSym';
- const recipientUri = null;
- const royalty = null;
- const nftMetadata = 'alice-NFT-metadata';
-
- const collectionId = await createCollection(
- api,
- alice,
- collectionMetadata,
- collectionMax,
- collectionSymbol,
- );
-
- const nftIds = [
- await mintNft(
- api,
- alice,
- owner,
- collectionId,
- nftMetadata + '-0',
- recipientUri,
- royalty,
- ),
- await mintNft(
- api,
- alice,
- owner,
- collectionId,
- nftMetadata + '-1',
- recipientUri,
- royalty,
- ),
- await mintNft(
- api,
- alice,
- owner,
- collectionId,
- nftMetadata + '-2',
- recipientUri,
- royalty,
- ),
- ];
-
- const ownedNfts = await getOwnedNfts(api, alice, collectionId);
-
- const isFound = (nftId: number) => {
- return ownedNfts.find((ownedNftId) => {
- return ownedNftId === nftId;
- }) !== undefined;
- };
-
- nftIds.forEach((nftId) => {
- expect(isFound(nftId), `NFT ${nftId} should be owned by ${alice}`)
- .to.be.true;
- });
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/lockCollection.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/lockCollection.seqtest.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {createCollection, lockCollection, mintNft} from './util/tx';
-
-describe('integration test: lock collection', () => {
- const alice = '//Alice';
- const bob = '//Bob';
- const max = 5;
-
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- it('lock collection', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- await lockCollection(api, alice, collectionId);
- });
- });
-
- it('[negative] lock non-existing NFT collection', async () => {
- const tx = lockCollection(api, alice, 99999);
- await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx);
- });
-
- it('[negative] lock not an owner NFT collection issuer', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- const tx = lockCollection(api, bob, collectionId);
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
- });
-
- it('lock collection with minting', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- max,
- 'test-symbol',
- ).then(async (collectionId) => {
- for (let i = 0; i < 5; i++) {
- await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'test-metadata',
- null,
- null,
- );
- }
- await lockCollection(api, alice, collectionId, max);
- });
- });
-
- it('[negative] unable to mint NFT inside a locked collection', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- max,
- 'test-symbol',
- ).then(async (collectionId) => {
- await lockCollection(api, alice, collectionId);
- const tx = mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'test-metadata',
- null,
- null,
- );
- await expectTxFailure(/rmrkCore\.CollectionFullOrLocked/, tx);
- });
- });
-
- it('[negative] unable to mint NFT inside a full collection', async () => {
- await createCollection(api, alice, 'test-metadata', 1, 'test-symbol').then(async (collectionId) => {
- await mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'test-metadata',
- null,
- null,
- );
- const tx = mintNft(
- api,
- alice,
- alice,
- collectionId,
- 'test-metadata',
- null,
- null,
- );
- await expectTxFailure(/rmrkCore\.CollectionFullOrLocked/, tx);
- });
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/mintNft.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/mintNft.seqtest.ts
+++ /dev/null
@@ -1,211 +0,0 @@
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {getNft} from './util/fetch';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {createCollection, mintNft} from './util/tx';
-
-describe('integration test: mint new NFT', () => {
- let api: any;
-
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
-
- const alice = '//Alice';
- const bob = '//Bob';
- const maxCollectionId = 0xFFFFFFFF;
- const maxNftId = 0xFFFFFFFF;
-
- it('mint NFT', async () => {
- const owner = null;
- const collectionMetadata = 'mintingCollectionMetadata';
- const collectionMax = null;
- const collectionSymbol = 'MCS';
- const recipientUri = null;
- const royalty = null;
- const nftMetadata = 'NFT-test-metadata';
-
- const collectionId = await createCollection(
- api,
- alice,
- collectionMetadata,
- collectionMax,
- collectionSymbol,
- );
-
- await mintNft(
- api,
- alice,
- owner,
- collectionId,
- nftMetadata,
- recipientUri,
- royalty,
- );
- });
-
- it('mint NFT and set another owner', async () => {
- const owner = bob;
- const collectionMetadata = 'setOwnerCollectionMetadata';
- const collectionMax = null;
- const collectionSymbol = 'SOCS';
- const recipientUri = null;
- const royalty = null;
- const nftMetadata = 'setOwner-NFT-metadata';
-
- const collectionId = await createCollection(
- api,
- alice,
- collectionMetadata,
- collectionMax,
- collectionSymbol,
- );
-
- await mintNft(
- api,
- alice,
- owner,
- collectionId,
- nftMetadata,
- recipientUri,
- royalty,
- );
- });
-
- it('mint NFT with recipient and roalty', async () => {
- const owner = alice;
- const collectionMetadata = 'mintingCollectionMetadata';
- const collectionMax = null;
- const collectionSymbol = 'MCS';
- const recipientUri = bob;
- const royalty = 70000;
- const nftMetadata = 'recipient-royalty-NFT-test-metadata';
-
- const collectionId = await createCollection(
- api,
- alice,
- collectionMetadata,
- collectionMax,
- collectionSymbol,
- );
-
- await mintNft(
- api,
- alice,
- owner,
- collectionId,
- nftMetadata,
- recipientUri,
- royalty,
- );
- });
-
- it('mint NFT with resources', async () => {
- const owner = alice;
- const collectionMetadata = 'mintingCollectionMetadata';
- const collectionMax = null;
- const collectionSymbol = 'MCS';
- const nftMetadata = 'NFT-with-resources-test-metadata';
- const resources = [
- {
- basic: {
- metadata: 'basic-resource-nft-minting',
- },
- }, {
- slot: {
- metadata: 'slot-resource-nft-minting',
- slot: 9,
- },
- }, {
- composable: {
- metadata: 'composable-resource-nft-minting',
- parts: [0, 5, 2],
- },
- }, {
- slot: {
- metadata: 'slot-resource-nft-minting-2',
- thumb: 'srnm2',
- base: 5,
- },
- },
- ];
-
- const collectionId = await createCollection(
- api,
- alice,
- collectionMetadata,
- collectionMax,
- collectionSymbol,
- );
-
- await mintNft(
- api,
- alice,
- owner,
- collectionId,
- nftMetadata,
- null,
- null,
- true,
- resources,
- );
- });
-
- it('[negative] unable to mint NFT within non-existing collection', async () => {
- const owner = alice;
- const recipientUri = null;
- const royalty = null;
- const nftMetadata = 'NFT-test-metadata';
-
- const tx = mintNft(
- api,
- alice,
- owner,
- maxCollectionId,
- nftMetadata,
- recipientUri,
- royalty,
- );
-
- await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx);
- });
-
- it("[negative] unable to mint NFT by a user that isn't the owner of the collection", async () => {
- const owner = alice;
- const collectionMetadata = 'mintingCollectionMetadata';
- const collectionMax = null;
- const collectionSymbol = 'MCS';
- const recipientUri = null;
- const royalty = null;
- const nftMetadata = 'NFT-test-metadata';
-
- const collectionId = await createCollection(
- api,
- alice,
- collectionMetadata,
- collectionMax,
- collectionSymbol,
- );
-
- const tx = mintNft(
- api,
- bob,
- owner,
- collectionId,
- nftMetadata,
- recipientUri,
- royalty,
- );
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('[negative] unable to fetch non-existing NFT', async () => {
- const nft = await getNft(api, maxCollectionId, maxNftId);
- expect(nft.isSome).to.be.false;
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/rejectNft.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/rejectNft.seqtest.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {
- createCollection,
- mintNft,
- sendNft,
- rejectNft,
-} from './util/tx';
-import {NftIdTuple} from './util/fetch';
-import {isNftChildOfAnother, expectTxFailure, requirePallets, Pallets} from './util/helpers';
-
-describe('integration test: reject NFT', () => {
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
-
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- const createTestCollection = async (issuerUri: string) => {
- return await createCollection(
- api,
- issuerUri,
- 'reject-metadata',
- null,
- 'rjct',
- );
- };
-
- it('reject NFT', async () => {
- const ownerAlice = alice;
- const ownerBob = bob;
-
- const aliceCollectionId = await createTestCollection(alice);
- const bobCollectionId = await createTestCollection(bob);
-
- const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];
-
- await sendNft(api, 'pending', ownerBob, bobCollectionId, childNftId, newOwnerNFT);
- await rejectNft(api, alice, bobCollectionId, childNftId);
-
- const isChild = await isNftChildOfAnother(api, bobCollectionId, childNftId, newOwnerNFT);
- expect(isChild, 'Error: rejected NFT is still a child of the target NFT').to.be.false;
- });
-
- it('[negative] unable to reject NFT by a not-an-owner', async () => {
- const ownerAlice = alice;
- const ownerBob = bob;
-
- const aliceCollectionId = await createTestCollection(alice);
- const bobCollectionId = await createTestCollection(bob);
-
- const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];
-
- await sendNft(api, 'pending', ownerBob, bobCollectionId, childNftId, newOwnerNFT);
- const tx = rejectNft(api, bob, bobCollectionId, childNftId);
-
- await expectTxFailure(/rmrkCore\.CannotRejectNonOwnedNft/, tx);
- });
-
- it('[negative] unable to reject non-existing NFT', async () => {
- const maxNftId = 0xFFFFFFFF;
-
- const collectionId = await createTestCollection(alice);
-
- const tx = rejectNft(api, alice, collectionId, maxNftId);
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- it('[negative] unable to reject NFT which is not sent', async () => {
- const ownerAlice = alice;
-
- const collectionId = await createTestCollection(alice);
-
- const nftId = await mintNft(api, alice, ownerAlice, collectionId, 'parent-nft-metadata');
-
- const tx = rejectNft(api, alice, collectionId, nftId);
-
- await expectTxFailure(/rmrkCore\.CannotRejectNonPendingNft/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/removeResource.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/removeResource.seqtest.ts
+++ /dev/null
@@ -1,340 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {NftIdTuple} from './util/fetch';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {
- acceptResourceRemoval, addNftBasicResource, createCollection, mintNft, removeNftResource, sendNft,
-} from './util/tx';
-
-
-
-
-describe('Integration test: remove nft resource', () => {
- let api: any;
- before(async function() {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- const alice = '//Alice';
- const bob = '//Bob';
- const src = 'test-basic-src';
- const metadata = 'test-basic-metadata';
- const license = 'test-basic-license';
- const thumb = 'test-basic-thumb';
-
- it('deleting a resource directly by the NFT owner', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- await removeNftResource(api, 'removed', alice, collectionIdAlice, nftAlice, resourceId);
- });
-
- it('deleting resources indirectly by the NFT owner', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const parentNftId = await mintNft(api, alice, alice, collectionIdAlice, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, alice, collectionIdAlice, 'child-nft-metadata');
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- childNftId,
- src,
- metadata,
- license,
- thumb,
- );
-
- const newOwnerNFT: NftIdTuple = [collectionIdAlice, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionIdAlice, childNftId, newOwnerNFT);
-
- await removeNftResource(api, 'removed', alice, collectionIdAlice, childNftId, resourceId);
- });
-
- it('deleting a resource by the collection owner', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftBob = await mintNft(
- api,
- alice,
- bob,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'pending',
- collectionIdAlice,
- nftBob,
- src,
- metadata,
- license,
- thumb,
- );
-
- await removeNftResource(api, 'pending', alice, collectionIdAlice, nftBob, resourceId);
- await acceptResourceRemoval(api, bob, collectionIdAlice, nftBob, resourceId);
- });
-
- it('deleting a resource in a nested NFT by the collection owner', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const parentNftId = await mintNft(
- api,
- alice,
- bob,
- collectionIdAlice,
- 'parent-nft-metadata',
- );
- const childNftId = await mintNft(
- api,
- alice,
- bob,
- collectionIdAlice,
- 'child-nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'pending',
- collectionIdAlice,
- childNftId,
- src,
- metadata,
- license,
- thumb,
- );
-
- const newOwnerNFT: NftIdTuple = [collectionIdAlice, parentNftId];
-
- await sendNft(api, 'sent', bob, collectionIdAlice, childNftId, newOwnerNFT);
-
- await removeNftResource(api, 'pending', alice, collectionIdAlice, childNftId, resourceId);
- await acceptResourceRemoval(api, bob, collectionIdAlice, childNftId, resourceId);
- });
-
- it('[negative]: can\'t delete a resource in a non-existing collection', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- const tx = removeNftResource(api, 'removed', alice, 0xFFFFFFFF, nftAlice, resourceId);
- await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx); // FIXME: inappropriate error message (NoAvailableNftId)
- });
-
- it('[negative]: only collection owner can delete a resource', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- const tx = removeNftResource(api, 'removed', bob, collectionIdAlice, nftAlice, resourceId);
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('[negative]: cannot delete a resource that does not exist', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const tx = removeNftResource(api, 'removed', alice, collectionIdAlice, nftAlice, 127);
- await expectTxFailure(/rmrkCore\.ResourceDoesntExist/, tx);
- });
-
- it('[negative]: Cannot accept deleting resource without owner attempt do delete it', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftBob = await mintNft(
- api,
- alice,
- bob,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'pending',
- collectionIdAlice,
- nftBob,
- src,
- metadata,
- license,
- thumb,
- );
-
- const tx = acceptResourceRemoval(api, bob, collectionIdAlice, nftBob, resourceId);
- await expectTxFailure(/rmrkCore\.ResourceNotPending/, tx);
- });
-
- it('[negative]: cannot confirm the deletion of a non-existing resource', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftBob = await mintNft(
- api,
- alice,
- bob,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const tx = acceptResourceRemoval(api, bob, collectionIdAlice, nftBob, 127);
- await expectTxFailure(/rmrkCore\.ResourceDoesntExist/, tx);
- });
-
- it('[negative]: Non-owner user cannot confirm the deletion of resource', async () => {
- const collectionIdAlice = await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- );
-
- const nftAlice = await mintNft(
- api,
- alice,
- alice,
- collectionIdAlice,
- 'nft-metadata',
- );
-
- const resourceId = await addNftBasicResource(
- api,
- alice,
- 'added',
- collectionIdAlice,
- nftAlice,
- src,
- metadata,
- license,
- thumb,
- );
-
- const tx = acceptResourceRemoval(api, bob, collectionIdAlice, nftAlice, resourceId);
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/rmrkIsolation.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/rmrkIsolation.seqtest.ts
+++ /dev/null
@@ -1,225 +0,0 @@
-import {executeTransaction} from '../substrate/substrate-api';
-import {IKeyringPair} from '@polkadot/types/types';
-import {itSub, expect, usingPlaygrounds, Pallets, requirePalletsOrSkip} from '../../util';
-import {UniqueHelper} from '../../util/playgrounds/unique';
-
-let alice: IKeyringPair;
-let bob: IKeyringPair;
-
-async function createRmrkCollection(helper: UniqueHelper, sender: IKeyringPair): Promise<{uniqueId: number, rmrkId: number}> {
- const result = await helper.executeExtrinsic(sender, 'api.tx.rmrkCore.createCollection', ['metadata', null, 'symbol'], true);
-
- const uniqueId = helper.util.extractCollectionIdFromCreationResult(result);
-
- let rmrkId = null;
- result.result.events.forEach(({event: {data, method, section}}) => {
- if ((section === 'rmrkCore') && (method === 'CollectionCreated')) {
- rmrkId = parseInt(data[1].toString(), 10);
- }
- });
-
- if (rmrkId === null) {
- throw Error('No rmrkCore.CollectionCreated event was found!');
- }
-
- return {
- uniqueId,
- rmrkId,
- };
-}
-
-async function createRmrkNft(helper: UniqueHelper, sender: IKeyringPair, collectionId: number): Promise<number> {
- const result = await helper.executeExtrinsic(
- sender,
- 'api.tx.rmrkCore.mintNft',
- [
- sender.address,
- collectionId,
- sender.address,
- null,
- 'nft-metadata',
- true,
- null,
- ],
- true,
- );
-
- let rmrkNftId = null;
- result.result.events.forEach(({event: {data, method, section}}) => {
- if ((section === 'rmrkCore') && (method === 'NftMinted')) {
- rmrkNftId = parseInt(data[2].toString(), 10);
- }
- });
-
- if (rmrkNftId === null) {
- throw Error('No rmrkCore.NftMinted event was found!');
- }
-
- return rmrkNftId;
-}
-
-describe('RMRK External Integration Test', () => {
- before(async function() {
- await usingPlaygrounds(async (_helper, privateKey) => {
- alice = await privateKey('//Alice');
- });
- });
-
- itSub.ifWithPallets('Creates a new RMRK collection that is mapped to a different ID and is tagged as external', [Pallets.RmrkCore], async ({helper}) => {
- // throw away collection to bump last Unique collection ID to test ID mapping
- await helper.nft.mintCollection(alice, {tokenPrefix: 'unqt'});
-
- const collectionIds = await createRmrkCollection(helper, alice);
-
- expect(collectionIds.rmrkId).to.be.lessThan(collectionIds.uniqueId, 'collection ID mapping');
-
- const collection = (await helper.nft.getCollectionObject(collectionIds.uniqueId).getData())!; // (await getDetailedCollectionInfo(api, collectionIds.uniqueId))!;
- expect(collection.raw.readOnly, 'tagged external').to.be.true;
- });
-});
-
-describe('Negative Integration Test: External Collections, Internal Ops', () => {
- let uniqueCollectionId: number;
- let rmrkCollectionId: number;
- let rmrkNftId: number;
- let normalizedAlice: {Substrate: string};
-
- before(async function() {
- await usingPlaygrounds(async (helper, privateKey) => {
- alice = await privateKey('//Alice');
- bob = await privateKey('//Bob');
- normalizedAlice = {Substrate: helper.address.normalizeSubstrateToChainFormat(alice.address)};
-
- requirePalletsOrSkip(this, helper, [Pallets.RmrkCore]);
-
- const collectionIds = await createRmrkCollection(helper, alice);
- uniqueCollectionId = collectionIds.uniqueId;
- rmrkCollectionId = collectionIds.rmrkId;
-
- rmrkNftId = await createRmrkNft(helper, alice, rmrkCollectionId);
- });
- });
-
- itSub.ifWithPallets('[Negative] Forbids Unique operations with an external collection, handled by dispatch_call', [Pallets.RmrkCore], async ({helper}) => {
- // Collection item creation
-
- await expect(helper.nft.mintToken(alice, {collectionId: uniqueCollectionId, owner: {Substrate: alice.address}}), 'creating item')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- const txCreateMultipleItems = helper.getApi().tx.unique.createMultipleItems(uniqueCollectionId, normalizedAlice, [{NFT: {}}, {NFT: {}}]);
- await expect(executeTransaction(helper.getApi(), alice, txCreateMultipleItems), 'creating multiple')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.mintMultipleTokens(alice, uniqueCollectionId, [{owner: {Substrate: alice.address}}]), 'creating multiple ex')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- // Collection properties
-
- await expect(helper.nft.setProperties(alice, uniqueCollectionId, [{key: 'a', value: '1'}, {key: 'b'}]), 'setting collection properties')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.deleteProperties(alice, uniqueCollectionId, ['a']), 'deleting collection properties')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.setTokenPropertyPermissions(alice, uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]), 'setting property permissions')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- // NFT
-
- await expect(helper.nft.burnToken(alice, uniqueCollectionId, rmrkNftId, 1n), 'burning')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.burnTokenFrom(alice, uniqueCollectionId, rmrkNftId, {Substrate: alice.address}, 1n), 'burning-from')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.transferToken(alice, uniqueCollectionId, rmrkNftId, {Substrate: bob.address}), 'transferring')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.approveToken(alice, uniqueCollectionId, rmrkNftId, {Substrate: bob.address}), 'approving')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.transferTokenFrom(alice, uniqueCollectionId, rmrkNftId, {Substrate: alice.address}, {Substrate: bob.address}), 'transferring-from')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- // NFT properties
-
- await expect(helper.nft.setTokenProperties(alice, uniqueCollectionId, rmrkNftId, [{key: 'a', value: '2'}]), 'setting token properties')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.deleteTokenProperties(alice, uniqueCollectionId, rmrkNftId, ['a']))
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
- });
-
- itSub.ifWithPallets('[Negative] Forbids Unique collection operations with an external collection', [Pallets.RmrkCore], async ({helper}) => {
- await expect(helper.nft.burn(alice, uniqueCollectionId), 'destroying collection')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- // Allow list
-
- await expect(helper.nft.addToAllowList(alice, uniqueCollectionId, {Substrate: bob.address}), 'adding to allow list')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.removeFromAllowList(alice, uniqueCollectionId, {Substrate: bob.address}), 'removing from allowlist')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- // Owner / Admin / Sponsor
-
- await expect(helper.nft.changeOwner(alice, uniqueCollectionId, bob.address), 'changing owner')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.addAdmin(alice, uniqueCollectionId, {Substrate: bob.address}), 'adding admin')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.removeAdmin(alice, uniqueCollectionId, {Substrate: bob.address}), 'removing admin')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.setSponsor(alice, uniqueCollectionId, bob.address), 'setting sponsor')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.confirmSponsorship(alice, uniqueCollectionId), 'confirming sponsor')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.removeSponsor(alice, uniqueCollectionId), 'removing sponsor')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- // Limits / permissions / transfers
-
- const txSetTransfers = helper.getApi().tx.unique.setTransfersEnabledFlag(uniqueCollectionId, true);
- await expect(executeTransaction(helper.getApi(), alice, txSetTransfers), 'setting transfers enabled flag')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.setLimits(alice, uniqueCollectionId, {transfersEnabled: false}), 'setting collection limits')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
-
- await expect(helper.nft.setPermissions(alice, uniqueCollectionId, {access: 'AllowList'}), 'setting collection permissions')
- .to.be.rejectedWith(/common\.CollectionIsExternal/);
- });
-});
-
-describe('Negative Integration Test: Internal Collections, External Ops', () => {
- let collectionId: number;
- let nftId: number;
-
- before(async () => {
- await usingPlaygrounds(async (helper, privateKey) => {
- alice = await privateKey('//Alice');
- bob = await privateKey('//Bob');
-
- const collection = await helper.nft.mintCollection(alice, {tokenPrefix: 'iceo'});
- collectionId = collection.collectionId;
- nftId = (await collection.mintToken(alice)).tokenId;
- });
- });
-
- itSub.ifWithPallets('[Negative] Forbids RMRK operations with the internal collection and NFT (due to the lack of mapping)', [Pallets.RmrkCore], async ({helper}) => {
- const api = helper.getApi();
-
- const txChangeOwner = api.tx.rmrkCore.changeCollectionIssuer(collectionId, bob.address);
- await expect(executeTransaction(api, alice, txChangeOwner), 'changing collection issuer')
- .to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);
-
- const maxBurns = 10;
- const txBurnItem = api.tx.rmrkCore.burnNft(collectionId, nftId, maxBurns);
- await expect(executeTransaction(api, alice, txBurnItem), 'burning NFT').to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);
- });
-});
tests/src/.outdated/rmrk/sendNft.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/sendNft.seqtest.ts
+++ /dev/null
@@ -1,255 +0,0 @@
-import {expect} from 'chai';
-import {getApiConnection} from '../substrate/substrate-api';
-import {createCollection, mintNft, sendNft} from './util/tx';
-import {NftIdTuple} from './util/fetch';
-import {isNftChildOfAnother, expectTxFailure, requirePallets, Pallets} from './util/helpers';
-
-describe('integration test: send NFT', () => {
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- const maxNftId = 0xFFFFFFFF;
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- const createTestCollection = async (issuerUri: string) => {
- return await createCollection(
- api,
- issuerUri,
- 'nft-collection-metadata',
- null,
- 'nft-collection',
- );
- };
-
-
- it('send NFT to another user', async () => {
- const originalOwnerUri = alice;
- const newOwnerUri = bob;
-
- const collectionId = await createTestCollection(alice);
-
- const nftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'nft-metadata');
-
- await sendNft(api, 'sent', originalOwnerUri, collectionId, nftId, newOwnerUri);
- });
-
- it('[negative] unable to send non-existing NFT', async () => {
- const originalOwnerUri = alice;
- const newOwnerUri = bob;
-
- const collectionId = 0;
- const tx = sendNft(api, 'sent', originalOwnerUri, collectionId, maxNftId, newOwnerUri);
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- it('[negative] unable to send NFT by a not-an-owner', async () => {
- const originalOwnerUri = alice;
- const newOwnerUri = bob;
-
- const collectionId = await createTestCollection(alice);
-
- const nftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'nft-metadata');
-
- const tx = sendNft(api, 'sent', newOwnerUri, collectionId, nftId, newOwnerUri);
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('send NFT to another NFT (same owner)', async () => {
- const originalOwnerUri = alice;
-
- const collectionId = await createTestCollection(alice);
-
- const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);
-
- const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);
- expect(isChild).to.be.true;
- });
-
- it('[negative] send non-existing NFT to another NFT', async () => {
- const originalOwnerUri = alice;
-
- const collectionId = await createTestCollection(alice);
-
- const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');
- const childNftId = maxNftId;
-
- const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];
-
- const tx = sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
-
- const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);
- expect(isChild).to.be.false;
- });
-
- it('send NFT to another NFT (by not-an-owner)', async () => {
- const originalOwnerUri = alice;
-
- const collectionId = await createTestCollection(alice);
-
- const author = alice;
- const attacker = bob;
-
- const parentNftId = await mintNft(api, author, originalOwnerUri, collectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, author, originalOwnerUri, collectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];
-
- const tx = sendNft(api, 'sent', attacker, collectionId, childNftId, newOwnerNFT);
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
-
- const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);
- expect(isChild).to.be.false;
- });
-
- it('[negative] send NFT to non-existing NFT', async () => {
- const originalOwnerUri = alice;
-
- const collectionId = await createTestCollection(alice);
-
- const parentNftId = maxNftId;
- const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];
-
- const tx = sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
-
- const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);
- expect(isChild).to.be.false;
- });
-
- it('send NFT to another NFT owned by another user', async () => {
- const ownerAlice = alice;
- const ownerBob = bob;
-
- const aliceCollectionId = await createTestCollection(alice);
- const bobCollectionId = await createTestCollection(bob);
-
- const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];
-
- await sendNft(api, 'pending', bob, bobCollectionId, childNftId, newOwnerNFT);
- });
-
- it('[negative] unable to send NFT to itself', async () => {
- const nftOwner = alice;
- const collectionId = await createTestCollection(alice);
-
- const nftId = await mintNft(api, alice, nftOwner, collectionId, 'ouroboros-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [collectionId, nftId];
-
- const tx = sendNft(api, 'sent', alice, collectionId, nftId, newOwnerNFT);
-
- await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);
-
- const isChild = await isNftChildOfAnother(api, collectionId, nftId, newOwnerNFT);
- expect(isChild).to.be.false;
- });
-
- it('[negative] unable to send NFT to child NFT', async () => {
- const originalOwnerUri = alice;
-
- const collectionId = await createTestCollection(alice);
-
- const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');
-
- const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);
-
- const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);
- expect(isChild).to.be.true;
-
- const descendentOwner: NftIdTuple = [collectionId, childNftId];
- const tx = sendNft(api, 'sent', alice, collectionId, parentNftId, descendentOwner);
-
- await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);
- const isOuroboros = await isNftChildOfAnother(api, collectionId, parentNftId, descendentOwner);
- expect(isOuroboros).to.be.false;
- });
-
- it('[negative] unable to send NFT to descendent NFT', async () => {
- const originalOwnerUri = alice;
-
- const collectionId = await createTestCollection(alice);
-
- const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');
- const grandsonNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'grandson-nft-metadata');
-
- const ownerParentNFT: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', alice, collectionId, childNftId, ownerParentNFT);
-
- const isChild = await isNftChildOfAnother(api, collectionId, childNftId, ownerParentNFT);
- expect(isChild).to.be.true;
-
- const ownerChildNFT: NftIdTuple = [collectionId, childNftId];
- await sendNft(api, 'sent', alice, collectionId, grandsonNftId, ownerChildNFT);
-
- const isGrandson = await isNftChildOfAnother(api, collectionId, grandsonNftId, ownerChildNFT);
- expect(isGrandson).to.be.true;
-
- const ownerGrandsonNFT: NftIdTuple = [collectionId, grandsonNftId];
- const tx = sendNft(api, 'sent', alice, collectionId, parentNftId, ownerGrandsonNFT);
-
- await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);
- const isOuroboros = await isNftChildOfAnother(api, collectionId, parentNftId, ownerGrandsonNFT);
- expect(isOuroboros).to.be.false;
- });
-
- it('send nested NFT to another user', async () => {
- const originalOwner = alice;
- const newOwner = bob;
-
- const collectionId = await createTestCollection(alice);
-
- const parentNftId = await mintNft(api, alice, originalOwner, collectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, originalOwner, collectionId, 'child-nft-metadata');
-
- const parentNftTuple: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', originalOwner, collectionId, childNftId, parentNftTuple);
-
- await sendNft(api, 'sent', originalOwner, collectionId, childNftId, newOwner);
- });
-
- it('[negative] send nested NFT to another user (by a not-root-owner)', async () => {
- const originalOwner = alice;
- const newOwner = bob;
-
- const collectionId = await createTestCollection(alice);
-
- const parentNftId = await mintNft(api, alice, originalOwner, collectionId, 'parent-nft-metadata');
- const childNftId = await mintNft(api, alice, originalOwner, collectionId, 'child-nft-metadata');
-
- const parentNftTuple: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', originalOwner, collectionId, childNftId, parentNftTuple);
-
- const tx = sendNft(api, 'sent', newOwner, collectionId, childNftId, newOwner);
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/setCollectionProperty.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/setCollectionProperty.seqtest.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {createCollection, setPropertyCollection} from './util/tx';
-
-describe('integration test: set collection property', () => {
- const alice = '//Alice';
- const bob = '//Bob';
-
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- it('set collection property', async () => {
- await createCollection(
- api,
- alice,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- await setPropertyCollection(api, alice, collectionId, 'test_key', '42');
- await setPropertyCollection(api, alice, collectionId, 'test_key', '10');
- await setPropertyCollection(
- api,
- alice,
- collectionId,
- 'second_test_key',
- '111',
- );
- });
- });
-
- it('[negative] set non-existing collection property', async () => {
- const tx = setPropertyCollection(
- api,
- alice,
- 9999,
- 'test_key',
- '42',
- );
- await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx);
- });
-
- it('[negative] set property not an owner NFT collection issuer', async () => {
- await createCollection(
- api,
- bob,
- 'test-metadata',
- null,
- 'test-symbol',
- ).then(async (collectionId) => {
- const tx = setPropertyCollection(
- api,
- alice,
- collectionId,
- 'test_key',
- '42',
- );
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/setEquippableList.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/setEquippableList.seqtest.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {createCollection, createBase, setEquippableList} from './util/tx';
-
-describe("integration test: set slot's Equippable List", () => {
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- it("set Base's slot Equippable List", async () => {
- const collectionIds = [
- await createCollection(
- api,
- alice,
- 'equiplist-collection-metadata',
- null,
- 'equiplist-0',
- ),
- await createCollection(
- api,
- alice,
- 'equiplist-collection-metadata',
- null,
- 'equiplist-1',
- ),
- ];
-
- const slotId = 202;
-
- const baseId = await createBase(api, alice, 'slotpartany-base-type', 'slotpartany', [
- {
- 'SlotPart': {
- id: slotId,
- equippable: 'All',
- z: 1,
- src: 'some-fallback-slot-url',
- },
- },
- ]);
-
- await setEquippableList(api, alice, baseId, slotId, 'All');
- await setEquippableList(api, alice, baseId, slotId, 'Empty');
- await setEquippableList(api, alice, baseId, slotId, {'Custom': collectionIds});
- });
-
- it('[negative] unable to set equippable list of a slot of non-existing base', async () => {
- const maxBaseId = 0xFFFFFFFF;
- const slotId = 0;
-
- const tx = setEquippableList(api, alice, maxBaseId, slotId, 'All');
- await expectTxFailure(/rmrkEquip\.BaseDoesntExist/, tx);
- });
-
- it('[negative] unable to set equippable list by a not-an-owner', async () => {
- const slotId = 42;
-
- const baseId = await createBase(api, alice, 'slotpartany-base-type', 'slotpartany', [
- {
- 'SlotPart': {
- id: slotId,
- equippable: 'All',
- z: 1,
- src: 'some-fallback-slot-url',
- },
- },
- ]);
-
- const tx = setEquippableList(api, bob, baseId, slotId, 'All');
- await expectTxFailure(/rmrkEquip\.PermissionError/, tx);
- });
-
- it('[negative] unable to set equippable list to a fixed part', async () => {
- const fixedPartId = 42;
-
- const baseId = await createBase(api, alice, 'fixedpart-base-type', 'fixedpart', [
- {
- 'FixedPart': {
- id: fixedPartId,
- z: 0,
- src: 'fixed-part-url',
- },
- },
- ]);
-
- const tx = setEquippableList(api, alice, baseId, fixedPartId, 'All');
- await expectTxFailure(/rmrkEquip\.NoEquippableOnFixedPart/, tx);
- });
-
- it('[negative] unable to set equippable list to non-existing slot', async () => {
- const slotId = 777;
- const maxSlotId = 0xFFFFFFFF;
-
- const baseId = await createBase(api, alice, 'slotpartany-base-type', 'slotpartany', [
- {
- 'SlotPart': {
- id: slotId,
- equippable: 'All',
- z: 1,
- src: 'some-fallback-slot-url',
- },
- },
- ]);
-
- const tx = setEquippableList(api, alice, baseId, maxSlotId, 'All');
- await expectTxFailure(/rmrkEquip\.PartDoesntExist/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/setNftProperty.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/setNftProperty.seqtest.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {NftIdTuple} from './util/fetch';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {createCollection, mintNft, sendNft, setNftProperty} from './util/tx';
-
-describe('integration test: set NFT property', () => {
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- const createTestCollection = async (issuerUri: string) => {
- return await createCollection(
- api,
- issuerUri,
- 'setprop-nft-collection-metadata',
- null,
- 'setprop',
- );
- };
-
- it('set NFT property', async () => {
- const ownerAlice = alice;
-
- const collectionId = await createTestCollection(alice);
- const nftId = await mintNft(api, alice, ownerAlice, collectionId, 'prop-nft');
-
- await setNftProperty(api, alice, collectionId, nftId, 'test-key', 'test-key-value');
- await setNftProperty(api, alice, collectionId, nftId, 'test-key', 'updated-key-value');
- await setNftProperty(api, alice, collectionId, nftId, 'second-test-key', 'second-test-key-value');
- });
-
- it('[negative] unable to set a property of non-existing NFT', async () => {
- const collectionId = 0;
- const maxNftId = 0xFFFFFFFF;
-
- const tx = setNftProperty(api, alice, collectionId, maxNftId, 'test-key', 'test-value');
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- it('[negative] unable to set a property by not-an-owner', async () => {
- const ownerAlice = alice;
-
- const collectionId = await createTestCollection(alice);
- const nftId = await mintNft(api, alice, ownerAlice, collectionId, 'prop-nft');
-
- const tx = setNftProperty(api, bob, collectionId, nftId, 'test-key', 'test-key-value');
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('set a property to nested NFT', async () => {
- const ownerAlice = alice;
-
- const collectionId = await createTestCollection(alice);
- const parentNftId = await mintNft(api, alice, ownerAlice, collectionId, 'prop-parent-nft');
- const childNftId = await mintNft(api, alice, ownerAlice, collectionId, 'prop-child-nft');
-
- const ownerNft: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', ownerAlice, collectionId, childNftId, ownerNft);
-
- await setNftProperty(api, alice, collectionId, childNftId, 'test-key', 'test-key-value');
- });
-
- it('[negative] set a property to nested NFT (by not-root-owner)', async () => {
- const ownerAlice = alice;
-
- const collectionId = await createTestCollection(alice);
- const parentNftId = await mintNft(api, alice, ownerAlice, collectionId, 'prop-parent-nft');
- const childNftId = await mintNft(api, alice, ownerAlice, collectionId, 'prop-child-nft');
-
- const ownerNft: NftIdTuple = [collectionId, parentNftId];
-
- await sendNft(api, 'sent', ownerAlice, collectionId, childNftId, ownerNft);
-
- const tx = setNftProperty(api, bob, collectionId, childNftId, 'test-key', 'test-key-value');
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/setResourcePriorities.seqtest.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/setResourcePriorities.seqtest.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
-import {mintNft, createCollection, setResourcePriorities} from './util/tx';
-
-describe('integration test: set NFT resource priorities', () => {
- let api: any;
- before(async function () {
- api = await getApiConnection();
- await requirePallets(this, [Pallets.RmrkCore]);
- });
-
- const alice = '//Alice';
- const bob = '//Bob';
-
- const createTestCollection = (issuerUri: string) => {
- return createCollection(
- api,
- issuerUri,
- 'resprio-collection-metadata',
- null,
- 'resprio',
- );
- };
-
- it('set NFT resource priorities', async () => {
- const owner = alice;
-
- const collectionId = await createTestCollection(alice);
- const nftId = await mintNft(api, alice, owner, collectionId, 'resprio-nft-metadata');
-
- await setResourcePriorities(api, alice, collectionId, nftId, [10, 42]);
- });
-
- it('[negative] set NFT resource priorities by a not-an-owner', async () => {
- const owner = alice;
- const attacker = bob;
-
- const collectionId = await createTestCollection(alice);
- const nftId = await mintNft(api, alice, owner, collectionId, 'resprio-nft-metadata');
-
- const tx = setResourcePriorities(api, attacker, collectionId, nftId, [10, 42]);
-
- await expectTxFailure(/rmrkCore\.NoPermission/, tx);
- });
-
- it('[negative] set NFT resource priorities to non-existing NFT', async () => {
- const collectionId = 0;
- const maxNftId = 0xFFFFFFFF;
-
- const tx = setResourcePriorities(api, alice, collectionId, maxNftId, [10, 42]);
-
- await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);
- });
-
- after(async() => { await api.disconnect(); });
-});
tests/src/.outdated/rmrk/util/fetch.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/util/fetch.ts
+++ /dev/null
@@ -1,130 +0,0 @@
-import {ApiPromise} from '@polkadot/api';
-import type {Option} from '@polkadot/types-codec';
-import type {
- RmrkTraitsCollectionCollectionInfo as Collection,
- RmrkTraitsNftNftInfo as Nft,
- RmrkTraitsResourceResourceInfo as Resource,
- RmrkTraitsBaseBaseInfo as Base,
- RmrkTraitsPartPartType as PartType,
- RmrkTraitsNftNftChild as NftChild,
- RmrkTraitsTheme as Theme,
- RmrkTraitsPropertyPropertyInfo as Property,
-} from '../../../interfaces/default/types'; // '@polkadot/types/lookup';
-import '../../../interfaces/augment-api';
-import '../../../interfaces/augment-api-query';
-import privateKey from '../../substrate/privateKey';
-
-export type NftIdTuple = [number, number];
-
-export async function getCollectionsCount(api: ApiPromise): Promise<number> {
- return (await api.rpc.rmrk.lastCollectionIdx()).toNumber();
-}
-
-export function getCollection(api: ApiPromise, id: number): Promise<Option<Collection>> {
- return api.rpc.rmrk.collectionById(id);
-}
-
-export async function getOwnedNfts(
- api: ApiPromise,
- ownerUri: string,
- collectionId: number,
-): Promise<number[]> {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const owner = privateKey(ownerUri, Number(ss58Format));
-
- return (await api.rpc.rmrk.accountTokens(owner.address, collectionId))
- .map((value) => value.toNumber());
-}
-
-export function getNft(api: ApiPromise, collectionId: number, nftId: number): Promise<Option<Nft>> {
- return api.rpc.rmrk.nftById(collectionId, nftId);
-}
-
-export async function getCollectionProperties(api: ApiPromise, collectionId: number): Promise<Property[]> {
- return (await api.rpc.rmrk.collectionProperties(collectionId)).toArray();
-}
-
-export async function getNftProperties(api: ApiPromise, collectionId: number, nftId: number): Promise<Property[]> {
- return (await api.rpc.rmrk.nftProperties(collectionId, nftId)).toArray();
-}
-
-export async function getChildren(
- api: ApiPromise,
- collectionId: number,
- nftId: number,
-): Promise<NftChild[]> {
- return (await api.rpc.rmrk.nftChildren(collectionId, nftId)).toArray();
-}
-
-export function getBase(api: ApiPromise, baseId: number): Promise<Option<Base>> {
- return api.rpc.rmrk.base(baseId);
-}
-
-export async function getParts(api: ApiPromise, baseId: number): Promise<PartType[]> {
- return (await api.rpc.rmrk.baseParts(baseId)).toArray();
-}
-
-export async function getEquippableList(
- api: ApiPromise,
- baseId: number,
- slotId: number,
-): Promise<'All' | 'Empty' | { 'Custom': number[] } | null> {
- const parts = await getParts(api, baseId);
-
- const part = parts.find((part) => {
- if (part.isSlotPart) {
- return part.asSlotPart.id.toNumber() === slotId;
- } else {
- return false;
- }
- });
-
- if (part) {
- const slot = part.asSlotPart;
- if (slot.equippable.isCustom) {
- return {
- 'Custom': slot.equippable.asCustom
- .toArray()
- .map((collectionId) => collectionId.toNumber()),
- };
- } else if (slot.equippable.isAll) {
- return 'All';
- } else {
- return 'Empty';
- }
- } else {
- return null;
- }
-}
-
-export async function getResourcePriority(
- api: ApiPromise,
- collectionId: number,
- nftId: number,
- resourceId: number,
-): Promise<number> {
- return (await api.rpc.rmrk.nftResourcePriority(collectionId, nftId, resourceId))
- .unwrap().toNumber();
-}
-
-export async function getThemeNames(api: ApiPromise, baseId: number): Promise<string[]> {
- return (await api.rpc.rmrk.themeNames(baseId))
- .map((name) => name.toUtf8());
-}
-
-export function getTheme(
- api: ApiPromise,
- baseId: number,
- themeName: string,
- keys: string[] | null = null,
-): Promise<Option<Theme>> {
- return api.rpc.rmrk.themes(baseId, themeName, keys);
-}
-
-export async function getResources(
- api: ApiPromise,
- collectionId: number,
- nftId: number,
-): Promise<Resource[]> {
- return (await api.rpc.rmrk.nftResources(collectionId, nftId)).toArray();
-}
tests/src/.outdated/rmrk/util/helpers.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/util/helpers.ts
+++ /dev/null
@@ -1,249 +0,0 @@
-import {ApiPromise} from '@polkadot/api';
-import {
- RmrkTraitsNftAccountIdOrCollectionNftTuple as NftOwner,
- RmrkTraitsPropertyPropertyInfo as Property,
- RmrkTraitsResourceResourceInfo as ResourceInfo,
-} from '@polkadot/types/lookup';
-import type {EventRecord} from '@polkadot/types/interfaces';
-import type {GenericEventData} from '@polkadot/types';
-import privateKey from '../../substrate/privateKey';
-import {NftIdTuple, getChildren, getOwnedNfts, getCollectionProperties, getNftProperties, getResources} from './fetch';
-import chaiAsPromised from 'chai-as-promised';
-import chai from 'chai';
-import {getApiConnection} from '../../substrate/substrate-api';
-import {Context} from 'mocha';
-
-chai.use(chaiAsPromised);
-const expect = chai.expect;
-
-interface TxResult<T> {
- success: boolean;
- successData: T | null;
-}
-
-export enum Pallets {
- Inflation = 'inflation',
- RmrkCore = 'rmrkcore',
- RmrkEquip = 'rmrkequip',
- ReFungible = 'refungible',
- Fungible = 'fungible',
- NFT = 'nonfungible',
- Scheduler = 'scheduler',
- AppPromotion = 'apppromotion',
-}
-
-let modulesNames: any;
-export function getModuleNames(api: ApiPromise): string[] {
- if (typeof modulesNames === 'undefined')
- modulesNames = api.runtimeMetadata.asLatest.pallets.map(m => m.name.toString().toLowerCase());
- return modulesNames;
-}
-
-export async function missingRequiredPallets(requiredPallets: string[]): Promise<string[]> {
- const api = await getApiConnection();
- const pallets = getModuleNames(api);
- await api.disconnect();
-
- return requiredPallets.filter(p => !pallets.includes(p));
-}
-
-export async function requirePallets(mocha: Context, requiredPallets: string[]) {
- const missingPallets = await missingRequiredPallets(requiredPallets);
-
- if (missingPallets.length > 0) {
- const skippingTestMsg = `\tSkipping test "${mocha.test?.title}".`;
- const missingPalletsMsg = `\tThe following pallets are missing:\n\t- ${missingPallets.join('\n\t- ')}`;
- const skipMsg = `${skippingTestMsg}\n${missingPalletsMsg}`;
-
- console.error('\x1b[38:5:208m%s\x1b[0m', skipMsg);
-
- mocha.skip();
- }
-}
-
-export function makeNftOwner(api: ApiPromise, owner: string | NftIdTuple): NftOwner {
- const isNftSending = (typeof owner !== 'string');
-
- if (isNftSending) {
- return api.createType('RmrkTraitsNftAccountIdOrCollectionNftTuple', {
- 'CollectionAndNftTuple': owner,
- });
- } else {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- return api.createType('RmrkTraitsNftAccountIdOrCollectionNftTuple', {
- AccountId: privateKey(owner, Number(ss58Format)).address,
- });
- }
-}
-
-export async function isNftOwnedBy(
- api: ApiPromise,
- owner: string | NftIdTuple,
- collectionId: number,
- nftId: number,
-): Promise<boolean> {
- if (typeof owner === 'string') {
- return (await getOwnedNfts(api, owner, collectionId))
- .find(ownedNftId => {
- return ownedNftId === nftId;
- }) !== undefined;
- } else {
- return (await getChildren(api, owner[0], owner[1]))
- .find(child => {
- return collectionId === child.collectionId.toNumber()
- && nftId === child.nftId.toNumber();
- }) !== undefined;
- }
-}
-
-export function isPropertyExists(
- key: string,
- value: string,
- props: Property[],
-): boolean {
- let isPropFound = false;
- for (let i = 0; i < props.length && !isPropFound; i++) {
- const fetchedProp = props[i];
-
- isPropFound = fetchedProp.key.eq(key)
- && fetchedProp.value.eq(value);
- }
-
- return isPropFound;
-}
-
-export async function isCollectionPropertyExists(
- api: ApiPromise,
- collectionId: number,
- key: string,
- value: string,
-): Promise<boolean> {
- const fetchedProps = await getCollectionProperties(api, collectionId);
- return isPropertyExists(key, value, fetchedProps);
-}
-
-export async function isNftPropertyExists(
- api: ApiPromise,
- collectionId: number,
- nftId: number,
- key: string,
- value: string,
-): Promise<boolean> {
- const fetchedProps = await getNftProperties(api, collectionId, nftId);
- return isPropertyExists(key, value, fetchedProps);
-}
-
-export async function isNftChildOfAnother(
- api: ApiPromise,
- collectionId: number,
- nftId: number,
- parentNft: NftIdTuple,
-): Promise<boolean> {
- return (await getChildren(api, parentNft[0], parentNft[1]))
- .find((childNft) => {
- return childNft.collectionId.toNumber() === collectionId
- && childNft.nftId.toNumber() === nftId;
- }) !== undefined;
-}
-
-export function isTxResultSuccess(events: EventRecord[]): boolean {
- let success = false;
-
- events.forEach(({event: {method}}) => {
- if (method == 'ExtrinsicSuccess') {
- success = true;
- }
- });
-
- return success;
-}
-
-export async function expectTxFailure(expectedError: RegExp, promise: Promise<any>) {
- await expect(promise).to.be.rejectedWith(expectedError);
-}
-
-export function extractTxResult<T>(
- events: EventRecord[],
- expectSection: string,
- expectMethod: string,
- extractAction: (data: any) => T,
-): TxResult<T> {
- let success = false;
- let successData = null;
- events.forEach(({event: {data, method, section}}) => {
- if (method == 'ExtrinsicSuccess') {
- success = true;
- } else if ((expectSection == section) && (expectMethod == method)) {
- successData = extractAction(data);
- }
- });
- const result: TxResult<T> = {
- success,
- successData,
- };
- return result;
-}
-
-export function extractRmrkCoreTxResult<T>(
- events: EventRecord[],
- expectMethod: string,
- extractAction: (data: GenericEventData) => T,
-): TxResult<T> {
- return extractTxResult(events, 'rmrkCore', expectMethod, extractAction);
-}
-
-export function extractRmrkEquipTxResult<T>(
- events: EventRecord[],
- expectMethod: string,
- extractAction: (data: GenericEventData) => T,
-): TxResult<T> {
- return extractTxResult(events, 'rmrkEquip', expectMethod, extractAction);
-}
-
-export async function findResourceById(
- api: ApiPromise,
- collectionId: number,
- nftId: number,
- resourceId: number,
-): Promise<ResourceInfo> {
- const resources = await getResources(api, collectionId, nftId);
-
- let resource = null;
-
- for (let i = 0; i < resources.length; i++) {
- const res = resources[i];
-
- if (res.id.eq(resourceId)) {
- resource = res;
- break;
- }
- }
-
- return resource!;
-}
-
-export async function getResourceById(
- api: ApiPromise,
- collectionId: number,
- nftId: number,
- resourceId: number,
-): Promise<ResourceInfo> {
- const resource = await findResourceById(
- api,
- collectionId,
- nftId,
- resourceId,
- );
-
- expect(resource !== null, 'Error: resource was not found').to.be.true;
-
- return resource!;
-}
-
-export function checkResourceStatus(
- resource: ResourceInfo,
- expectedStatus: 'pending' | 'added',
-) {
- expect(resource.pending.isTrue, `Error: added resource should be ${expectedStatus}`)
- .to.be.equal(expectedStatus === 'pending');
-}
tests/src/.outdated/rmrk/util/tx.tsdiffbeforeafterboth--- a/tests/src/.outdated/rmrk/util/tx.ts
+++ /dev/null
@@ -1,1132 +0,0 @@
-import {ApiPromise} from '@polkadot/api';
-import {Bytes, Option, u32, Vec} from '@polkadot/types-codec';
-import {
- RmrkTraitsNftAccountIdOrCollectionNftTuple as NftOwner, RmrkTraitsPartEquippableList as EquippableList,
- RmrkTraitsPartPartType as PartType, RmrkTraitsResourceBasicResource as BasicResource,
- RmrkTraitsResourceComposableResource as ComposableResource, RmrkTraitsResourceResourceInfo as ResourceInfo, RmrkTraitsResourceSlotResource as SlotResource, RmrkTraitsTheme as Theme,
-} from '@polkadot/types/lookup';
-import {IKeyringPair} from '@polkadot/types/types';
-import chai from 'chai';
-import chaiAsPromised from 'chai-as-promised';
-import '../../../interfaces/augment-api';
-import privateKey from '../../substrate/privateKey';
-import {executeTransaction} from '../../substrate/substrate-api';
-import {
- getBase,
- getCollection,
- getCollectionsCount,
- getEquippableList,
- getNft,
- getParts,
- getResources,
- getResourcePriority,
- getTheme,
- NftIdTuple,
-} from './fetch';
-import {
- extractRmrkCoreTxResult,
- extractRmrkEquipTxResult, isCollectionPropertyExists, isNftOwnedBy, isNftPropertyExists, isTxResultSuccess, makeNftOwner,
- findResourceById, getResourceById, checkResourceStatus,
-} from './helpers';
-
-chai.use(chaiAsPromised);
-const expect = chai.expect;
-
-export async function createCollection(
- api: ApiPromise,
- issuerUri: string,
- metadata: string,
- max: number | null,
- symbol: string,
-): Promise<number> {
- let collectionId = 0;
-
- const oldCollectionCount = await getCollectionsCount(api);
- const maxOptional = max ? max.toString() : null;
- const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const tx = api.tx.rmrkCore.createCollection(metadata, maxOptional, symbol);
- const events = await executeTransaction(api, issuer, tx);
-
- const collectionResult = extractRmrkCoreTxResult(events, 'CollectionCreated', (data) => {
- return parseInt(data[1].toString(), 10);
- });
- expect(collectionResult.success, 'Error: unable to create a collection').to.be.true;
-
- collectionId = collectionResult.successData!;
-
- const newCollectionCount = await getCollectionsCount(api);
- const collectionOption = await getCollection(api, collectionId);
-
- expect(newCollectionCount).to.be.equal(oldCollectionCount + 1, 'Error: NFT collection count should increase');
- expect(collectionOption.isSome, 'Error: unable to fetch created NFT collection').to.be.true;
-
- const collection = collectionOption.unwrap();
-
- expect(collection.metadata.toUtf8()).to.be.equal(metadata, 'Error: Invalid NFT collection metadata');
- expect(collection.max.isSome).to.be.equal(max !== null, 'Error: Invalid NFT collection max');
-
- if (collection.max.isSome) {
- expect(collection.max.unwrap().toNumber()).to.be.equal(max, 'Error: Invalid NFT collection max');
- }
- expect(collection.symbol.toUtf8()).to.be.equal(symbol, "Error: Invalid NFT collection's symbol");
- expect(collection.nftsCount.toNumber()).to.be.equal(0, "Error: NFT collection shoudn't have any tokens");
- expect(collection.issuer.toString()).to.be.equal(issuer.address, 'Error: Invalid NFT collection issuer');
-
- return collectionId;
-}
-
-export async function changeIssuer(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- newIssuer: string,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const alice = privateKey(issuerUri, Number(ss58Format));
- const bob = privateKey(newIssuer, Number(ss58Format));
-
- // This is only needed when RMRK uses `uniques` pallet by Parity
- // let tx = api.tx.uniques.setAcceptOwnership(
- // api.createType('Option<u32>', collectionId)
- // );
- // let events = await executeTransaction(api, bob, tx);
- // expect(isTxResultSuccess(events), 'Error: Unable to accept ownership').to.be.true;
-
- const tx = api.tx.rmrkCore.changeCollectionIssuer(collectionId, bob.address);
- const events = await executeTransaction(api, alice, tx);
- const changeIssuerResult = extractRmrkCoreTxResult(events, 'IssuerChanged', (data) => {
- return parseInt(data[2].toString(), 10);
- });
- expect(changeIssuerResult.success, 'Error: Unable to change NFT collection issuer').to.be.true;
- expect(changeIssuerResult.successData!, 'Error: Invalid collection id after changing the issuer')
- .to.be.eq(collectionId);
-
- await getCollection(api, collectionId).then((collectionOption) => {
- const collection = collectionOption.unwrap();
- expect(collection.issuer.toString())
- .to.be.deep.eq(bob.address, 'Error: Invalid NFT collection issuer');
- });
-}
-
-export async function deleteCollection(
- api: ApiPromise,
- issuerUri: string,
- collectionId: string,
-): Promise<number> {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const tx = api.tx.rmrkCore.destroyCollection(collectionId);
- const events = await executeTransaction(api, issuer, tx);
-
- const collectionTxResult = extractRmrkCoreTxResult(
- events,
- 'CollectionDestroy',
- (data) => {
- return parseInt(data[1].toString(), 10);
- },
- );
- expect(collectionTxResult.success, 'Error: Unable to delete NFT collection').to.be.true;
-
- const collection = await getCollection(
- api,
- parseInt(collectionId, 10),
- );
- expect(collection.isEmpty, 'Error: NFT collection should be deleted').to.be.true;
-
- return 0;
-}
-
-export async function negativeDeleteCollection(
- api: ApiPromise,
- issuerUri: string,
- collectionId: string,
-): Promise<number> {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const tx = api.tx.rmrkCore.destroyCollection(collectionId);
- await expect(executeTransaction(api, issuer, tx)).to.be.rejected;
-
- return 0;
-}
-
-export async function setNftProperty(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- nftId: number,
- key: string,
- value: string,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const nftIdOpt = api.createType('Option<u32>', nftId);
- const tx = api.tx.rmrkCore.setProperty(
- collectionId,
- nftIdOpt,
- key,
- value,
- );
- const events = await executeTransaction(api, issuer, tx);
-
- const propResult = extractRmrkCoreTxResult(events, 'PropertySet', (data) => {
- return {
- collectionId: parseInt(data[0].toString(), 10),
- nftId: data[1] as Option<u32>,
- key: data[2] as Bytes,
- value: data[3] as Bytes,
- };
- });
-
- expect(propResult.success, 'Error: Unable to set NFT property').to.be.true;
- const eventData = propResult.successData!;
- const eventDescription = 'from set NFT property event';
-
- expect(eventData.collectionId, 'Error: Invalid collection ID ' + eventDescription)
- .to.be.equal(collectionId);
-
- expect(eventData.nftId.eq(nftIdOpt), 'Error: Invalid NFT ID ' + eventDescription)
- .to.be.true;
-
- expect(eventData.key.eq(key), 'Error: Invalid property key ' + eventDescription)
- .to.be.true;
-
- expect(eventData.value.eq(value), 'Error: Invalid property value ' + eventDescription)
- .to.be.true;
-
- expect(
- await isNftPropertyExists(api, collectionId, nftId, key, value),
- 'Error: NFT property is not found',
- ).to.be.true;
-}
-
-export async function mintNft(
- api: ApiPromise,
- issuerUri: string,
- ownerUri: string | null,
- collectionId: number,
- metadata: string,
- recipientUri: string | null = null,
- royalty: number | null = null,
- transferable = true,
- resources: {basic?: any, composable?: any, slot?: any}[] | null = null,
-): Promise<number> {
- let nftId = 0;
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const owner = ownerUri ? privateKey(ownerUri, Number(ss58Format)).address : null;
- const recipient = recipientUri ? privateKey(recipientUri, Number(ss58Format)).address : null;
- const royaltyOptional = royalty ? royalty.toString() : null;
-
- const actualOwnerUri = ownerUri ? ownerUri : issuerUri;
- const actualOwnerAddress = ownerUri ? owner : issuer.address;
-
- const collectionOpt = await getCollection(api, collectionId);
-
- const tx = api.tx.rmrkCore.mintNft(
- owner,
- collectionId,
- recipient,
- royaltyOptional,
- metadata,
- transferable,
- resources as any,
- );
-
- const events = await executeTransaction(api, issuer, tx);
- const nftResult = extractRmrkCoreTxResult(events, 'NftMinted', (data) => {
- return parseInt(data[2].toString(), 10);
- });
-
- expect(nftResult.success, 'Error: Unable to mint NFT').to.be.true;
-
- const newCollectionNftsCount = (await getCollection(api, collectionId))
- .unwrap()
- .nftsCount
- .toNumber();
-
- const oldCollectionNftsCount = collectionOpt
- .unwrap()
- .nftsCount.toNumber();
-
- expect(newCollectionNftsCount, 'Error: NFTs count should increase')
- .to.be.equal(oldCollectionNftsCount + 1);
-
- nftId = nftResult.successData!;
-
- const nftOption = await getNft(api, collectionId, nftId);
-
- expect(nftOption.isSome, 'Error: Unable to fetch created NFT').to.be.true;
-
- const nft = nftOption.unwrap();
-
- expect(nft.owner.isAccountId, 'Error: NFT owner should be some user').to.be.true;
- expect(nft.owner.asAccountId.toString()).to.be.equal(actualOwnerAddress, 'Error: Invalid NFT owner');
-
- const isOwnedInUniques = await isNftOwnedBy(api, actualOwnerUri, collectionId, nftId);
- expect(isOwnedInUniques, `Error: created NFT is not actually owned by ${ownerUri}`)
- .to.be.true;
-
- if (recipient === null && royalty === null) {
- expect(nft.royalty.isNone, 'Error: Invalid NFT recipient')
- .to.be.true;
- } else {
- expect(nft.royalty.isSome, 'Error: NFT royalty not found')
- .to.be.true;
-
- const nftRoyalty = nft.royalty.unwrap();
- expect(nftRoyalty.recipient.eq(recipient), 'Error: Invalid NFT recipient')
- .to.be.true;
-
- expect(nftRoyalty.amount.eq(royalty), 'Error: Invalid NFT royalty')
- .to.be.true;
- }
-
- expect(nft.metadata.toUtf8()).to.be.equal(metadata, 'Error: Invalid NFT metadata');
-
- const nftResources = await getResources(api, collectionId, nftId);
- if (resources == null) {
- expect(nftResources, 'Error: Invalid NFT resources').to.be.empty;
- } else {
- expect(nftResources.length).to.be.equal(resources.length);
-
- for (let i = 0; i < resources.length; i++) {
- let successFindingResource = false;
- const resource = resources[i];
- // try to find the matching resource from the query
- for (let j = 0; j < nftResources.length && !successFindingResource; j++) {
- const nftResourceData = nftResources[j].toHuman();
- expect(
- Object.prototype.hasOwnProperty.call(nftResourceData, 'resource'),
- `Error: Corrupted resource data on resource #${i}`,
- ).to.be.true;
- const nftResource = nftResourceData.resource!;
- type NftResourceKey = keyof typeof nftResource;
-
- let typedResource = null;
- let typedNftResource = null;
-
- if (resource.basic && Object.prototype.hasOwnProperty.call(nftResource, 'Basic')) {
- typedResource = resource.basic!;
- typedNftResource = nftResource['Basic' as NftResourceKey]!;
- } else if (resource.composable && Object.prototype.hasOwnProperty.call(nftResource, 'Composable')) {
- typedResource = resource.composable!;
- typedNftResource = nftResource['Composable' as NftResourceKey]! as any;
- if (typedResource.parts != undefined && typedResource.parts.toString() != typedNftResource.parts.toString()
- || typedResource.base != typedNftResource.base && typedResource.base != undefined) {
- continue;
- }
- } else if (resource.slot && Object.prototype.hasOwnProperty.call(nftResource, 'Slot')) {
- typedResource = resource.slot!;
- typedNftResource = nftResource['Slot' as NftResourceKey]! as any;
- if (typedResource.slot != typedNftResource.slot && typedResource.slot != undefined
- || typedResource.base != typedNftResource.base && typedResource.base != undefined) {
- continue;
- }
- } else {
- continue;
- }
-
- if (typedResource.src != typedNftResource.src
- || typedResource.metadata != typedNftResource.metadata
- || typedResource.thumb != typedNftResource.thumb
- || typedResource.license != typedNftResource.license
- ) {
- continue;
- }
-
- // do final checks since this is now established to be the resource we seek
- expect(nftResourceData.pending, `Error: Resource #${i} is pending`).to.be.false;
- expect(nftResourceData.pendingRemoval, `Error: Resource #${i} is pending removal`).to.be.false;
-
- // remove the matching resource from the resources we check
- nftResources.splice(j, 1);
- successFindingResource = true;
- }
-
- expect(successFindingResource, `Error: Couldn't find resource #${i}'s counterpart among the returned`).to.be.true;
- }
- }
-
- return nftId;
-}
-
-export async function sendNft(
- api: ApiPromise,
- expectedStatus: 'pending' | 'sent',
- originalOwnerUri: string,
- collectionId: number,
- nftId: number,
- newOwner: string | NftIdTuple,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const originalOwner = privateKey(originalOwnerUri, Number(ss58Format));
- const newOwnerObj = makeNftOwner(api, newOwner);
-
- const nftBeforeSendingOpt = await getNft(api, collectionId, nftId);
-
- const tx = api.tx.rmrkCore.send(collectionId, nftId, newOwnerObj);
- const events = await executeTransaction(api, originalOwner, tx);
-
- const sendResult = extractRmrkCoreTxResult(events, 'NFTSent', (data) => {
- return {
- dstOwner: data[1] as NftOwner,
- collectionId: parseInt(data[2].toString(), 10),
- nftId: parseInt(data[3].toString(), 10),
- };
- });
-
- expect(sendResult.success, 'Error: Unable to send NFT').to.be.true;
- const sendData = sendResult.successData!;
-
- expect(sendData.dstOwner.eq(newOwnerObj), 'Error: Invalid target user (from event data)')
- .to.be.true;
-
- expect(sendData.collectionId)
- .to.be.equal(collectionId, 'Error: Invalid collection ID (from event data)');
-
- expect(sendData.nftId).to.be.equal(nftId, 'Error: Invalid NFT ID (from event data)');
-
- expect(nftBeforeSendingOpt.isSome, 'Error: Unable to fetch NFT before sending').to.be.true;
-
- const nftBeforeSending = nftBeforeSendingOpt.unwrap();
-
- const nftAfterSendingOpt = await getNft(api, collectionId, nftId);
-
- expect(nftAfterSendingOpt.isSome, 'Error: Unable to fetch NFT after sending').to.be.true;
-
- const nftAfterSending = nftAfterSendingOpt.unwrap();
-
- const isOwnedByNewOwner = await isNftOwnedBy(api, newOwner, collectionId, nftId);
- const isPending = expectedStatus === 'pending';
-
- expect(
- isOwnedByNewOwner,
- `Error: The NFT should be owned by ${newOwner.toString()}`,
- ).to.be.true;
-
- expect(nftAfterSending.royalty.eq(nftBeforeSending.royalty), 'Error: Invalid NFT royalty after sending')
- .to.be.true;
-
- expect(nftAfterSending.metadata.eq(nftBeforeSending.metadata), 'Error: Invalid NFT metadata after sending')
- .to.be.true;
-
- expect(nftAfterSending.equipped.eq(nftBeforeSending.equipped), 'Error: Invalid NFT equipped status after sending')
- .to.be.true;
-
- expect(nftAfterSending.pending.eq(isPending), 'Error: Invalid NFT pending state')
- .to.be.true;
-}
-
-export async function acceptNft(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- nftId: number,
- newOwner: string | [number, number],
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const newOwnerObj = makeNftOwner(api, newOwner);
-
- const nftBeforeOpt = await getNft(api, collectionId, nftId);
-
- const tx = api.tx.rmrkCore.acceptNft(collectionId, nftId, newOwnerObj);
- const events = await executeTransaction(api, issuer, tx);
-
- const acceptResult = extractRmrkCoreTxResult(events, 'NFTAccepted', (data) => {
- return {
- recipient: data[1] as NftOwner,
- collectionId: parseInt(data[2].toString(), 10),
- nftId: parseInt(data[3].toString(), 10),
- };
- });
-
- expect(acceptResult.success, 'Error: Unable to accept NFT').to.be.true;
- const acceptData = acceptResult.successData!;
-
- expect(acceptData.recipient.eq(newOwnerObj), 'Error: Invalid NFT recipient (from event data)')
- .to.be.true;
-
- expect(acceptData.collectionId)
- .to.be.equal(collectionId, 'Error: Invalid collection ID (from event data)');
-
- expect(acceptData.nftId)
- .to.be.equal(nftId, 'Error: Invalid NFT ID (from event data)');
-
- const nftBefore = nftBeforeOpt.unwrap();
-
- const isPendingBeforeAccept = nftBefore.pending.isTrue;
-
- const nftAfter = (await getNft(api, collectionId, nftId)).unwrap();
- const isPendingAfterAccept = nftAfter.pending.isTrue;
-
- expect(isPendingBeforeAccept, 'Error: NFT should be pending to be accepted')
- .to.be.true;
-
- expect(isPendingAfterAccept, 'Error: NFT should NOT be pending after accept')
- .to.be.false;
-
- const isOwnedInUniques = await isNftOwnedBy(api, newOwner, collectionId, nftId);
- expect(isOwnedInUniques, `Error: created NFT is not actually owned by ${newOwner.toString()}`)
- .to.be.true;
-}
-
-export async function rejectNft(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- nftId: number,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const nftBeforeOpt = await getNft(api, collectionId, nftId);
-
- const tx = api.tx.rmrkCore.rejectNft(collectionId, nftId);
- const events = await executeTransaction(api, issuer, tx);
- const rejectResult = extractRmrkCoreTxResult(events, 'NFTRejected', (data) => {
- return {
- collectionId: parseInt(data[1].toString(), 10),
- nftId: parseInt(data[2].toString(), 10),
- };
- });
-
- const rejectData = rejectResult.successData!;
-
- expect(rejectData.collectionId)
- .to.be.equal(collectionId, 'Error: Invalid collection ID (from event data)');
-
- expect(rejectData.nftId)
- .to.be.equal(nftId, 'Error: Invalid NFT ID (from event data)');
-
- const nftBefore = nftBeforeOpt.unwrap();
-
- const isPendingBeforeReject = nftBefore.pending.isTrue;
-
- const nftAfter = await getNft(api, collectionId, nftId);
-
- expect(isPendingBeforeReject, 'Error: NFT should be pending to be rejected')
- .to.be.true;
-
- expect(nftAfter.isNone, 'Error: NFT should be burned after reject')
- .to.be.true;
-}
-
-export async function createBase(
- api: ApiPromise,
- issuerUri: string,
- baseType: string,
- symbol: string,
- parts: object[],
-): Promise<number> {
- let baseId = 0;
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const partTypes = api.createType('Vec<RmrkTraitsPartPartType>', parts) as Vec<PartType>;
-
- const tx = api.tx.rmrkEquip.createBase(baseType, symbol, partTypes);
- const events = await executeTransaction(api, issuer, tx);
-
- const baseResult = extractRmrkEquipTxResult(events, 'BaseCreated', (data) => {
- return parseInt(data[1].toString(), 10);
- });
-
- expect(baseResult.success, 'Error: Unable to create Base')
- .to.be.true;
-
- baseId = baseResult.successData!;
- const baseOptional = await getBase(api, baseId);
-
- expect(baseOptional.isSome, 'Error: Unable to fetch created Base')
- .to.be.true;
-
- const base = baseOptional.unwrap();
- const baseParts = await getParts(api, baseId);
-
- expect(base.issuer.toString()).to.be.equal(issuer.address, 'Error: Invalid Base issuer');
- expect(base.baseType.toUtf8()).to.be.equal(baseType, 'Error: Invalid Base type');
- expect(base.symbol.toUtf8()).to.be.equal(symbol, 'Error: Invalid Base symbol');
- expect(partTypes.eq(baseParts), 'Error: Received invalid base parts').to.be.true;
-
- return baseId;
-}
-
-export async function setResourcePriorities(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- nftId: number,
- priorities: number[],
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const prioritiesVec = api.createType('Vec<u32>', priorities);
- const tx = api.tx.rmrkCore.setPriority(collectionId, nftId, prioritiesVec);
- const events = await executeTransaction(api, issuer, tx);
-
- const prioResult = extractRmrkCoreTxResult(events, 'PrioritySet', (data) => {
- return {
- collectionId: parseInt(data[0].toString(), 10),
- nftId: parseInt(data[1].toString(), 10),
- };
- });
-
- expect(prioResult.success, 'Error: Unable to set resource priorities').to.be.true;
- const eventData = prioResult.successData!;
-
- expect(eventData.collectionId)
- .to.be.equal(collectionId, 'Error: Invalid collection ID (set priorities event data)');
-
- expect(eventData.nftId).to.be.equal(nftId, 'Error: Invalid NFT ID (set priorities event data');
-
- for (let i = 0; i < priorities.length; i++) {
- const resourceId = priorities[i];
-
- const fetchedPrio = await getResourcePriority(api, collectionId, nftId, resourceId);
- expect(fetchedPrio).to.be.equal(i, 'Error: Invalid priorities are set');
- }
-
-}
-
-export async function setEquippableList(
- api: ApiPromise,
- issuerUri: string,
- baseId: number,
- slotId: number,
- equippableList: 'All' | 'Empty' | { 'Custom': number[] },
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const equippable = api.createType('RmrkTraitsPartEquippableList', equippableList) as EquippableList;
-
- const tx = api.tx.rmrkEquip.equippable(baseId, slotId, equippable);
- const events = await executeTransaction(api, issuer, tx);
-
- const equipListResult = extractRmrkEquipTxResult(events, 'EquippablesUpdated', (data) => {
- return {
- baseId: parseInt(data[0].toString(), 10),
- slotId: parseInt(data[1].toString(), 10),
- };
- });
-
- expect(equipListResult.success, 'Error: unable to update equippable list').to.be.true;
- const updateEvent = equipListResult.successData!;
-
- expect(updateEvent.baseId)
- .to.be.equal(baseId, 'Error: invalid base ID from update equippable event');
-
- expect(updateEvent.slotId)
- .to.be.equal(slotId, 'Error: invalid base ID from update equippable event');
-
- const fetchedEquippableList = await getEquippableList(api, baseId, slotId);
-
- expect(fetchedEquippableList, 'Error: unable to fetch equippable list').to.be.not.null;
- if (fetchedEquippableList) {
- expect(fetchedEquippableList)
- .to.be.deep.equal(equippableList, 'Error: invalid equippable list was set');
- }
-}
-
-export async function addTheme(
- api: ApiPromise,
- issuerUri: string,
- baseId: number,
- themeObj: object,
- filterKeys: string[] | null = null,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const theme = api.createType('RmrkTraitsTheme', themeObj) as Theme;
-
- const tx = api.tx.rmrkEquip.themeAdd(baseId, theme);
- const events = await executeTransaction(api, issuer, tx);
-
- expect(isTxResultSuccess(events), 'Error: Unable to add Theme').to.be.true;
-
- const fetchedThemeOpt = await getTheme(api, baseId, theme.name.toUtf8(), null);
-
- expect(fetchedThemeOpt.isSome, 'Error: Unable to fetch theme').to.be.true;
-
- const fetchedTheme = fetchedThemeOpt.unwrap();
-
- expect(theme.name.eq(fetchedTheme.name), 'Error: Invalid theme name').to.be.true;
-
- for (let i = 0; i < theme.properties.length; i++) {
- const property = theme.properties[i];
- const propertyKey = property.key.toUtf8();
-
- const propertyFoundCount = fetchedTheme.properties.filter((fetchedProp) => property.key.eq(fetchedProp.key)).length;
-
- expect(propertyFoundCount > 1, `Error: Too many properties with key ${propertyKey} found`)
- .to.be.false;
-
- if (filterKeys) {
- const isFiltered = fetchedTheme.properties.find((fetchedProp) => fetchedProp.key.eq(property.key)) === undefined;
-
- if (isFiltered) {
- expect(propertyFoundCount === 0, `Error: Unexpected filtered key ${propertyKey}`)
- .to.be.true;
- continue;
- }
- }
-
- expect(propertyFoundCount === 1, `Error: The property with key ${propertyKey} is not found`)
- .to.be.true;
- }
-}
-
-export async function lockCollection(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- max = 0,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const tx = api.tx.rmrkCore.lockCollection(collectionId);
- const events = await executeTransaction(api, issuer, tx);
- const lockResult = extractRmrkCoreTxResult(events, 'CollectionLocked', (data) => {
- return parseInt(data[1].toString(), 10);
- });
- expect(lockResult.success, 'Error: Unable to lock a collection').to.be.true;
- expect(lockResult.successData!, 'Error: Invalid collection was locked')
- .to.be.eq(collectionId);
-
- await getCollection(api, collectionId).then((collectionOption) => {
- const collection = collectionOption.unwrap();
- expect(collection.max.unwrap().toNumber()).to.be.equal(max);
- });
-}
-
-export async function setPropertyCollection(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- key: string,
- value: string,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const alice = privateKey(issuerUri, Number(ss58Format));
-
- const tx = api.tx.rmrkCore.setProperty(collectionId, null, key, value);
- const events = await executeTransaction(api, alice, tx);
- const propResult = extractRmrkCoreTxResult(events, 'PropertySet', (data) => {
- return {
- collectionId: parseInt(data[0].toString(), 10),
- nftId: data[1] as Option<u32>,
- key: data[2] as Bytes,
- value: data[3] as Bytes,
- };
- });
-
- expect(propResult.success, 'Error: Unable to set collection property').to.be.true;
- const eventData = propResult.successData!;
- const eventDescription = 'from set collection property event';
-
- expect(eventData.collectionId, 'Error: Invalid collection ID ' + eventDescription)
- .to.be.equal(collectionId);
-
- expect(eventData.nftId.eq(null), 'Error: Unexpected NFT ID ' + eventDescription)
- .to.be.true;
-
- expect(eventData.key.eq(key), 'Error: Invalid property key ' + eventDescription)
- .to.be.true;
-
- expect(eventData.value.eq(value), 'Error: Invalid property value ' + eventDescription)
- .to.be.true;
-
- expect(await isCollectionPropertyExists(api, collectionId, key, value))
- .to.be.true;
-}
-
-export async function burnNft(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- nftId: number,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const maxBurns = 10;
- const tx = api.tx.rmrkCore.burnNft(collectionId, nftId, maxBurns);
- const events = await executeTransaction(api, issuer, tx);
- const burnResult = extractRmrkCoreTxResult(events, 'NFTBurned', (data) => {
- return parseInt(data[1].toString(), 10);
- });
-
- expect(burnResult.success, 'Error: Unable to burn an NFT').to.be.true;
- expect(burnResult.successData!, 'Error: Invalid NFT was burned')
- .to.be.eq(nftId);
-
- const nftBurned = await getNft(api, collectionId, nftId);
- expect(nftBurned.isSome).to.be.false;
-}
-
-export async function acceptNftResource(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- nftId: number,
- resourceId: number,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const tx = api.tx.rmrkCore.acceptResource(
- collectionId,
- nftId,
- resourceId,
- );
-
- const events = await executeTransaction(api, issuer, tx);
- const acceptResult = extractRmrkCoreTxResult(events, 'ResourceAccepted', (data) => {
- return {
- nftId: parseInt(data[0].toString(), 10),
- resourceId: parseInt(data[1].toString(), 10),
- };
- });
-
- expect(acceptResult.success, 'Error: Unable to accept a resource').to.be.true;
- expect(acceptResult.successData!.nftId, 'Error: Invalid NFT ID while accepting a resource')
- .to.be.eq(nftId);
- expect(acceptResult.successData!.resourceId, 'Error: Invalid resource ID while accepting a resource')
- .to.be.eq(resourceId);
-
- const resource = await getResourceById(api, collectionId, nftId, resourceId);
- checkResourceStatus(resource, 'added');
-}
-
-async function executeResourceCreation(
- api: ApiPromise,
- issuer: IKeyringPair,
- tx: any,
- collectionId: number,
- nftId: number,
- expectedStatus: 'pending' | 'added',
-): Promise<ResourceInfo> {
- const events = await executeTransaction(api, issuer, tx);
-
- const resourceResult = extractRmrkCoreTxResult(events, 'ResourceAdded', (data) => {
- return parseInt(data[1].toString(), 10);
- });
- expect(resourceResult.success, 'Error: Unable to add resource').to.be.true;
- const resourceId = resourceResult.successData!;
-
- const resource = await getResourceById(api, collectionId, nftId, resourceId);
- checkResourceStatus(resource, expectedStatus);
-
- return resource;
-}
-
-export async function addNftBasicResource(
- api: ApiPromise,
- issuerUri: string,
- expectedStatus: 'pending' | 'added',
- collectionId: number,
- nftId: number,
- src: string | null,
- metadata: string | null,
- license: string | null,
- thumb: string | null,
-): Promise<number> {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const basicResource = api.createType('RmrkTraitsResourceBasicResource', {
- src: src,
- metadata: metadata,
- license: license,
- thumb: thumb,
- }) as BasicResource;
-
- const tx = api.tx.rmrkCore.addBasicResource(
- collectionId,
- nftId,
- basicResource,
- );
-
- const resource = await executeResourceCreation(api, issuer, tx, collectionId, nftId, expectedStatus);
-
- // FIXME A workaround. It seems it is a PolkadotJS bug.
- // All of the following are `false`.
- //
- // console.log('>>> basic:', resource.resource.isBasic);
- // console.log('>>> composable:', resource.resource.isComposable);
- // console.log('>>> slot:', resource.resource.isSlot);
- const resourceJson = resource.resource.toHuman() as any;
-
- expect(Object.prototype.hasOwnProperty.call(resourceJson, 'Basic'), 'Error: Expected basic resource type')
- .to.be.true;
-
- const recvBasicRes = resourceJson['Basic'];
-
- expect(recvBasicRes.src, 'Error: Invalid basic resource src')
- .to.be.eq(src);
- expect(recvBasicRes.metadata, 'Error: basic first resource metadata')
- .to.be.eq(metadata);
- expect(recvBasicRes.license, 'Error: basic first resource license')
- .to.be.eq(license);
- expect(recvBasicRes.thumb, 'Error: basic first resource thumb')
- .to.be.eq(thumb);
-
- return resource.id.toNumber();
-}
-
-export async function addNftComposableResource(
- api: ApiPromise,
- issuerUri: string,
- expectedStatus: 'pending' | 'added',
- collectionId: number,
- nftId: number,
- parts: number[],
- baseId: number,
- src: string | null,
- metadata: string | null,
- license: string | null,
- thumb: string | null,
-): Promise<number> {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const composableResource = api.createType('RmrkTraitsResourceComposableResource', {
- parts: parts, // api.createType('Vec<u32>', parts),
- base: baseId,
- src: src,
- metadata: metadata,
- license: license,
- thumb: thumb,
- }) as ComposableResource;
-
- const tx = api.tx.rmrkCore.addComposableResource(
- collectionId,
- nftId,
- composableResource,
- );
-
- const resource = await executeResourceCreation(api, issuer, tx, collectionId, nftId, expectedStatus);
-
- // FIXME A workaround. It seems it is a PolkadotJS bug.
- // All of the following are `false`.
- //
- // console.log('>>> basic:', resource.resource.isBasic);
- // console.log('>>> composable:', resource.resource.isComposable);
- // console.log('>>> slot:', resource.resource.isSlot);
- const resourceJson = resource.resource.toHuman() as any;
-
- expect(Object.prototype.hasOwnProperty.call(resourceJson, 'Composable'), 'Error: Expected composable resource type')
- .to.be.true;
-
- const recvComposableRes = resourceJson['Composable'];
-
- expect(recvComposableRes.parts.toString(), 'Error: Invalid composable resource parts')
- .to.be.eq(parts.toString());
- expect(recvComposableRes.base, 'Error: Invalid composable resource base id')
- .to.be.eq(baseId.toString());
- expect(recvComposableRes.src, 'Error: Invalid composable resource src')
- .to.be.eq(src);
- expect(recvComposableRes.metadata, 'Error: Invalid composable resource metadata')
- .to.be.eq(metadata);
- expect(recvComposableRes.license, 'Error: Invalid composable resource license')
- .to.be.eq(license);
- expect(recvComposableRes.thumb, 'Error: Invalid composable resource thumb')
- .to.be.eq(thumb);
-
- return resource.id.toNumber();
-}
-
-export async function addNftSlotResource(
- api: ApiPromise,
- issuerUri: string,
- expectedStatus: 'pending' | 'added',
- collectionId: number,
- nftId: number,
- baseId: number,
- slotId: number,
- src: string | null,
- metadata: string | null,
- license: string | null,
- thumb: string | null,
-): Promise<number> {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const slotResource = api.createType('RmrkTraitsResourceSlotResource', {
- base: baseId,
- src: src,
- metadata,
- slot: slotId,
- license: license,
- thumb: thumb,
- }) as SlotResource;
-
- const tx = api.tx.rmrkCore.addSlotResource(
- collectionId,
- nftId,
- slotResource,
- );
-
- const resource = await executeResourceCreation(api, issuer, tx, collectionId, nftId, expectedStatus);
-
- // FIXME A workaround. It seems it is a PolkadotJS bug.
- // All of the following are `false`.
- //
- // console.log('>>> basic:', resource.resource.isBasic);
- // console.log('>>> composable:', resource.resource.isComposable);
- // console.log('>>> slot:', resource.resource.isSlot);
- const resourceJson = resource.resource.toHuman() as any;
-
- expect(Object.prototype.hasOwnProperty.call(resourceJson, 'Slot'), 'Error: Expected slot resource type')
- .to.be.true;
-
- const recvSlotRes = resourceJson['Slot'];
-
- expect(recvSlotRes.base, 'Error: Invalid slot resource base id')
- .to.be.eq(baseId.toString());
- expect(recvSlotRes.slot, 'Error: Invalid slot resource slot id')
- .to.be.eq(slotId.toString());
- expect(recvSlotRes.src, 'Error: Invalid slot resource src')
- .to.be.eq(src);
- expect(recvSlotRes.metadata, 'Error: Invalid slot resource metadata')
- .to.be.eq(metadata);
- expect(recvSlotRes.license, 'Error: Invalid slot resource license')
- .to.be.eq(license);
- expect(recvSlotRes.thumb, 'Error: Invalid slot resource thumb')
- .to.be.eq(thumb);
-
- return resource.id.toNumber();
-}
-
-export async function equipNft(
- api: ApiPromise,
- issuerUri: string,
- item: NftIdTuple,
- equipper: NftIdTuple,
- resource: number,
- base: number,
- slot: number,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const tx = api.tx.rmrkEquip.equip(item, equipper, resource, base, slot);
- const events = await executeTransaction(api, issuer, tx);
- const equipResult = extractRmrkEquipTxResult(events, 'SlotEquipped', (data) => {
- return {
- item_collection: parseInt(data[0].toString(), 10),
- item_nft: parseInt(data[1].toString(), 10),
- base_id: parseInt(data[2].toString(), 10),
- slot_id: parseInt(data[3].toString(), 10),
- };
- });
- expect(equipResult.success, 'Error: Unable to equip an item').to.be.true;
- expect(equipResult.successData!.item_collection, 'Error: Invalid item collection id')
- .to.be.eq(item[0]);
- expect(equipResult.successData!.item_nft, 'Error: Invalid item NFT id')
- .to.be.eq(item[1]);
- expect(equipResult.successData!.base_id, 'Error: Invalid base id')
- .to.be.eq(base);
- expect(equipResult.successData!.slot_id, 'Error: Invalid slot id')
- .to.be.eq(slot);
-}
-
-export async function unequipNft(
- api: ApiPromise,
- issuerUri: string,
- item: any,
- equipper: any,
- resource: number,
- base: number,
- slot: number,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
- const tx = api.tx.rmrkEquip.equip(item, equipper, resource, base, slot);
- const events = await executeTransaction(api, issuer, tx);
-
- const unEquipResult = extractRmrkEquipTxResult(
- events,
- 'SlotUnequipped',
- (data) => {
- return {
- item_collection: parseInt(data[0].toString(), 10),
- item_nft: parseInt(data[1].toString(), 10),
- base_id: parseInt(data[2].toString(), 10),
- slot_id: parseInt(data[3].toString(), 10),
- };
- },
- );
-
- expect(unEquipResult.success, 'Error: Unable to unequip an item').to.be.true;
- expect(unEquipResult.successData!.item_collection, 'Error: Invalid item collection id')
- .to.be.eq(item[0]);
- expect(unEquipResult.successData!.item_nft, 'Error: Invalid item NFT id')
- .to.be.eq(item[1]);
- expect(unEquipResult.successData!.base_id, 'Error: Invalid base id')
- .to.be.eq(base);
- expect(unEquipResult.successData!.slot_id, 'Error: Invalid slot id')
- .to.be.eq(slot);
-}
-
-export async function removeNftResource(
- api: ApiPromise,
- expectedStatus: 'pending' | 'removed',
- issuerUri: string,
- collectionId: number,
- nftId: number,
- resourceId: number,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const tx = api.tx.rmrkCore.removeResource(collectionId, nftId, resourceId);
- const events = await executeTransaction(api, issuer, tx);
- const removeResult = extractRmrkCoreTxResult(events, 'ResourceRemoval', (data) => {
- return {
- nftId: parseInt(data[0].toString(), 10),
- resourceId: parseInt(data[1].toString(), 10),
- };
- });
- expect(removeResult.success, 'Error: Unable to remove a resource').to.be.true;
- expect(removeResult.successData!.nftId, 'Error: Invalid NFT Id while removing a resource')
- .to.be.eq(nftId);
- expect(removeResult.successData!.resourceId, 'Error: Invalid resource Id while removing a resource')
- .to.be.eq(resourceId);
-
- const afterDeleting = await findResourceById(api, collectionId, nftId, resourceId);
-
- if (expectedStatus === 'pending') {
- expect(afterDeleting).not.to.be.null;
- expect(afterDeleting?.pendingRemoval.isTrue).to.be.equal(true);
- } else {
- expect(afterDeleting).to.be.null;
- }
-}
-
-export async function acceptResourceRemoval(
- api: ApiPromise,
- issuerUri: string,
- collectionId: number,
- nftId: number,
- resourceId: number,
-) {
- const ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format;
- const issuer = privateKey(issuerUri, Number(ss58Format));
-
- const tx = api.tx.rmrkCore.acceptResourceRemoval(collectionId, nftId, resourceId);
- const events = await executeTransaction(api, issuer, tx);
- const acceptResult = extractRmrkCoreTxResult(events, 'ResourceRemovalAccepted', (data) => {
- return {
- nftId: parseInt(data[0].toString(), 10),
- resourceId: parseInt(data[1].toString(), 10),
- };
- });
- expect(acceptResult.success, 'Error: Unable to accept a resource').to.be.true;
- expect(acceptResult.successData!.nftId, 'Error: Invalid NFT Id while accepting a resource')
- .to.be.eq(nftId);
- expect(acceptResult.successData!.resourceId, 'Error: Invalid resource Id while accepting a resource')
- .to.be.eq(resourceId);
-
- const afterDeleting = await findResourceById(api, collectionId, nftId, resourceId);
- expect(afterDeleting, 'Error: resource deleting failed').to.be.null;
-}
tests/src/.outdated/substrate/substrate-api.tsdiffbeforeafterboth--- a/tests/src/.outdated/substrate/substrate-api.ts
+++ b/tests/src/.outdated/substrate/substrate-api.ts
@@ -53,7 +53,6 @@
rpc: {
unique: defs.unique.rpc,
appPromotion: defs.appPromotion.rpc,
- rmrk: defs.rmrk.rpc,
eth: {
feeHistory: {
description: 'Dummy',
tests/src/interfaces/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/definitions.ts
+++ b/tests/src/interfaces/definitions.ts
@@ -16,6 +16,5 @@
export {default as unique} from './unique/definitions';
export {default as appPromotion} from './appPromotion/definitions';
-export {default as rmrk} from './rmrk/definitions';
export {default as povinfo} from './povinfo/definitions';
export {default as default} from './default/definitions';
tests/src/interfaces/rmrk/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/rmrk/definitions.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-type RpcParam = {
- name: string;
- type: string;
- isOptional?: true;
-};
-
-const atParam = {name: 'at', type: 'Hash', isOptional: true};
-const fn = (description: string, params: RpcParam[], type: string) => ({
- description,
- params: [...params, atParam],
- type,
-});
-
-export default {
- types: {},
- rpc: {
- lastCollectionIdx: fn('Get the latest created collection id', [], 'u32'),
- collectionById: fn('Get collection by id', [{name: 'id', type: 'u32'}], 'Option<RmrkTraitsCollectionCollectionInfo>'),
- nftById: fn(
- 'Get NFT by collection id and NFT id',
- [
- {name: 'collectionId', type: 'u32'},
- {name: 'nftId', type: 'u32'},
- ],
- 'Option<RmrkTraitsNftNftInfo>',
- ),
- accountTokens: fn(
- 'Get tokens owned by an account in a collection',
- [
- {name: 'accountId', type: 'AccountId32'},
- {name: 'collectionId', type: 'u32'},
- ],
- 'Vec<u32>',
- ),
- nftChildren: fn(
- 'Get NFT children',
- [
- {name: 'collectionId', type: 'u32'},
- {name: 'nftId', type: 'u32'},
- ],
- 'Vec<RmrkTraitsNftNftChild>',
- ),
- collectionProperties: fn(
- 'Get collection properties',
- [
- {name: 'collectionId', type: 'u32'},
- {name: 'filterKeys', type: 'Vec<String>', isOptional: true},
- ],
- 'Vec<RmrkTraitsPropertyPropertyInfo>',
- ),
- nftProperties: fn(
- 'Get NFT properties',
- [
- {name: 'collectionId', type: 'u32'},
- {name: 'nftId', type: 'u32'},
- {name: 'filterKeys', type: 'Vec<String>', isOptional: true},
- ],
- 'Vec<RmrkTraitsPropertyPropertyInfo>',
- ),
- nftResources: fn(
- 'Get NFT resources',
- [
- {name: 'collectionId', type: 'u32'},
- {name: 'nftId', type: 'u32'},
- ],
- 'Vec<RmrkTraitsResourceResourceInfo>',
- ),
- nftResourcePriority: fn(
- 'Get NFT resource priorities',
- [
- {name: 'collectionId', type: 'u32'},
- {name: 'nftId', type: 'u32'},
- {name: 'resourceId', type: 'u32'},
- ],
- 'Option<u32>',
- ),
- base: fn(
- 'Get base info',
- [{name: 'baseId', type: 'u32'}],
- 'Option<RmrkTraitsBaseBaseInfo>',
- ),
- baseParts: fn(
- 'Get all Base\'s parts',
- [{name: 'baseId', type: 'u32'}],
- 'Vec<RmrkTraitsPartPartType>',
- ),
- themeNames: fn(
- 'Get Base\'s theme names',
- [{name: 'baseId', type: 'u32'}],
- 'Vec<Bytes>',
- ),
- themes: fn(
- 'Get Theme\'s keys values',
- [
- {name: 'baseId', type: 'u32'},
- {name: 'themeName', type: 'String'},
- {name: 'keys', type: 'Option<Vec<String>>'},
- ],
- 'Option<RmrkTraitsTheme>',
- ),
- },
-};
tests/src/interfaces/rmrk/index.tsdiffbeforeafterboth--- a/tests/src/interfaces/rmrk/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/rmrk/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/rmrk/types.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
-/* eslint-disable */
-
-export type PHANTOM_RMRK = 'rmrk';
tests/src/pallet-presence.test.tsdiffbeforeafterboth--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -64,7 +64,6 @@
const refungible = 'refungible';
const foreignAssets = 'foreignassets';
- const _rmrkPallets = ['rmrkcore', 'rmrkequip'];
const appPromotion = 'apppromotion';
const collatorSelection = ['authorship', 'session', 'collatorselection', 'identity'];
const testUtils = 'testutils';
tests/src/util/index.tsdiffbeforeafterboth--- a/tests/src/util/index.ts
+++ b/tests/src/util/index.ts
@@ -106,8 +106,6 @@
export enum Pallets {
Inflation = 'inflation',
- RmrkCore = 'rmrkcore',
- RmrkEquip = 'rmrkequip',
ReFungible = 'refungible',
Fungible = 'fungible',
NFT = 'nonfungible',
tests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/unique.dev.ts
+++ b/tests/src/util/playgrounds/unique.dev.ts
@@ -106,7 +106,6 @@
unique: defs.unique.rpc,
appPromotion: defs.appPromotion.rpc,
povinfo: defs.povinfo.rpc,
- rmrk: defs.rmrk.rpc,
eth: {
feeHistory: {
description: 'Dummy',