difftreelog
Merge branch 'develop' into doc/scheduler
in: master
51 files changed
Cargo.lockdiffbeforeafterboth985 packageslockfile v3
Might be heavy and slow!
addr2line
0.17.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816bdepends onadler
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35feused byaead
0.4.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877depends onaes
0.7.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8used byaes-gcm
0.9.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6used byahash
0.7.6crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47aho-corasick
0.7.18crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656fdepends onused byalways-assert
0.1.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbf688625d06217d5b1bb0ea9d9c44a1635fd0ee3534466388d18203174f4d11ansi_term
0.12.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.58crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704used byapprox
0.5.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6depends onarrayref
0.3.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544arrayvec
0.4.12crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9depends onarrayvec
0.5.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068barrayvec
0.7.2crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6asn1_der
0.7.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21assert_matches
1.5.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9async-attributes
1.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5depends onused byasync-channel
1.6.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319async-executor
1.4.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965depends onused byasync-global-executor
2.2.0crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5262ed948da60dd8956c6c5aca4d4163593dddb7b32d73267c93dab7b2e98940depends onasync-io
1.7.0crates.io↘ 11↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5e18f61464ae81cde0a23e713ae8fd299580c54d697a35820cfd0625b8b0e07depends onasync-lock
2.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6depends onasync-process
1.4.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60cdepends onasync-std
1.12.0crates.io↘ 20↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5ddepends on- async-attributes
1.1.2 - async-channel
1.6.1 - async-global-executor
2.2.0 - async-io
1.7.0 - async-lock
2.5.0 - async-process
1.4.0 - crossbeam-utils
0.8.9 - futures-channel
0.3.21 - futures-core
0.3.21 - futures-io
0.3.21 - futures-lite
1.12.0 - gloo-timers
0.2.4 - kv-log-macro
1.0.7 - log
0.4.17 - memchr
2.5.0 - once_cell
1.12.0 - pin-project-lite
0.2.9 - pin-utils
0.1.0 - slab
0.4.6 - wasm-bindgen-futures
0.4.31
- async-attributes
async-std-resolver
0.21.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f2f8a4a203be3325981310ab243a28e6e4ea55b6519bffce05d41ab60e09ad8depends onused byasync-task
4.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9async-trait
0.1.56crates.io↘ 3↖ 39sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716depends onused by- async-std-resolver
0.21.2 - 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-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - jsonrpsee-core
0.13.1 - libp2p-autonat
0.4.1 - libp2p-request-response
0.18.0 - orchestra
0.0.1 - polkadot-network-bridge
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-service
0.9.24 - 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-service
0.10.0-dev - sp-authorship
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-test-client
2.0.1 - trust-dns-proto
0.21.2
- async-std-resolver
asynchronous-codec
0.6.0crates.io↘ 5↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690atomic-waker
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2aused byatty
0.2.14crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onauto_impl
0.5.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4used byautocfg
1.1.0crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fabackoff
0.4.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1backtrace
0.3.65crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61depends onbase-x
0.2.10crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74used bybase16ct
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cceused bybase58
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581used bybase64
0.13.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fdbeef
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.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- beefy-primitives
4.0.0-dev - fnv
1.0.7 - futures
0.3.21 - futures-timer
3.0.2 - hex
0.4.3 - log
0.4.17 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31 - wasm-timer
0.2.5
- beefy-primitives
beefy-gadget-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bybeefy-merkle-tree
4.0.0-devgithub.com/paritytech/substrate↘ 0↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28beefy-primitives
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onbimap
0.6.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc0455254eb5c6964c4545d8bac815e1a1be4f3afe0ae695ea539c12d728d44bused bybincode
1.3.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcaddepends onbindgen
0.59.2crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8depends onused bybitflags
1.3.2crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718abitvec
0.20.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848depends onused bybitvec
1.0.0crates.io↘ 4↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016bdepends onused by- bp-messages
0.1.0 - kusama-runtime
0.9.24 - pallet-bridge-messages
0.1.0 - parity-scale-codec
3.1.5 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - scale-info
2.1.2 - westend-runtime
0.9.24
- bp-messages
blake2
0.10.4crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388depends onblake2-rfc
0.2.18crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400depends onused byblake2b_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.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183fused byblock-buffer
0.7.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bused byblock-buffer
0.9.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-buffer
0.10.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324depends onused byblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused byblock-padding
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2caeused byblocking
1.2.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728accccdepends onbounded-vec
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3372be4090bf9d4da36bd8ba7ce6ca1669503d0cf6e667236c6df7f053153eb6depends onbp-header-chain
0.1.0github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onbp-message-dispatch
0.1.0github.com/paritytech/polkadot↘ 5↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfebp-messages
0.1.0github.com/paritytech/polkadot↘ 10↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onbp-polkadot-core
0.1.0github.com/paritytech/polkadot↘ 11↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bybp-rococo
0.1.0github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onbp-runtime
0.1.0github.com/paritytech/polkadot↘ 11↖ 11sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onbp-test-utils
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bybp-wococo
0.1.0github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bybridge-runtime-common
0.1.0github.com/paritytech/polkadot↘ 18↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-runtime
0.1.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hash-db
0.15.2 - pallet-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-transaction-payment
4.0.0-dev - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-std
4.0.0 - sp-trie
6.0.0
used by- bp-message-dispatch
bs58
0.4.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
0.2.17crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223depends onused bybuild-helper
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5fdepends onbumpalo
3.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3used bybyte-slice-cast
1.2.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067ebyte-tools
0.3.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7byteorder
1.4.3crates.io↘ 0↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610used by- block-buffer
0.7.3 - cuckoofilter
0.5.0 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-pre.1 - dns-parser
0.8.0 - fixed-hash
0.7.0 - libp2p-gossipsub
0.38.1 - merlin
2.0.1 - multiaddr
0.14.0 - netlink-packet-core
0.4.2 - netlink-packet-route
0.11.0 - netlink-packet-utils
0.5.1 - parity-wasm
0.32.0 - sp-core
6.0.0 - sp-core-hashing
4.0.0 - thrift
0.15.0 - uint
0.9.3
- block-buffer
bytes
0.5.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38used bybytes
1.1.0crates.io↘ 0↖ 32sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8used by- asynchronous-codec
0.6.0 - ethereum
0.12.0 - h2
0.3.13 - http
0.2.8 - http-body
0.4.5 - hyper
0.14.19 - libp2p
0.45.1 - libp2p-gossipsub
0.38.1 - libp2p-kad
0.37.1 - libp2p-mplex
0.33.0 - libp2p-noise
0.36.0 - libp2p-plaintext
0.33.0 - libp2p-relay
0.9.1 - libp2p-request-response
0.18.0 - multistream-select
0.11.0 - netlink-proto
0.9.2 - netlink-sys
0.8.2 - polkadot-network-bridge
0.9.24 - prost
0.9.0 - prost
0.10.4 - prost-build
0.9.0 - prost-build
0.10.4 - prost-codec
0.1.0 - prost-types
0.9.0 - prost-types
0.10.1 - rlp
0.5.1 - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - soketto
0.7.1 - tokio
1.19.2 - tokio-util
0.7.3 - unsigned-varint
0.7.1
- asynchronous-codec
bzip2-sys
0.1.11+1.0.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdcdepends onused bycache-padded
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692cused bycamino
1.0.9crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum869119e97797867fd90f5e22af7d0bd274bd4635ebb9eb68c04f3f513ae6c412depends onused bycargo_metadata
0.14.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf1007653411165d371d51e7174a6f0e81ec815ecb425c0440c30d5f1ae64e0fcargo-platform
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27depends onused bycc
1.0.73crates.io↘ 1↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11depends oncexpr
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766depends onused bycfg_aliases
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89ecfg-if
0.1.10crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822cfg-if
1.0.0crates.io↘ 0↖ 43sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- aes
0.7.5 - async-process
1.4.0 - backtrace
0.3.65 - blake3
1.3.1 - chacha20
0.8.1 - cpp_demangle
0.3.5 - crc32fast
1.3.2 - crossbeam-channel
0.5.5 - crossbeam-deque
0.8.1 - crossbeam-epoch
0.9.9 - crossbeam-queue
0.3.5 - crossbeam-utils
0.8.9 - directories-next
2.0.0 - frame-metadata
15.0.0 - getrandom
0.1.16 - getrandom
0.2.7 - instant
0.1.12 - k256
0.10.4 - libloading
0.7.3 - log
0.4.17 - nix
0.22.3 - parity-util-mem
0.11.0 - parking_lot_core
0.8.5 - parking_lot_core
0.9.3 - polling
2.2.0 - polyval
0.5.3 - prometheus
0.13.1 - prost-build
0.10.4 - sc-executor-wasmtime
0.10.0-dev - scale-info
2.1.2 - sha-1
0.9.8 - sha2
0.9.9 - sha2
0.10.2 - tempfile
3.3.0 - tracing
0.1.35 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - twox-hash
1.6.3 - wasm-bindgen
0.2.81 - wasm-bindgen-futures
0.4.31 - wasmtime
0.35.3 - wasmtime-jit
0.35.3 - wasmtime-runtime
0.35.3
- aes
chacha20
0.8.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01b72a433d0cf2aef113ba70f62634c56fddb0f244e6377185c56a7cadbd8f91used bychacha20poly1305
0.9.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3b84ed6d1d5f7aa9bdde921a5090e0ca4d934d250ea3b402a5fab3a994e28a2aused bychrono
0.4.19crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73cid
0.8.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc949bff6704880faf064c42a4854032ab07bfcf3a4fcb82a57470acededb69cused bycipher
0.3.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7depends onckb-merkle-mountain-range
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f061f97d64fd1822664bdfb722f7ae5469a97b77567390f7442be5b5dc82a5bdepends onused byclang-sys
1.3.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69bdepends onused byclap
3.2.6crates.io↘ 9↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f1fe12880bae935d142c8702d500c63a4e8634b6c3c57ad72bf978fc7b6249adepends onclap_derive
3.2.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed6db9e867166a43a53f7199b5e4d1f522a1e5bd626654be263c999ce59df39aused byclap_lex
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87eba3c8c7f42ef17f6c659fc7416d0f4758cd3e58861ee63c5fa4a4dde649e4depends onused bycmake
0.1.48crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443adepends onused bycoarsetime
0.1.22crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum454038500439e141804c655b4cd1bc6a70bcb95cd2bc9463af5661b6956f0e46comfy-table
5.0.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb103d85ca6e209388771bfb7aa6b68a7aeec4afbf6f0a0264bfbf50360e5212econcurrent-queue
1.2.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3depends onconstant_time_eq
0.1.5crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbcconvert_case
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0eused bycore-foundation
0.9.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146depends oncore-foundation-sys
0.8.3crates.io↘ 0↖ 4sourceregistry+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 bycpufeatures
0.2.2crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4bdepends oncranelift-bforest
0.82.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38faa2a16616c8e78a18d37b4726b98bfd2de192f2fdc8a39ddf568a408a0f75depends onused bycranelift-codegen
0.82.3crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26f192472a3ba23860afd07d2b0217dc628f21fcc72617aa1336d98e1671f33bdepends oncranelift-codegen-meta
0.82.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f32ddb89e9b89d3d9b36a5b7d7ea3261c98235a76ac95ba46826b8ec40b1a24depends onused bycranelift-entity
0.82.3crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e3bfe172b83167604601faf9dc60453e0d0a93415b57a9c4d1a7ae6849185cfdepends oncranelift-frontend
0.82.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma006e3e32d80ce0e4ba7f1f9ddf66066d052a8c884a110b91d05404d6ce26dcecranelift-native
0.82.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum501241b0cdf903412ec9075385ac9f2b1eb18a89044d1538e97fab603231f70cused bycranelift-wasm
0.82.3crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16d9e4211bbc3268042a96dd4de5bd979cda22434991d035f5f8eacba987fad2depends onused bycrc32fast
1.3.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880ddepends oncrossbeam-channel
0.5.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85cdepends onused bycrossbeam-deque
0.8.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1eused bycrossbeam-epoch
0.9.9crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281dused bycrossbeam-queue
0.3.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2depends oncrossbeam-utils
0.8.9crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978depends oncrunchy
0.2.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-bigint
0.3.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21crypto-common
0.1.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8depends onused bycrypto-mac
0.8.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onused bycrypto-mac
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714depends onused byctor
0.1.22crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229cdepends onused byctr
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761eadepends onused bycuckoofilter
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb810a8449931679f64cd7eef1bbd0fa315801b6d5d9cdc1ace2804d6529eee18depends onused bycumulus-client-cli
0.1.0github.com/paritytech/cumulus↘ 4↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bcumulus-client-collator
0.1.0github.com/paritytech/cumulus↘ 17↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.21 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-overseer
0.9.24 - polkadot-primitives
0.9.24 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - tracing
0.1.35
- 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.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- async-trait
0.1.56 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.21 - parity-scale-codec
3.1.5 - 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
6.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
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tracing
0.1.35
used by- async-trait
cumulus-client-consensus-common
0.1.0github.com/paritytech/cumulus↘ 14↖ 4sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncumulus-client-network
0.1.0github.com/paritytech/cumulus↘ 18↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- async-trait
0.1.56 - cumulus-relay-chain-interface
0.1.0 - derive_more
0.99.17 - futures
0.3.21 - futures-timer
3.0.2 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - tracing
0.1.35
- async-trait
cumulus-client-pov-recovery
0.1.0github.com/paritytech/cumulus↘ 17↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.21 - futures-timer
3.0.2 - parity-scale-codec
3.1.5 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-overseer
0.9.24 - polkadot-primitives
0.9.24 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-maybe-compressed-blob
4.1.0-dev - sp-runtime
6.0.0 - tracing
0.1.35
used by- cumulus-primitives-core
cumulus-client-service
0.1.0github.com/paritytech/cumulus↘ 23↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends 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-interface
0.1.0 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-overseer
0.9.24 - polkadot-primitives
0.9.24 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - tracing
0.1.35
used by- cumulus-client-cli
cumulus-pallet-aura-ext
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncumulus-pallet-dmp-queue
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncumulus-pallet-parachain-system
0.1.0github.com/paritytech/cumulus↘ 23↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- cumulus-pallet-parachain-system-proc-macro
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - environmental
1.1.3 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - log
0.4.17 - pallet-balances
4.0.0-dev - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - scale-info
2.1.2 - serde
1.0.137 - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-std
4.0.0 - sp-trie
6.0.0 - sp-version
5.0.0 - xcm
0.9.24
- cumulus-pallet-parachain-system-proc-macro
cumulus-pallet-parachain-system-proc-macro
0.1.0github.com/paritytech/cumulus↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bcumulus-pallet-xcm
0.1.0github.com/paritytech/cumulus↘ 10↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncumulus-pallet-xcmp-queue
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncumulus-primitives-core
0.1.0github.com/paritytech/cumulus↘ 9↖ 20sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-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 - opal-runtime
0.9.24 - parachain-info
0.1.0 - quartz-runtime
0.9.24 - unique-node
0.9.24 - unique-runtime
0.9.24
- cumulus-client-collator
cumulus-primitives-parachain-inherent
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- async-trait
0.1.56 - 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.1.5 - sc-client-api
4.0.0-dev - scale-info
2.1.2 - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-std
4.0.0 - sp-storage
6.0.0 - sp-trie
6.0.0 - tracing
0.1.35
- async-trait
cumulus-primitives-timestamp
0.1.0github.com/paritytech/cumulus↘ 6↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncumulus-primitives-utility
0.1.0github.com/paritytech/cumulus↘ 10↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncumulus-relay-chain-inprocess-interface
0.1.0github.com/paritytech/cumulus↘ 24↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- async-trait
0.1.56 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.21 - futures-timer
3.0.2 - parking_lot
0.12.1 - polkadot-cli
0.9.24 - polkadot-client
0.9.24 - polkadot-service
0.9.24 - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
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 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - tracing
0.1.35
used by- async-trait
cumulus-relay-chain-interface
0.1.0github.com/paritytech/cumulus↘ 17↖ 9sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- async-trait
0.1.56 - cumulus-primitives-core
0.1.0 - derive_more
0.99.17 - futures
0.3.21 - jsonrpsee-core
0.13.1 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-overseer
0.9.24 - polkadot-service
0.9.24 - sc-client-api
4.0.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - thiserror
1.0.31
- async-trait
cumulus-relay-chain-rpc-interface
0.1.0github.com/paritytech/cumulus↘ 19↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends on- async-trait
0.1.56 - backoff
0.4.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.21 - futures-timer
3.0.2 - jsonrpsee
0.13.1 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-service
0.9.24 - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-storage
6.0.0 - tracing
0.1.35 - url
2.2.2
used by- async-trait
cumulus-test-relay-sproof-builder
0.1.0github.com/paritytech/cumulus↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends oncurve25519-dalek
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216used bycurve25519-dalek
3.2.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61curve25519-dalek
4.0.0-pre.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcfused bydarling
0.13.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453cdepends onused bydarling_core
0.13.4crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610darling_macro
0.13.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835depends onused bydata-encoding
2.3.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57data-encoding-macro
0.1.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029acaused bydata-encoding-macro-internal
0.1.10crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038dbdepends onused byder
0.5.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705cdepends onderivative
2.2.0crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770bdepends onderive_more
0.99.17crates.io↘ 5↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321used by- cumulus-client-network
0.1.0 - cumulus-relay-chain-interface
0.1.0 - polkadot-availability-distribution
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-parachain
0.9.24 - polkadot-runtime-parachains
0.9.24 - prioritized-metered-channel
0.2.0 - reed-solomon-novelpoly
1.0.0 - scale-info
2.1.2
- cumulus-client-network
digest
0.8.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondigest
0.10.3crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506directories
4.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210depends onused bydirectories-next
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbcdepends onused bydirs-sys
0.3.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6depends onused bydirs-sys-next
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4ddepends onused bydns-parser
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbeadepends onused bydowncast-rs
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650used bydtoa
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5caaa75cbd2b960ff1e5392d2cfb1f44717fffe12fc1f32b7b5d1267f99732a6used 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.6crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum140206b78fb2bc3edbcfc9b5ccbd0b30699cfe8d348b8b31b330e47df5291a5aecdsa
0.13.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9used byed25519
1.5.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369depends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9deither
1.6.1crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457elliptic-curve
0.11.12crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6depends onused byenum-as-inner
0.4.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73used byenumflags2
0.7.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccbdepends onused byenumflags2_derive
0.7.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5aedepends onused byenumn
0.1.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum052bc8773a98bd051ff37db74a8a25f00e6bfa2cbd03373390c72e9f7afbf344depends onused byenv_logger
0.9.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3environmental
1.1.3crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797errno
0.2.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1used byerrno-dragonfly
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bfdepends onused byethbloom
0.12.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007efdepends onused byethereum
0.12.0crates.io↘ 11↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23750149fe8834c0e24bb9adcbacbe06c45b9861f15df53e09f26cb7c4ab91efdepends onethereum-types
0.13.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6depends onevent-listener
2.5.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71evm
0.35.0github.com/uniquenetwork/evm↘ 13↖ 4sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.24#e9252ed42dc26fc85b6703b1ba50660a08209e55depends onevm-coder
0.1.0workspace↘ 7↖ 7depends onevm-coder-macros
0.1.0workspace↘ 7↖ 1evm-core
0.35.0github.com/uniquenetwork/evm↘ 4↖ 4sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.24#e9252ed42dc26fc85b6703b1ba50660a08209e55evm-gasometer
0.35.0github.com/uniquenetwork/evm↘ 4↖ 1sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.24#e9252ed42dc26fc85b6703b1ba50660a08209e55used byevm-runtime
0.35.0github.com/uniquenetwork/evm↘ 5↖ 2sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.24#e9252ed42dc26fc85b6703b1ba50660a08209e55used 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-indexchecksum3774182a5df13c3d1690311ad32fbe913feef26baba609fa2dd5f72042bd2ab6fake-simd
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deedused byfallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.7.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdfdepends onfatality
0.0.6crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ad875162843b0d046276327afe0136e9ed3a23d5a754210fb6f1f33610d39abdepends onused by- polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-statement-distribution
0.9.24
- polkadot-availability-distribution
fatality-proc-macro
0.0.6crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bddepends onused byfc-consensus
2.0.0-devgithub.com/uniquenetwork/frontier↘ 12↖ 1sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onused byfc-db
2.0.0-devgithub.com/uniquenetwork/frontier↘ 9↖ 5sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onfc-mapping-sync
2.0.0-devgithub.com/uniquenetwork/frontier↘ 10↖ 2sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onfc-rpc
2.0.0-devgithub.com/uniquenetwork/frontier↘ 33↖ 2sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends on- ethereum
0.12.0 - ethereum-types
0.13.1 - evm
0.35.0 - fc-db
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.21 - hex
0.4.3 - jsonrpsee
0.13.1 - libsecp256k1
0.7.0 - log
0.4.17 - lru
0.7.7 - parity-scale-codec
3.1.5 - prometheus
0.13.1 - rand
0.8.5 - rlp
0.5.1 - rustc-hex
2.1.0 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-storage
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.19.2
- ethereum
fc-rpc-core
1.1.0-devgithub.com/uniquenetwork/frontier↘ 7↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byff
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum131655483be284720a17d74ff97592b8e76576dc25563148601df2d7c9080924depends onfile-per-thread-logger
0.1.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02fdepends onused byfinality-grandpa
0.15.0crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9def033d8505edf199f6a5d07aa7e6d2d6185b164293b77f0efd108f4f3e11ddepends onfixed-hash
0.7.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493cfixedbitset
0.4.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053eused byflate2
1.0.24crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6flexi_logger
0.15.12crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaab3caedb4149800f91e8e4899f29cd9ddf3b569b04c365ca9334f92f7542bfdepends onused byfnv
1.0.7crates.io↘ 0↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1used byfork-tree
3.0.0github.com/paritytech/substrate↘ 1↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onform_urlencoded
1.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191depends onused byfp-consensus
2.0.0-devgithub.com/uniquenetwork/frontier↘ 5↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bfp-evm
3.0.0-devgithub.com/uniquenetwork/frontier↘ 7↖ 6sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onfp-evm-mapping
0.1.0github.com/uniquenetwork/frontier↘ 2↖ 9sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onfp-rpc
3.0.0-devgithub.com/uniquenetwork/frontier↘ 10↖ 10sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onfp-self-contained
1.0.0-devgithub.com/uniquenetwork/frontier↘ 9↖ 4sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onfp-storage
2.0.0github.com/uniquenetwork/frontier↘ 1↖ 4sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onframe-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 15↖ 61sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- frame-benchmarking-cli
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - 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-common
0.1.0 - 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.0 - pallet-evm-migration
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.0 - 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-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.0 - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm-benchmarks
0.9.24 - polkadot-client
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - unique-node
0.9.24 - unique-runtime
0.9.24 - westend-runtime
0.9.24 - xcm-executor
0.9.24
- frame-benchmarking-cli
frame-benchmarking-cli
4.0.0-devgithub.com/paritytech/substrate↘ 43↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- Inflector
0.11.4 - chrono
0.4.19 - clap
3.2.6 - comfy-table
5.0.1 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
4.3.1 - hash-db
0.15.2 - hex
0.4.3 - itertools
0.10.3 - kvdb
0.11.0 - lazy_static
1.4.0 - linked-hash-map
0.5.4 - log
0.4.17 - memory-db
0.29.0 - parity-scale-codec
3.1.5 - 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.137 - serde_json
1.0.81 - serde_nanos
0.1.2 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-database
4.0.0-dev - sp-externalities
0.12.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-trie
6.0.0 - tempfile
3.3.0 - thiserror
1.0.31 - 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.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28frame-election-provider-support
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- kusama-runtime
0.9.24 - 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-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-test-runtime
0.9.24 - westend-runtime
0.9.24
- kusama-runtime
frame-executive
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onframe-metadata
15.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2dused byframe-support
4.0.0-devgithub.com/paritytech/substrate↘ 23↖ 113sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.10.4 - log
0.4.17 - once_cell
1.12.0 - parity-scale-codec
3.1.5 - paste
1.0.7 - scale-info
2.1.2 - serde
1.0.137 - smallvec
1.8.0 - sp-arithmetic
5.0.0 - sp-core
6.0.0 - sp-core-hashing-proc-macro
5.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-state-machine
0.12.0 - sp-std
4.0.0 - sp-tracing
5.0.0 - tt-call
1.0.8
used by- bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - fp-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.24 - kusama-runtime-constants
0.9.24 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.0 - 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-recovery
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - parachain-info
0.1.0 - polkadot-parachain
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-constants
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - rococo-runtime-constants
0.9.24 - test-runtime-constants
0.9.24 - tests
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - westend-runtime
0.9.24 - westend-runtime-constants
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- bitflags
frame-support-procedural
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused byframe-support-procedural-tools
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onframe-support-procedural-tools-derive
3.0.0github.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onframe-system
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 99sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - 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.24 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - 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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.0 - 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-recovery
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - parachain-info
0.1.0 - polkadot-client
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - tests
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - westend-runtime
0.9.24 - xcm-builder
0.9.24
- bp-messages
frame-system-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onframe-system-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onframe-try-runtime
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28fs_extra
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394fs-err
2.7.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5bd79fa345a495d3ae89fb7165fec01c0e72f41821d642dda363a1e97975652efs-swap
0.2.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03d47dad3685eceed8488986cad3d5027165ea5edb164331770e2059555f10a5used byfs2
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213depends onused byfunty
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7used byfunty
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9cused byfutures
0.1.31crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678futures
0.3.21crates.io↘ 7↖ 124sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9edepends 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-primitives-timestamp
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 - exit-future
0.2.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.15.0 - if-watch
1.1.0 - libp2p
0.45.1 - libp2p-autonat
0.4.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-deflate
0.33.0 - libp2p-dns
0.33.0 - libp2p-floodsub
0.36.0 - libp2p-gossipsub
0.38.1 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-mdns
0.37.0 - libp2p-mplex
0.33.0 - libp2p-noise
0.36.0 - libp2p-ping
0.36.0 - libp2p-plaintext
0.33.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - libp2p-request-response
0.18.0 - libp2p-swarm
0.36.1 - libp2p-tcp
0.33.0 - libp2p-uds
0.32.0 - libp2p-wasm-ext
0.33.0 - libp2p-websocket
0.35.0 - libp2p-yamux
0.37.0 - mick-jaeger
0.1.8 - multistream-select
0.11.0 - netlink-proto
0.9.2 - netlink-sys
0.8.2 - orchestra
0.0.1 - polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-cli
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24 - polkadot-test-service
0.9.24 - prioritized-metered-channel
0.2.0 - rtnetlink
0.9.1 - rw-stream-sink
0.2.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-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-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-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
6.0.0 - sp-io
6.0.0 - sp-keystore
0.12.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - substrate-test-utils
4.0.0-dev - unique-node
0.9.24 - unique-rpc
0.1.0 - wasm-timer
0.2.5 - yamux
0.10.1
- beefy-gadget
futures-channel
0.3.21crates.io↘ 2↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010depends onfutures-core
0.3.21crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3futures-executor
0.3.21crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6used byfutures-io
0.3.21crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966bfutures-lite
1.12.0crates.io↘ 7↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48depends onfutures-macro
0.3.21crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512depends onused byfutures-rustls
0.22.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume01fe9932a224b72b45336d96040aa86386d674a31d0af27d800ea7bc8ca97fedepends onused byfutures-sink
0.3.21crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868futures-task
0.3.21crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776afutures-timer
3.0.2crates.io↘ 0↖ 45sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cused by- beefy-gadget
4.0.0-dev - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.15.0 - jsonrpsee-core
0.13.1 - libp2p
0.45.1 - libp2p-autonat
0.4.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-ping
0.36.0 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - libp2p-swarm
0.36.1 - libp2p-tcp
0.33.0 - orchestra
0.0.1 - polkadot-collator-protocol
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-overseer
0.9.24 - 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-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-consensus
0.10.0-dev - sp-timestamp
4.0.0-dev
- beefy-gadget
futures-util
0.3.21crates.io↘ 11↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036adepends onused by- async-std-resolver
0.21.2 - asynchronous-codec
0.6.0 - futures
0.3.21 - futures-executor
0.3.21 - h2
0.3.13 - hyper
0.14.19 - jsonrpsee-client-transport
0.13.1 - jsonrpsee-core
0.13.1 - jsonrpsee-http-server
0.13.1 - jsonrpsee-ws-server
0.13.1 - substrate-prometheus-endpoint
0.10.0-dev - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - unsigned-varint
0.7.1
- async-std-resolver
generic-array
0.12.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bddepends onused bygeneric-array
0.14.5crates.io↘ 2↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803depends ongetrandom
0.1.16crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.7crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6ghash
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99depends onused bygimli
0.26.1crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4glob
0.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.9crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0aused bygloo-timers
0.2.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9used bygroup
0.11.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89depends onused byh2
0.3.13crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57depends onused byhandlebars
4.3.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb66d0c1b6e3abfd1e72818798925e16e02ed77e1b47f6c25a95a23b377ee4299hash-db
0.15.2crates.io↘ 0↖ 17sourceregistry+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.11.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726edepends onhashbrown
0.12.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3depends onheck
0.3.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132cdepends onheck
0.4.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9hermit-abi
0.1.19crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhex
0.4.3crates.io↘ 0↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70used by- beefy-gadget
4.0.0-dev - evm-coder
0.1.0 - evm-coder-macros
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-evm
6.0.0-dev - parity-db
0.3.14 - polkadot-test-service
0.9.24 - 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-offchain
4.0.0-dev - sp-core
6.0.0 - substrate-test-client
2.0.1 - uint
0.9.3
- beefy-gadget
hex_fmt
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336fused byhex-literal
0.3.4crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0hmac
0.8.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840depends onhmac
0.11.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69bdepends 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↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399depends onhttp-body
0.4.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1depends onused byhttparse
1.7.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04cused byhttpdate
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421used byhumantime
2.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4used byhyper
0.14.19crates.io↘ 16↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42dc3c131584288d375f2d07f822b0cb012d8c6fb899a5b9fdb3cb7eb9b6004fdepends onhyper-rustls
0.23.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cacdepends onused byident_case
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39used byidna
0.2.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8if-addrs
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9depends onused byif-watch
1.1.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum774d59367a3d26965d21ac70a86fcb697d83405d1c4312d1d8a6855296af0cf7depends 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.3.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5cdepends onimpl-trait-for-tuples
0.2.2crates.io↘ 3↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395ebdepends onused by- bp-messages
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - evm-coder
0.1.0 - fp-evm
3.0.0-dev - frame-support
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-session
4.0.0-dev - pallet-treasury
4.0.0-dev - parity-scale-codec
2.3.1 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - polkadot-runtime-common
0.9.24 - sc-chain-spec
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
6.0.0 - sp-runtime-interface
6.0.0 - sp-wasm-interface
6.0.0 - up-sponsorship
0.1.0 - xcm
0.9.24 - xcm-executor
0.9.24
- bp-messages
indexmap
1.9.1crates.io↘ 3↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41edepends onInflector
0.11.4crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.12crates.io↘ 1↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends oninteger-encoding
3.0.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e85a1509a128c855368e135cffcde7eac17d8e1083f41e2b98c58bc1a5074beused byinteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byio-lifetimes
0.5.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec58677acfea8a15352d42fc87d11d63596ade9239e0a7c9352914417515dbe6used byip_network
0.4.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1ipconfig
0.3.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98used byipnet
2.5.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592bitertools
0.10.3crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3depends onitoa
0.4.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4used byitoa
1.0.2crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578djobserver
0.1.24crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fadepends onused byjs-sys
0.3.58crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27depends onjsonrpsee
0.13.1crates.io↘ 7↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1f2ab5a60e558e74ea93bcf5164ebc47939a7fff8938fa9b5233bbc63e16061depends 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 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-rpc
0.9.24 - remote-externalities
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-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - unique-node
0.9.24 - unique-rpc
0.1.0
- beefy-gadget-rpc
jsonrpsee-client-transport
0.13.1crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26d682f4a55081a2be3e639280c640523070e4aeb8ee2fd8dd9168fdae57a9dbdepends onused byjsonrpsee-core
0.13.1crates.io↘ 19↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e27462b21279edf9a6a91f46ffbe125e9cdc58b901d2e08bf59b31a47d7d0abdepends onjsonrpsee-http-server
0.13.1crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7178f16eabd7154c094e24d295b9ee355ec1e5f24c328759c56255ff7bbd4548depends onused byjsonrpsee-proc-macros
0.13.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b8d7f449cab3b747f12c3efc27f5cad537f3b597c6a3838b0fac628f4bf730aused byjsonrpsee-types
0.13.1crates.io↘ 6↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fd11763134104122ddeb0f97e4bbe393058017dfb077db63fbf44b4dd0dd86ejsonrpsee-ws-client
0.13.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum76f15180afb3761c7a3a32c0a8b680788176dcfdfe725b24c1758c90b1d1595bused byjsonrpsee-ws-server
0.13.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdfb6c21556c551582b56e4e8e6e6249b0bbdb69bb7fa39efe9b9a6b54af9f206depends onused byk256
0.10.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2dused bykeccak
0.1.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838kusama-runtime
0.9.24github.com/paritytech/polkadot↘ 86↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.0 - 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.24 - 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-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
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-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-fn
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - parity-scale-codec
3.1.5 - polkadot-primitives
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.137 - serde_derive
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.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.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- beefy-primitives
kusama-runtime-constants
0.9.24github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bykv-log-macro
1.0.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977fdepends onused bykvdb
0.11.0crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma301d8ecb7989d4a6e2c57a49baca77d353bdbf879909debe3f375fe25d61f86depends onused by- frame-benchmarking-cli
4.0.0-dev - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-service
0.9.24 - sc-client-db
0.10.0-dev - sp-database
4.0.0-dev
- frame-benchmarking-cli
kvdb-memorydb
0.11.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumece7e668abd21387aeb6628130a6f4c802787f014fa46bc83221448322250357used bykvdb-rocksdb
0.15.2crates.io↘ 10↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca7fbdfd71cd663dceb0faf3367a99f8cf724514933e9867cec4995b6027cbc1depends onlazy_static
1.4.0crates.io↘ 0↖ 32sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.59.2 - flexi_logger
0.15.12 - frame-benchmarking-cli
4.0.0-dev - fs-swap
0.2.6 - jsonrpsee-http-server
0.13.1 - libp2p
0.45.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-mdns
0.37.0 - libp2p-noise
0.36.0 - polkadot-node-jaeger
0.9.24 - prometheus
0.13.1 - prost-build
0.9.0 - prost-build
0.10.4 - sc-executor
0.10.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - schannel
0.1.20 - sharded-slab
0.1.4 - sp-core
6.0.0 - sp-keyring
6.0.0 - sp-panic-handler
4.0.0 - statrs
0.15.0 - tracing-log
0.1.3 - tracing-subscriber
0.2.25 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - wasm-bindgen-backend
0.2.81 - wasmtime
0.35.3 - wasmtime-jit-debug
0.35.3 - which
4.2.5
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used bylibc
0.2.126crates.io↘ 0↖ 69sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836used by- async-io
1.7.0 - async-process
1.4.0 - atty
0.2.14 - backtrace
0.3.65 - bzip2-sys
0.1.11+1.0.8 - chrono
0.4.19 - clang-sys
1.3.3 - coarsetime
0.1.22 - core-foundation
0.9.3 - cpufeatures
0.2.2 - cranelift-native
0.82.3 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - errno-dragonfly
0.1.2 - fdlimit
0.2.1 - fs-swap
0.2.6 - fs2
0.4.3 - getrandom
0.1.16 - getrandom
0.2.7 - hermit-abi
0.1.19 - hostname
0.3.1 - if-addrs
0.7.0 - jobserver
0.1.24 - libp2p-tcp
0.33.0 - librocksdb-sys
0.6.1+6.28.2 - lz4
1.23.3 - lz4-sys
1.9.3 - mach
0.3.2 - memfd
0.4.1 - memmap2
0.2.3 - memmap2
0.5.4 - mio
0.8.4 - netlink-packet-core
0.4.2 - netlink-packet-route
0.11.0 - netlink-sys
0.8.2 - nix
0.22.3 - num_cpus
1.13.1 - parity-db
0.3.14 - parking_lot_core
0.8.5 - parking_lot_core
0.9.3 - polling
2.2.0 - rand
0.7.3 - rand
0.8.5 - region
2.2.0 - ring
0.16.20 - rocksdb
0.18.0 - rpassword
5.0.1 - rustix
0.33.7 - sc-executor-wasmtime
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - security-framework
2.6.1 - security-framework-sys
2.6.1 - signal-hook
0.3.14 - signal-hook-registry
1.4.0 - socket2
0.4.4 - static_init
0.5.2 - system-configuration-sys
0.5.0 - tempfile
3.3.0 - tikv-jemalloc-sys
0.4.3+5.2.1-patched.2 - time
0.1.44 - tokio
1.19.2 - wasmi
0.9.1 - wasmtime
0.35.3 - wasmtime-runtime
0.35.3 - which
4.2.5 - zstd-safe
4.1.6+zstd.1.5.2 - zstd-sys
1.6.3+zstd.1.5.2
- async-io
libloading
0.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753depends onused bylibloading
0.7.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumefbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddddepends onused bylibm
0.2.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839dbused bylibp2p
0.45.1crates.io↘ 36↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41726ee8f662563fafba2d2d484b14037cc8ecb8c953fbfc8439d4ce3a0a9029depends on- bytes
1.1.0 - futures
0.3.21 - futures-timer
3.0.2 - getrandom
0.2.7 - instant
0.1.12 - lazy_static
1.4.0 - libp2p-autonat
0.4.1 - libp2p-core
0.33.0 - libp2p-deflate
0.33.0 - libp2p-dns
0.33.0 - libp2p-floodsub
0.36.0 - libp2p-gossipsub
0.38.1 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-mdns
0.37.0 - libp2p-metrics
0.6.1 - libp2p-mplex
0.33.0 - libp2p-noise
0.36.0 - libp2p-ping
0.36.0 - libp2p-plaintext
0.33.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - libp2p-request-response
0.18.0 - libp2p-swarm
0.36.1 - libp2p-swarm-derive
0.27.2 - libp2p-tcp
0.33.0 - libp2p-uds
0.32.0 - libp2p-wasm-ext
0.33.0 - libp2p-websocket
0.35.0 - libp2p-yamux
0.37.0 - multiaddr
0.14.0 - parking_lot
0.12.1 - pin-project
1.0.10 - rand
0.7.3 - smallvec
1.8.0
- bytes
libp2p-autonat
0.4.1crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d45945fd2f96c4b133c23d5c28a8b7fc8d7138e6dd8d5a8cd492dd384f888e3depends onused bylibp2p-core
0.32.1crates.io↘ 26↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb5b02602099fb75cb2d16f9ea860a320d6eb82ce41e95ab680912c454805cd5depends on- asn1_der
0.7.5 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.6.1 - fnv
1.0.7 - futures
0.3.21 - futures-timer
3.0.2 - instant
0.1.12 - lazy_static
1.4.0 - log
0.4.17 - multiaddr
0.14.0 - multihash
0.16.2 - multistream-select
0.11.0 - parking_lot
0.12.1 - pin-project
1.0.10 - prost
0.9.0 - prost-build
0.9.0 - rand
0.8.5 - ring
0.16.20 - rw-stream-sink
0.2.1 - sha2
0.10.2 - smallvec
1.8.0 - thiserror
1.0.31 - unsigned-varint
0.7.1 - void
1.0.2 - zeroize
1.4.3
used by- asn1_der
libp2p-core
0.33.0crates.io↘ 27↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42d46fca305dee6757022e2f5a4f6c023315084d0ed7441c3ab244e76666d979depends on- asn1_der
0.7.5 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.6.1 - fnv
1.0.7 - futures
0.3.21 - futures-timer
3.0.2 - instant
0.1.12 - lazy_static
1.4.0 - libsecp256k1
0.7.0 - log
0.4.17 - multiaddr
0.14.0 - multihash
0.16.2 - multistream-select
0.11.0 - parking_lot
0.12.1 - pin-project
1.0.10 - prost
0.10.4 - prost-build
0.10.4 - rand
0.8.5 - ring
0.16.20 - rw-stream-sink
0.3.0 - sha2
0.10.2 - smallvec
1.8.0 - thiserror
1.0.31 - unsigned-varint
0.7.1 - void
1.0.2 - zeroize
1.4.3
used by- libp2p
0.45.1 - libp2p-autonat
0.4.1 - libp2p-deflate
0.33.0 - libp2p-dns
0.33.0 - libp2p-floodsub
0.36.0 - libp2p-gossipsub
0.38.1 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-mdns
0.37.0 - libp2p-metrics
0.6.1 - libp2p-mplex
0.33.0 - libp2p-noise
0.36.0 - libp2p-ping
0.36.0 - libp2p-plaintext
0.33.0 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - libp2p-request-response
0.18.0 - libp2p-swarm
0.36.1 - libp2p-tcp
0.33.0 - libp2p-wasm-ext
0.33.0 - libp2p-websocket
0.35.0 - libp2p-yamux
0.37.0
- asn1_der
libp2p-deflate
0.33.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86adefc55ea4ed8201149f052fb441210727481dff1fb0b8318460206a79f5fbused bylibp2p-dns
0.33.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbb462ec3a51fab457b4b44ac295e8b0a4b04dc175127e615cf996b1f0f1a268depends onused bylibp2p-floodsub
0.36.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma505d0c6f851cbf2919535150198e530825def8bd3757477f13dc3a57f46cbccdepends onused bylibp2p-gossipsub
0.38.1crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43e064ba4d7832e01c738626c6b274ae100baba05f5ffcc7b265c2a3ed398108depends onlibp2p-identify
0.36.1crates.io↘ 13↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb84b53490442d086db1fa5375670c9666e79143dccadef3f7c74a4346899a984depends onlibp2p-kad
0.37.1crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f6b5d4de90fcd35feb65ea6223fd78f3b747a64ca4b65e0813fbe66a27d56aadepends onlibp2p-mdns
0.37.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4783f8cf00c7b6c1ff0f1870b4fcf50b042b45533d2e13b6fb464caf447a6951depends onused bylibp2p-metrics
0.6.1crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum564a7e5284d7d9b3140fdfc3cb6567bc32555e86a21de5604c2ec85da05cf384depends onused bylibp2p-mplex
0.33.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ff9c893f2367631a711301d703c47432af898c9bb8253bea0e2c051a13f7640depends onused bylibp2p-noise
0.36.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf2cee1dad1c83325bbd182a8e94555778699cec8a9da00086efb7522c4c15addepends onused bylibp2p-ping
0.36.0crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd41516c82fe8dd148ec925eead0c5ec08a0628f7913597e93e126e4dfb4e0787depends onlibp2p-plaintext
0.33.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb007e737adc5d28b2e03223b0210164928ad742591127130796a72aa8eaf54fdepends onused bylibp2p-pnet
0.22.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92cused bylibp2p-relay
0.9.1crates.io↘ 18↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624ead3406f64437a0d4567c31bd128a9a0b8226d5f16c074038f5d0fc32f650depends onlibp2p-rendezvous
0.6.0crates.io↘ 15↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc59967ea2db2c7560f641aa58ac05982d42131863fcd3dd6dcf0dd1daf81c60cdepends onused bylibp2p-request-response
0.18.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb02e0acb725e5a757d77c96b95298fd73a7394fe82ba7b8bbeea510719cbe441depends onlibp2p-swarm
0.36.1crates.io↘ 12↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f4bb21c5abadbf00360c734f16bf87f1712ed4f23cd46148f625d2ddb867346depends onlibp2p-swarm-derive
0.27.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f693c8c68213034d472cbb93a379c63f4f307d97c06f1c41e4985de481687a5depends onused bylibp2p-tcp
0.33.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f4933e38ef21b50698aefc87799c24f2a365c9d3f6cf50471f3f6a0bc410892depends onused bylibp2p-uds
0.32.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24bdab114f7f2701757d6541266e1131b429bbae382008f207f2114ee4222dcbused bylibp2p-wasm-ext
0.33.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf066f2b8b1a1d64793f05da2256e6842ecd0293d6735ca2e9bda89831a1bdc06depends onused bylibp2p-websocket
0.35.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum39d398fbb29f432c4128fabdaac2ed155c3bcaf1b9bd40eeeb10a471eefacbf5depends onused bylibp2p-yamux
0.37.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fe653639ad74877c759720febb0cbcbf4caa221adde4eed2d3126ce5c6f381fused bylibrocksdb-sys
0.6.1+6.28.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81bc587013734dadb7cf23468e531aa120788b87243648be42e2d3a072186291depends onused bylibsecp256k1
0.7.0crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37depends 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 onlinked_hash_set
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onused bylinked-hash-map
0.5.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3linregress
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8depends onused bylinux-raw-sys
0.0.42crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5284f00d480e1c39af34e72f8ad60b94f47007e3481cd3b731c1d67190ddc7b7used bylock_api
0.4.7crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53depends onlog
0.4.17crates.io↘ 2↖ 175sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382edepends onused by- async-io
1.7.0 - async-std
1.12.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cranelift-codegen
0.82.3 - cranelift-frontend
0.82.3 - cranelift-wasm
0.82.3 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - env_logger
0.9.0 - evm
0.35.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - file-per-thread-logger
0.1.5 - finality-grandpa
0.15.0 - flexi_logger
0.15.12 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - globset
0.4.9 - handlebars
4.3.1 - hyper-rustls
0.23.0 - if-watch
1.1.0 - kusama-runtime
0.9.24 - kv-log-macro
1.0.7 - kvdb-rocksdb
0.15.2 - libp2p-autonat
0.4.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-dns
0.33.0 - libp2p-floodsub
0.36.0 - libp2p-gossipsub
0.38.1 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-mdns
0.37.0 - libp2p-mplex
0.33.0 - libp2p-noise
0.36.0 - libp2p-ping
0.36.0 - libp2p-plaintext
0.33.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - libp2p-request-response
0.18.0 - libp2p-swarm
0.36.1 - libp2p-tcp
0.33.0 - libp2p-uds
0.32.0 - libp2p-websocket
0.35.0 - mio
0.8.4 - multistream-select
0.11.0 - netlink-proto
0.9.2 - netlink-sys
0.8.2 - opal-runtime
0.9.24 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-offences
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-unique-scheduler
0.1.0 - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - parity-db
0.3.14 - polkadot-cli
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-performance-test
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - polling
2.2.0 - prost-build
0.9.0 - prost-build
0.10.4 - quartz-runtime
0.9.24 - regalloc
0.0.34 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.24 - rtnetlink
0.9.1 - rustls
0.20.6 - 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-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-peerset
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
6.0.0 - sp-sandbox
0.10.0-dev - sp-state-machine
0.12.0 - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-wasm-interface
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - thrift
0.15.0 - tracing-log
0.1.3 - trie-db
0.23.1 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - try-runtime-cli
0.10.0-dev - unique-node
0.9.24 - unique-runtime
0.9.24 - want
0.3.0 - wasm-bindgen-backend
0.2.81 - wasm-gc-api
0.1.11 - wasmtime
0.35.3 - wasmtime-cache
0.35.3 - wasmtime-cranelift
0.35.3 - wasmtime-environ
0.35.3 - wasmtime-jit
0.35.3 - wasmtime-runtime
0.35.3 - westend-runtime
0.9.24 - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24 - yamux
0.10.1
- async-io
lru
0.6.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91depends onused bylru
0.7.7crates.io↘ 1↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc84e6fe5655adc6ce00787cf7dcaf8dc4f998a0565d23eafc207a8b08ca3349adepends onused by- fc-rpc
2.0.0-dev - libp2p-identify
0.36.1 - parity-util-mem
0.11.0 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-service
0.9.24 - 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 - tracing-log
0.1.3
- fc-rpc
lru-cache
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1cdepends onused bylz4
1.23.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4edcb94251b1c375c459e5abe9fb0168c1c826c3370172684844f8f3f8d1a885depends onused bylz4-sys
1.9.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7be8908e2ed6f31c02db8a9fa962f03e36c53fbfde437363eae3306b85d7e17depends onused bymach
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onmaplit
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651dused bymatch_cfg
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4used bymatchers
0.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1depends onused bymatches
0.1.9crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853fmatrixmultiply
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumadd85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84depends onused bymemchr
2.5.0crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566dmemfd
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6627dc657574b49d6ad27105ed671822be56e0d2547d413bfbf3e8d8fa92e7adepends onused bymemmap2
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4depends onused bymemmap2
0.5.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5172b50c23043ff43dd53e51392f36519d9b35a8f3a410d30ece5d1aedd58aedepends onused bymemoffset
0.6.5crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79cedepends onmemory_units
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882used bymemory-db
0.29.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6566c70c1016f525ced45d7b7f97730a2bafb037c788211d0c186ef5b2189f0amemory-lru
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbeeb98b3d1ed2c0054bd81b5ba949a0243c3ccad751d45ea898fa8059fa2860adepends onmerlin
2.0.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-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.5.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773cccdepends onused bymio
0.8.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caafused bymore-asserts
0.2.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389multiaddr
0.14.0crates.io↘ 10↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261depends onmultibase
0.9.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404used bymultihash
0.16.2crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689depends onmultihash-derive
0.8.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcddepends onused bymultimap
0.8.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6amultistream-select
0.11.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83bnalgebra
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.11.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum733ea73609acfd7fa7ddadfb7bf709b0471668c456ad9513685af543a06342b2depends onused bynetlink-packet-utils
0.5.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845enetlink-proto
0.9.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef8785b8141e8432aa45fceb922a7e876d7da3fad37fa7e7ec702ace3aa0826bused bynetlink-sys
0.8.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e4c9f9547a08241bee7b6558b9b98e1f290d187de8b7cfca2bbb4937bcaa8f8used bynix
0.22.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624fafused bynodrop
0.1.14crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bbused bynohash-hasher
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451nom
7.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36depends onused bynum_cpus
1.13.1crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1depends onnum-bigint
0.2.6crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304num-complex
0.4.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19depends onused bynum-format
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465depends onused bynum-integer
0.1.45crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9depends onnum-rational
0.2.4crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aefnum-rational
0.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6aused bynum-traits
0.2.15crates.io↘ 2↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcddepends onused by- approx
0.5.1 - bp-runtime
0.1.0 - chrono
0.4.19 - finality-grandpa
0.15.0 - integer-sqrt
0.1.5 - nalgebra
0.27.1 - num-bigint
0.2.6 - num-complex
0.4.2 - num-integer
0.1.45 - num-rational
0.2.4 - num-rational
0.4.0 - ordered-float
1.1.1 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - rand_distr
0.4.3 - sc-consensus-babe
0.10.0-dev - simba
0.5.1 - sp-arithmetic
5.0.0 - sp-core
6.0.0 - sp-state-machine
0.12.0 - statrs
0.15.0 - wasmi
0.9.1
- approx
object
0.27.1crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9depends onobject
0.28.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424depends onused byonce_cell
1.12.0crates.io↘ 0↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225used by- ahash
0.7.6 - async-executor
1.4.1 - async-global-executor
2.2.0 - async-io
1.7.0 - async-process
1.4.0 - async-std
1.12.0 - blocking
1.2.0 - clap
3.2.6 - coarsetime
0.1.22 - crossbeam-epoch
0.9.9 - crossbeam-utils
0.8.9 - frame-support
4.0.0-dev - ring
0.16.20 - sc-offchain
4.0.0-dev - sc-tracing
4.0.0-dev - thread_local
1.1.4 - tiny-bip39
0.8.2 - tokio
1.19.2 - tracing-core
0.1.27 - wasmtime
0.35.3
- ahash
opal-runtime
0.9.24workspace↘ 76↖ 1depends on- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - fp-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 - log
0.4.17 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-inflation
0.1.0 - pallet-nonfungible
0.1.0 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-xcm
0.9.24 - parachain-info
0.1.0 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - rmrk-rpc
0.0.1 - scale-info
2.1.2 - serde
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0 - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
used by- cumulus-pallet-aura-ext
opaque-debug
0.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529cused byopaque-debug
0.3.0crates.io↘ 0↖ 7sourceregistry+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.1github.com/paritytech/polkadot↘ 9↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onorchestra-proc-macro
0.0.1github.com/paritytech/polkadot↘ 6↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfeused byordered-float
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7depends onused byorml-vesting
0.4.1-devgithub.com/uniquenetwork/open-runtime-module-library↘ 8↖ 3sourcegit+https://github.com/uniquenetwork/open-runtime-module-library?branch=unique-polkadot-v0.9.24#e69cabf5dc293e54a3ce60e3db4bf2f381bd20ebdepends onos_str_bytes
6.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afaused byowning_ref
0.4.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52cedepends onpallet-aura
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-babe
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.1.5 - scale-info
2.1.2 - sp-application-crypto
6.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.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.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-balances
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- cumulus-pallet-parachain-system
0.1.0 - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - pallet-bags-list
4.0.0-dev - pallet-inflation
0.1.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-treasury
4.0.0-dev - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - tests
0.1.0 - unique-runtime
0.9.24 - westend-runtime
0.9.24
- cumulus-pallet-parachain-system
pallet-base-fee
1.0.0github.com/uniquenetwork/frontier↘ 8↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends onpallet-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-beefy-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-bridge-dispatch
0.1.0github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpallet-bridge-grandpa
0.1.0github.com/paritytech/polkadot↘ 15↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpallet-bridge-messages
0.1.0github.com/paritytech/polkadot↘ 14↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpallet-child-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-collective
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-common
0.1.0workspace↘ 15↖ 16depends onused by- opal-runtime
0.9.24 - pallet-evm-contract-helpers
0.1.0 - pallet-fungible
0.1.0 - pallet-nonfungible
0.1.0 - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-structure
0.1.0 - pallet-unique
0.1.0 - quartz-runtime
0.9.24 - tests
0.1.0 - uc-rpc
0.1.0 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-rpc
0.1.0
- opal-runtime
pallet-democracy
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-election-provider-multi-phase
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-election-provider-support-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-elections-phragmen
5.0.0-devgithub.com/paritytech/substrate↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-ethereum
4.0.0-devgithub.com/uniquenetwork/frontier↘ 22↖ 8sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends on- ethereum
0.12.0 - ethereum-types
0.13.1 - evm
0.35.0 - fp-consensus
2.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 - log
0.4.17 - pallet-evm
6.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.1.5 - rlp
0.5.1 - scale-info
2.1.2 - serde
1.0.137 - sha3
0.10.1 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0
- ethereum
pallet-evm
6.0.0-devgithub.com/uniquenetwork/frontier↘ 20↖ 21sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.24#b1941ba0e691e4a95b414343fd89aceb94c4172bdepends on- evm
0.35.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex
0.4.3 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.1.5 - primitive-types
0.11.1 - rlp
0.5.1 - scale-info
2.1.2 - serde
1.0.137 - sha3
0.10.1 - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0
used by- opal-runtime
0.9.24 - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-nonfungible
0.1.0 - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-structure
0.1.0 - pallet-unique
0.1.0 - quartz-runtime
0.9.24 - tests
0.1.0 - uc-rpc
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0
- evm
pallet-evm-coder-substrate
0.1.0workspace↘ 12↖ 9depends onpallet-evm-contract-helpers
0.1.0workspace↘ 15↖ 3depends onpallet-evm-migration
0.1.0workspace↘ 11↖ 3pallet-evm-transaction-payment
0.1.0workspace↘ 13↖ 3depends onpallet-fungible
0.1.0workspace↘ 15↖ 5depends onpallet-gilt
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bypallet-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.1.5 - scale-info
2.1.2 - sp-application-crypto
6.0.0 - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0
- frame-benchmarking
pallet-identity
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-im-online
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-indices
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-inflation
0.1.0workspace↘ 13↖ 3depends onpallet-membership
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-mmr-rpc
3.0.0github.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bypallet-multisig
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-nicks
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-nomination-pools
1.0.0github.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-nomination-pools-benchmarking
1.0.0github.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-nonfungible
0.1.0workspace↘ 16↖ 8depends on- ethereum
0.12.0 - evm-coder
0.1.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.0 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-structure
0.1.0 - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - struct-versioning
0.1.0 - up-data-structs
0.1.0
- ethereum
pallet-offences
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-offences-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.1.5 - scale-info
2.1.2 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-std
4.0.0
- frame-benchmarking
pallet-preimage
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-proxy
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-randomness-collective-flip
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-recovery
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-refungible
0.1.0workspace↘ 13↖ 5depends onpallet-rmrk-core
0.1.0workspace↘ 15↖ 4depends onpallet-rmrk-equip
0.1.0workspace↘ 14↖ 3depends onpallet-scheduler
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-session
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- kusama-runtime
0.9.24 - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - rococo-runtime
0.9.24 - westend-runtime
0.9.24
- kusama-runtime
pallet-session-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-society
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-staking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.1.5 - rand_chacha
0.2.2 - scale-info
2.1.2 - serde
1.0.137 - sp-application-crypto
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-std
4.0.0
used by- kusama-runtime
0.9.24 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - rococo-runtime
0.9.24 - westend-runtime
0.9.24
- frame-benchmarking
pallet-staking-reward-curve
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28pallet-staking-reward-fn
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bypallet-structure
0.1.0workspace↘ 9↖ 8depends onpallet-sudo
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-template-transaction-payment
3.0.0github.com/uniquenetwork/pallet-sponsoring↘ 13↖ 3sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.24#05cb0f02abecad915d32455df7a7724b3e2869aadepends onpallet-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 17sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- kusama-runtime
0.9.24 - opal-runtime
0.9.24 - pallet-aura
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
0.1.0 - pallet-session
4.0.0-dev - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - tests
0.1.0 - unique-runtime
0.9.24 - westend-runtime
0.9.24
- kusama-runtime
pallet-tips
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-transaction-payment
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- bridge-runtime-common
0.1.0 - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - pallet-template-transaction-payment
3.0.0 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - tests
0.1.0 - unique-runtime
0.9.24 - westend-runtime
0.9.24 - xcm-builder
0.9.24
- bridge-runtime-common
pallet-transaction-payment-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-transaction-payment-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28pallet-treasury
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-unique
0.1.0workspace↘ 17↖ 6depends on- ethereum
0.12.0 - evm-coder
0.1.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.0 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-nonfungible
0.1.0 - parity-scale-codec
3.1.5 - scale-info
2.1.2 - serde
1.0.137 - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - up-data-structs
0.1.0
- ethereum
pallet-unique-scheduler
0.1.0workspace↘ 13↖ 4depends onpallet-utility
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-vesting
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onpallet-xcm
0.9.24github.com/paritytech/polkadot↘ 11↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpallet-xcm-benchmarks
0.9.24github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onparachain-info
0.1.0github.com/paritytech/cumulus↘ 6↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.24#95ca5a085727c1494ddeeae4a2b2e69c4ee1933bdepends onparity-db
0.3.14crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum966eb23bd3a09758b8dac09f82b9d417c00f14e5d46171bf04cffdd9cb2e1eb1depends onparity-scale-codec
2.3.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909depends onused byparity-scale-codec
3.1.5crates.io↘ 6↖ 236sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-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.12.0 - evm
0.35.0 - evm-core
0.35.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.15.0 - fork-tree
3.0.0 - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - 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-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - impl-codec
0.6.0 - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - 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.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.0 - 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-recovery
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - parachain-info
0.1.0 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-core-primitives
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-erasure-coding
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-metrics
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-statement-distribution
0.9.24 - polkadot-statement-table
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - remote-externalities
0.10.0-dev - rmrk-traits
0.1.0 - rococo-runtime
0.9.24 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-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-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool
4.0.0-dev - scale-info
2.1.2 - slot-range-helper
0.9.24 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-runtime-interface
6.0.0 - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
5.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - sp-version-proc-macro
4.0.0-dev - sp-wasm-interface
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - tests
0.1.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - unique-node
0.9.24 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.24 - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- beefy-gadget
parity-scale-codec-derive
2.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27used byparity-scale-codec-derive
3.1.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cdused byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-util-mem
0.11.0crates.io↘ 10↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc32561d248d352148124f036cac253a644685a21dc9fea383eb4907d7bd35a8fdepends onused by- fp-self-contained
1.0.0-dev - kvdb
0.11.0 - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - memory-db
0.29.0 - polkadot-core-primitives
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - sc-informant
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0
- fp-self-contained
parity-util-mem-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2parity-wasm
0.32.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512acdepends onused byparity-wasm
0.42.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92parking
2.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72parking_lot
0.11.2crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99parking_lot
0.12.1crates.io↘ 2↖ 50sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228fdepends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-db
2.0.0-dev - jsonrpsee-core
0.13.1 - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - libp2p
0.45.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-dns
0.33.0 - libp2p-mplex
0.33.0 - libp2p-websocket
0.35.0 - libp2p-yamux
0.37.0 - parity-util-mem
0.11.0 - polkadot-network-bridge
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-overseer
0.9.24 - prometheus
0.13.1 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-database
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-state-machine
0.12.0 - tokio
1.19.2 - trust-dns-resolver
0.21.2 - yamux
0.10.1
- beefy-gadget
parking_lot_core
0.8.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216used byparking_lot_core
0.9.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929used bypaste
1.0.7crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fcpbkdf2
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbddepends onused bypbkdf2
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffadepends onused bypeeking_take_while
0.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099used bypercent-encoding
2.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32epest
2.1.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53depends onpest_derive
2.1.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0depends onused bypest_generator
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55used bypest_meta
2.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11ddepends onused bypetgraph
0.6.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143depends onpin-project
0.4.29crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9615c18d31137579e9ff063499264ddc1278e7b1982757ebc111028c4d1dc909depends onused bypin-project
1.0.10crates.io↘ 1↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75edepends onused by- jsonrpsee-client-transport
0.13.1 - libp2p
0.45.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.9.1 - libp2p-swarm
0.36.1 - multistream-select
0.11.0 - orchestra
0.0.1 - polkadot-node-core-pvf
0.9.24 - polkadot-node-subsystem-util
0.9.24 - rw-stream-sink
0.3.0 - sc-network
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
0.4.29crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum044964427019eed9d49d9d5bbce6047ef18f37100ea400912a9fa4a3523ab12adepends onused bypin-project-internal
1.0.10crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bbdepends onused bypin-project-lite
0.1.12crates.io↘ 0↖ 2sourceregistry+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↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkg-config
0.3.25crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03aeplatforms
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94polkadot-approval-distribution
0.9.24github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-availability-bitfield-distribution
0.9.24github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-availability-distribution
0.9.24github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.21 - lru
0.7.7 - parity-scale-codec
3.1.5 - polkadot-erasure-coding
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-primitives
0.9.24 - rand
0.8.5 - sp-core
6.0.0 - sp-keystore
0.12.0 - thiserror
1.0.31 - tracing-gum
0.9.24
used by- derive_more
polkadot-availability-recovery
0.9.24github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- fatality
0.0.6 - futures
0.3.21 - lru
0.7.7 - parity-scale-codec
3.1.5 - polkadot-erasure-coding
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-primitives
0.9.24 - rand
0.8.5 - sc-network
0.10.0-dev - thiserror
1.0.31 - tracing-gum
0.9.24
used by- fatality
polkadot-cli
0.9.24github.com/paritytech/polkadot↘ 18↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- clap
3.2.6 - frame-benchmarking-cli
4.0.0-dev - futures
0.3.21 - log
0.4.17 - polkadot-client
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-performance-test
0.9.24 - polkadot-service
0.9.24 - sc-cli
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sp-core
6.0.0 - sp-trie
6.0.0 - substrate-build-script-utils
3.0.0 - thiserror
1.0.31 - try-runtime-cli
0.10.0-dev
- clap
polkadot-client
0.9.24github.com/paritytech/polkadot↘ 33↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-primitives
4.0.0-dev - 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 - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-core-primitives
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-storage
6.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- beefy-primitives
polkadot-collator-protocol
0.9.24github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-core-primitives
0.9.24github.com/paritytech/polkadot↘ 6↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpolkadot-dispute-distribution
0.9.24github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.21 - lru
0.7.7 - parity-scale-codec
3.1.5 - polkadot-erasure-coding
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-primitives
0.9.24 - sc-network
0.10.0-dev - sp-application-crypto
6.0.0 - sp-keystore
0.12.0 - thiserror
1.0.31 - tracing-gum
0.9.24
used by- derive_more
polkadot-erasure-coding
0.9.24github.com/paritytech/polkadot↘ 7↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpolkadot-gossip-support
0.9.24github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-network-bridge
0.9.24github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- always-assert
0.1.2 - async-trait
0.1.56 - bytes
1.1.0 - futures
0.3.21 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-primitives
0.9.24 - sc-network
0.10.0-dev - sp-consensus
0.10.0-dev - tracing-gum
0.9.24
used by- always-assert
polkadot-node-collation-generation
0.9.24github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-approval-voting
0.9.24github.com/paritytech/polkadot↘ 22↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- bitvec
1.0.0 - derive_more
0.99.17 - futures
0.3.21 - futures-timer
3.0.2 - kvdb
0.11.0 - lru
0.7.7 - merlin
2.0.1 - parity-scale-codec
3.1.5 - polkadot-node-jaeger
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-primitives
0.9.24 - sc-keystore
4.0.0-dev - schnorrkel
0.9.1 - sp-application-crypto
6.0.0 - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-runtime
6.0.0 - thiserror
1.0.31 - tracing-gum
0.9.24
used by- bitvec
polkadot-node-core-av-store
0.9.24github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-backing
0.9.24github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-bitfield-signing
0.9.24github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-candidate-validation
0.9.24github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-chain-api
0.9.24github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-chain-selection
0.9.24github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-dispute-coordinator
0.9.24github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-parachains-inherent
0.9.24github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpolkadot-node-core-provisioner
0.9.24github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-pvf
0.9.24github.com/paritytech/polkadot↘ 24↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- always-assert
0.1.2 - assert_matches
1.5.0 - async-process
1.4.0 - async-std
1.12.0 - futures
0.3.21 - futures-timer
3.0.2 - parity-scale-codec
3.1.5 - pin-project
1.0.10 - polkadot-core-primitives
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-parachain
0.9.24 - rand
0.8.5 - 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
6.0.0 - sp-externalities
0.12.0 - sp-io
6.0.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-tracing
5.0.0 - sp-wasm-interface
6.0.0 - tempfile
3.3.0 - tracing-gum
0.9.24
- always-assert
polkadot-node-core-pvf-checker
0.9.24github.com/paritytech/polkadot↘ 9↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-core-runtime-api
0.9.24github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-node-jaeger
0.9.24github.com/paritytech/polkadot↘ 11↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpolkadot-node-metrics
0.9.24github.com/paritytech/polkadot↘ 12↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpolkadot-node-network-protocol
0.9.24github.com/paritytech/polkadot↘ 14↖ 13sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused by- polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24
- polkadot-approval-distribution
polkadot-node-primitives
0.9.24github.com/paritytech/polkadot↘ 15↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- bounded-vec
0.6.0 - futures
0.3.21 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - schnorrkel
0.9.1 - serde
1.0.137 - sp-application-crypto
6.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-maybe-compressed-blob
4.1.0-dev - thiserror
1.0.31 - zstd
0.10.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.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-erasure-coding
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-performance-test
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24 - polkadot-test-service
0.9.24
- bounded-vec
polkadot-node-subsystem
0.9.24github.com/paritytech/polkadot↘ 3↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfeused by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24 - polkadot-test-service
0.9.24
- cumulus-client-collator
polkadot-node-subsystem-types
0.9.24github.com/paritytech/polkadot↘ 12↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpolkadot-node-subsystem-util
0.9.24github.com/paritytech/polkadot↘ 26↖ 23sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- async-trait
0.1.56 - derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.21 - itertools
0.10.3 - kvdb
0.11.0 - lru
0.7.7 - parity-db
0.3.14 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.11.2 - pin-project
1.0.10 - polkadot-node-jaeger
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-overseer
0.9.24 - polkadot-primitives
0.9.24 - prioritized-metered-channel
0.2.0 - rand
0.8.5 - sp-application-crypto
6.0.0 - sp-core
6.0.0 - sp-keystore
0.12.0 - thiserror
1.0.31 - tracing-gum
0.9.24
used by- polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24
- async-trait
polkadot-overseer
0.9.24github.com/paritytech/polkadot↘ 15↖ 12sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- futures
0.3.21 - futures-timer
3.0.2 - lru
0.7.7 - orchestra
0.0.1 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - polkadot-node-metrics
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-primitives
0.9.24 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-core
6.0.0 - tracing-gum
0.9.24
used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-interface
0.1.0 - polkadot-network-bridge
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24
- futures
polkadot-parachain
0.9.24github.com/paritytech/polkadot↘ 10↖ 18sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - opal-runtime
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-primitives
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - unique-node
0.9.24 - unique-runtime
0.9.24 - westend-runtime
0.9.24 - xcm-builder
0.9.24
- cumulus-client-network
polkadot-performance-test
0.9.24github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-primitives
0.9.24github.com/paritytech/polkadot↘ 23↖ 58sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- bitvec
1.0.0 - frame-system
4.0.0-dev - hex-literal
0.3.4 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - polkadot-core-primitives
0.9.24 - polkadot-parachain
0.9.24 - scale-info
2.1.2 - serde
1.0.137 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-trie
6.0.0 - sp-version
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-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - kusama-runtime
0.9.24 - kusama-runtime-constants
0.9.24 - polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-client
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-erasure-coding
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-constants
0.9.24 - polkadot-runtime-metrics
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24 - polkadot-statement-table
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - rococo-runtime
0.9.24 - rococo-runtime-constants
0.9.24 - test-runtime-constants
0.9.24 - tracing-gum
0.9.24 - unique-node
0.9.24 - westend-runtime
0.9.24 - westend-runtime-constants
0.9.24
- bitvec
polkadot-rpc
0.9.24github.com/paritytech/polkadot↘ 25↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - jsonrpsee
0.13.1 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-primitives
0.9.24 - 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.12.0 - sp-runtime
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev
- beefy-gadget
polkadot-runtime
0.9.24github.com/paritytech/polkadot↘ 79↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.0 - 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-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-nicks
4.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.24 - parity-scale-codec
3.1.5 - polkadot-primitives
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-constants
0.9.24 - polkadot-runtime-parachains
0.9.24 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.137 - serde_derive
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.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.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- beefy-primitives
polkadot-runtime-common
0.9.24github.com/paritytech/polkadot↘ 40↖ 12sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.0 - 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.0 - 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-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.1.5 - polkadot-primitives
0.9.24 - polkadot-runtime-parachains
0.9.24 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.137 - serde_derive
1.0.137 - slot-range-helper
0.9.24 - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - static_assertions
1.1.0 - xcm
0.9.24
used by- kusama-runtime
0.9.24 - kusama-runtime-constants
0.9.24 - polkadot-client
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-constants
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - rococo-runtime
0.9.24 - rococo-runtime-constants
0.9.24 - test-runtime-constants
0.9.24 - westend-runtime
0.9.24 - westend-runtime-constants
0.9.24
- beefy-primitives
polkadot-runtime-constants
0.9.24github.com/paritytech/polkadot↘ 5↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onpolkadot-runtime-metrics
0.9.24github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfepolkadot-runtime-parachains
0.9.24github.com/paritytech/polkadot↘ 36↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- bitflags
1.3.2 - bitvec
1.0.0 - 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.1.5 - polkadot-primitives
0.9.24 - polkadot-runtime-metrics
0.9.24 - rand
0.8.5 - rand_chacha
0.3.1 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.137 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - static_assertions
1.1.0 - xcm
0.9.24 - xcm-executor
0.9.24
- bitflags
polkadot-service
0.9.24github.com/paritytech/polkadot↘ 96↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- async-trait
0.1.56 - beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.21 - hex-literal
0.3.4 - kusama-runtime
0.9.24 - kvdb
0.11.0 - kvdb-rocksdb
0.15.2 - lru
0.7.7 - 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.3.14 - polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-client
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-constants
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-statement-distribution
0.9.24 - rococo-runtime
0.9.24 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-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.137 - serde_json
1.0.81 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31 - tracing-gum
0.9.24 - westend-runtime
0.9.24
- async-trait
polkadot-statement-distribution
0.9.24github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bypolkadot-statement-table
0.9.24github.com/paritytech/polkadot↘ 3↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfepolkadot-test-runtime
0.9.24github.com/paritytech/polkadot↘ 55↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.0 - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.137 - serde_derive
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - test-runtime-constants
0.9.24 - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
used by- beefy-primitives
polkadot-test-service
0.9.24github.com/paritytech/polkadot↘ 47↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- frame-benchmarking
4.0.0-dev - frame-system
4.0.0-dev - futures
0.1.31 - futures
0.3.21 - hex
0.4.3 - pallet-balances
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem
0.9.24 - polkadot-overseer
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - rand
0.8.5 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - substrate-test-client
2.0.1 - tempfile
3.3.0 - test-runtime-constants
0.9.24 - tokio
1.19.2 - tracing-gum
0.9.24
used by- frame-benchmarking
polling
2.2.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259used bypoly1305
0.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246edeused bypolyval
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1used byppv-lite86
0.2.16crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872primitive-types
0.11.1crates.io↘ 6↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94aprioritized-metered-channel
0.2.0github.com/paritytech/polkadot↘ 8↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onproc-macro-crate
1.1.3crates.io↘ 2↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11adepends 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.13.1 - multihash-derive
0.8.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.1.2 - sp-api-proc-macro
4.0.0-dev - sp-runtime-interface-proc-macro
5.0.0 - substrate-test-utils-derive
0.10.0-dev - tracing-gum-proc-macro
0.9.24
- cumulus-pallet-parachain-system-proc-macro
proc-macro-error
1.0.4crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro2
1.0.40crates.io↘ 1↖ 66sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7depends onused by- async-trait
0.1.56 - auto_impl
0.5.0 - bindgen
0.59.2 - clap_derive
3.2.6 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.4 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.4.0 - enumflags2_derive
0.7.4 - enumn
0.1.4 - evm-coder-macros
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.21 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.13.1 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.29 - pin-project-internal
1.0.10 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.2.0 - prost-derive
0.9.0 - prost-derive
0.10.1 - quote
1.0.20 - ref-cast-impl
1.0.7 - 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.1.2 - serde_derive
1.0.137 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
4.0.0 - sp-runtime-interface-proc-macro
5.0.0 - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.22.0 - static_init_macro
0.5.0 - strum_macros
0.23.1 - strum_macros
0.24.0 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.98 - synstructure
0.12.6 - thiserror-impl
1.0.31 - tokio-macros
0.2.6 - tokio-macros
1.8.0 - tracing-attributes
0.1.21 - tracing-gum-proc-macro
0.9.24 - wasm-bindgen-backend
0.2.81 - wasm-bindgen-macro-support
0.2.81 - xcm-procedural
0.1.0 - zeroize_derive
1.3.2
- async-trait
prometheus
0.13.1crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcface98dfa6d645ea4c789839f176e4b072265d085bfcc48eaa8d137f58d3c39prometheus-client
0.16.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac1abe0255c04d15f571427a2d1e00099016506cf3297b53853acd2b7eb87825prometheus-client-derive-text-encode
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652depends onused byprost
0.9.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001depends onprost
0.10.4crates.io↘ 2↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083edepends onused by- libp2p-autonat
0.4.1 - libp2p-core
0.33.0 - libp2p-floodsub
0.36.0 - libp2p-gossipsub
0.38.1 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-noise
0.36.0 - libp2p-plaintext
0.33.0 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - prost-build
0.10.4 - prost-codec
0.1.0 - prost-types
0.10.1 - sc-authority-discovery
0.10.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev
- libp2p-autonat
prost-build
0.9.0crates.io↘ 12↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5depends onprost-build
0.10.4crates.io↘ 14↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cabdepends onprost-codec
0.1.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00af1e92c33b4813cc79fda3f2dbf56af5169709be0202df730e9ebc3e4cd007prost-derive
0.9.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720feused byprost-derive
0.10.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7ccused byprost-types
0.9.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0adepends onused byprost-types
0.10.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68depends onused bypsm
0.1.18crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum871372391786ccec00d3c5d3d6608905b3d4db263639cfe075d3b60a736d115adepends onused byquartz-runtime
0.9.24workspace↘ 76↖ 1depends on- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - fp-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 - log
0.4.17 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-inflation
0.1.0 - pallet-nonfungible
0.1.0 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-xcm
0.9.24 - parachain-info
0.1.0 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - rmrk-rpc
0.0.1 - scale-info
2.1.2 - serde
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0 - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
used by- cumulus-pallet-aura-ext
quick-error
1.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
1.0.20crates.io↘ 1↖ 71sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804depends onused by- async-attributes
1.1.2 - async-trait
0.1.56 - auto_impl
0.5.0 - bindgen
0.59.2 - clap_derive
3.2.6 - ctor
0.1.22 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.4 - darling_macro
0.13.4 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.4.0 - enumflags2_derive
0.7.4 - enumn
0.1.4 - evm-coder-macros
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.21 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.13.1 - libp2p-swarm-derive
0.27.2 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - pest_generator
2.1.3 - pin-project-internal
0.4.29 - pin-project-internal
1.0.10 - polkadot-performance-test
0.9.24 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.2.0 - prost-derive
0.9.0 - prost-derive
0.10.1 - ref-cast-impl
1.0.7 - 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.1.2 - serde_derive
1.0.137 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
4.0.0 - sp-runtime-interface-proc-macro
5.0.0 - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.22.0 - static_init_macro
0.5.0 - struct-versioning
0.1.0 - strum_macros
0.23.1 - strum_macros
0.24.0 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.98 - synstructure
0.12.6 - thiserror-impl
1.0.31 - tokio-macros
0.2.6 - tokio-macros
1.8.0 - tracing-attributes
0.1.21 - tracing-gum-proc-macro
0.9.24 - wasm-bindgen-backend
0.2.81 - wasm-bindgen-macro
0.2.81 - wasm-bindgen-macro-support
0.2.81 - xcm-procedural
0.1.0 - zeroize_derive
1.3.2
- async-attributes
radium
0.6.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fbused byradium
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09used byrand
0.7.3crates.io↘ 6↖ 26sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- cuckoofilter
0.5.0 - ed25519-dalek
1.0.1 - libp2p
0.45.1 - libp2p-floodsub
0.36.0 - libp2p-gossipsub
0.38.1 - libp2p-kad
0.37.1 - libp2p-mplex
0.33.0 - libp2p-ping
0.36.0 - libp2p-pnet
0.22.0 - libp2p-request-response
0.18.0 - libp2p-swarm
0.36.1 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - tiny-bip39
0.8.2
- cuckoofilter
rand
0.8.5crates.io↘ 3↖ 37sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404used by- backoff
0.4.0 - cumulus-client-pov-recovery
0.1.0 - fc-rpc
2.0.0-dev - fixed-hash
0.7.0 - frame-benchmarking-cli
4.0.0-dev - jsonrpsee-core
0.13.1 - libp2p-autonat
0.4.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-mdns
0.37.0 - libp2p-noise
0.36.0 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - libsecp256k1
0.7.0 - mick-jaeger
0.1.8 - nalgebra
0.27.1 - names
0.13.0 - parity-db
0.3.14 - polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-service
0.9.24 - rand_distr
0.4.3 - sc-finality-grandpa
0.10.0-dev - soketto
0.7.1 - statrs
0.15.0 - trust-dns-proto
0.21.2 - twox-hash
1.6.3 - wasmtime-runtime
0.35.3 - yamux
0.10.1
- backoff
rand_chacha
0.2.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onrand_chacha
0.3.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88depends onrand_core
0.5.1crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.3crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7depends onrand_distr
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31depends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_pcg
0.2.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byrand_pcg
0.3.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73edepends onrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7dused byrayon-core
1.9.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683fused byredox_syscall
0.2.13crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42depends 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.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum685d58625b6c2b83e4cc88a27c4bf65adb7b6b16dbdc413e515c9405b47432abdepends onused byref-cast-impl
1.0.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma043824e29c94169374ac5183ac0ed43f5724dc4556b19568007486bd840fa1fdepends onused byregalloc
0.0.34crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62446b1d3ebf980bdc68837700af1d77b37bc430e524bf95319c6eada2a4cc02depends onused byregex
1.5.6crates.io↘ 3↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1regex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-syntax
0.6.26crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64region
2.2.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0remote-externalities
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused byremove_dir_all
0.5.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7depends onused byresolv-conf
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00depends onused byretain_mut
0.1.9crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0rfc6979
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525depends onused byring
0.16.20crates.io↘ 7↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcrlp
0.5.1crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5depends onrlp-derive
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672adepends onused byrmrk-traits
0.1.0workspace↘ 3↖ 4rocksdb
0.18.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum620f4129485ff1a7128d184bc687470c21c7951b64779ebc9cfdad3dcd920290depends onused byrococo-runtime
0.9.24github.com/paritytech/polkadot↘ 70↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-merkle-tree
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-messages
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
0.1.0 - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-collective
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-xcm
0.9.24 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - rococo-runtime-constants
0.9.24 - scale-info
2.1.2 - serde
1.0.137 - serde_derive
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
used by- beefy-merkle-tree
rococo-runtime-constants
0.9.24github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused byrpassword
5.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efbdepends onused byrtnetlink
0.9.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f54290e54521dac3de4149d83ddf9f62a359b3cc93bcb494a794a41e6f4744bdepends onused byrustc_version
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onused byrustc_version
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366depends onused byrustc-demangle
0.1.21crates.io↘ 0↖ 3sourceregistry+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↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rustix
0.33.7crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum938a344304321a9da4973b9ff4f9f8db9caf4597dfd9dda6a60b523340a0fff0rustls
0.20.6crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033depends onrustls-native-certs
0.6.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50rustls-pemfile
1.0.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9depends onused byrustversion
1.0.7crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcfrw-stream-sink
0.2.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020used byrw-stream-sink
0.3.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04ryu
1.0.10crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695used bysafe-mix
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215cdepends onsalsa20
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686depends onused bysame-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.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sc-authority-discovery
0.10.0-devgithub.com/paritytech/substrate↘ 20↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- async-trait
0.1.56 - futures
0.3.21 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.45.1 - log
0.4.17 - parity-scale-codec
3.1.5 - prost
0.10.4 - prost-build
0.9.0 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31
- async-trait
sc-basic-authorship
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- futures
0.3.21 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.1.5 - 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
6.0.0 - sp-inherents
4.0.0-dev - sp-runtime
6.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.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-chain-spec
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-chain-spec-derive
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysc-cli
0.10.0-devgithub.com/paritytech/substrate↘ 32↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- chrono
0.4.19 - clap
3.2.6 - fdlimit
0.2.1 - futures
0.3.21 - hex
0.4.3 - libp2p
0.45.1 - log
0.4.17 - names
0.13.0 - parity-scale-codec
3.1.5 - rand
0.7.3 - regex
1.5.6 - rpassword
5.0.1 - 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-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.137 - serde_json
1.0.81 - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-keyring
6.0.0 - sp-keystore
0.12.0 - sp-panic-handler
4.0.0 - sp-runtime
6.0.0 - sp-version
5.0.0 - thiserror
1.0.31 - tiny-bip39
0.8.2 - tokio
1.19.2
- chrono
sc-client-api
4.0.0-devgithub.com/paritytech/substrate↘ 21↖ 51sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- fnv
1.0.7 - futures
0.3.21 - hash-db
0.15.2 - log
0.4.17 - parity-scale-codec
3.1.5 - 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
6.0.0 - sp-database
4.0.0-dev - sp-externalities
0.12.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-trie
6.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-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 - polkadot-client
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-overseer
0.9.24 - polkadot-rpc
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24 - 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-consensus-uncles
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-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-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.24 - unique-rpc
0.1.0
- fnv
sc-client-db
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- hash-db
0.15.2 - kvdb
0.11.0 - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - linked-hash-map
0.5.4 - log
0.4.17 - parity-db
0.3.14 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-state-db
0.10.0-dev - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-database
4.0.0-dev - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-trie
6.0.0
- hash-db
sc-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 17↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - fc-consensus
2.0.0-dev - polkadot-client
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24 - 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-sync
0.10.0-dev - sc-service
0.10.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.24
- cumulus-client-consensus-aura
sc-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 22↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- async-trait
0.1.56 - futures
0.3.21 - log
0.4.17 - parity-scale-codec
3.1.5 - 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
6.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
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31
- async-trait
sc-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 36↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- async-trait
0.1.56 - fork-tree
3.0.0 - futures
0.3.21 - log
0.4.17 - merlin
2.0.1 - num-bigint
0.2.6 - num-rational
0.2.4 - num-traits
0.2.15 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - rand
0.7.3 - retain_mut
0.1.9 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-keystore
4.0.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - serde
1.0.137 - sp-api
4.0.0-dev - sp-application-crypto
6.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
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31
- async-trait
sc-consensus-babe-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 15↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysc-consensus-epochs
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-consensus-manual-seal
0.10.0-devgithub.com/paritytech/substrate↘ 27↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- assert_matches
1.5.0 - async-trait
0.1.56 - futures
0.3.21 - jsonrpsee
0.13.1 - log
0.4.17 - parity-scale-codec
3.1.5 - 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.137 - 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
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31
used by- assert_matches
sc-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- async-trait
0.1.56 - futures
0.3.21 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.1.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-timestamp
4.0.0-dev - thiserror
1.0.31
- async-trait
sc-consensus-uncles
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysc-executor
0.10.0-devgithub.com/paritytech/substrate↘ 20↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- lazy_static
1.4.0 - lru
0.7.7 - parity-scale-codec
3.1.5 - 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
6.0.0 - sp-core-hashing-proc-macro
5.0.0 - sp-externalities
0.12.0 - sp-io
6.0.0 - sp-panic-handler
4.0.0 - sp-runtime-interface
6.0.0 - sp-tasks
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - sp-wasm-interface
6.0.0 - tracing
0.1.35 - wasmi
0.9.1
- lazy_static
sc-executor-common
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-executor-wasmi
0.10.0-devgithub.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysc-executor-wasmtime
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-finality-grandpa
0.10.0-devgithub.com/paritytech/substrate↘ 33↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- ahash
0.7.6 - async-trait
0.1.56 - dyn-clone
1.0.6 - finality-grandpa
0.15.0 - fork-tree
3.0.0 - futures
0.3.21 - futures-timer
3.0.2 - hex
0.4.3 - log
0.4.17 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.81 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31
- ahash
sc-finality-grandpa-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-informant
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysc-keystore
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-network
0.10.0-devgithub.com/paritytech/substrate↘ 45↖ 22sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- async-trait
0.1.56 - asynchronous-codec
0.6.0 - bitflags
1.3.2 - bytes
1.1.0 - cid
0.8.5 - either
1.6.1 - fnv
1.0.7 - fork-tree
3.0.0 - futures
0.3.21 - futures-timer
3.0.2 - hex
0.4.3 - ip_network
0.4.1 - libp2p
0.45.1 - linked-hash-map
0.5.4 - linked_hash_set
0.1.4 - log
0.4.17 - lru
0.7.7 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - pin-project
1.0.10 - prost
0.10.4 - prost-build
0.9.0 - rand
0.7.3 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.137 - serde_json
1.0.81 - smallvec
1.8.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31 - unsigned-varint
0.7.1 - void
1.0.2 - zeroize
1.4.3
used by- beefy-gadget
4.0.0-dev - cumulus-relay-chain-inprocess-interface
0.1.0 - fc-rpc
2.0.0-dev - polkadot-availability-recovery
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.24 - unique-rpc
0.1.0
- async-trait
sc-network-common
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-network-gossip
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-network-light
0.10.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysc-network-sync
0.10.0-devgithub.com/paritytech/substrate↘ 22↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- bitflags
1.3.2 - either
1.6.1 - fork-tree
3.0.0 - futures
0.3.21 - libp2p
0.45.1 - log
0.4.17 - lru
0.7.7 - parity-scale-codec
3.1.5 - prost
0.10.4 - prost-build
0.9.0 - 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 - smallvec
1.8.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-runtime
6.0.0 - thiserror
1.0.31
used by- bitflags
sc-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 21↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- bytes
1.1.0 - fnv
1.0.7 - futures
0.3.21 - futures-timer
3.0.2 - hex
0.4.3 - hyper
0.14.19 - hyper-rustls
0.23.0 - num_cpus
1.13.1 - once_cell
1.12.0 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - threadpool
1.8.1 - tracing
0.1.35
- bytes
sc-peerset
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sc-proposer-metrics
0.10.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sc-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 23↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- futures
0.3.21 - hash-db
0.15.2 - jsonrpsee
0.13.1 - log
0.4.17 - parity-scale-codec
3.1.5 - 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.81 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-version
5.0.0
- futures
sc-rpc-api
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-rpc-server
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-service
0.10.0-devgithub.com/paritytech/substrate↘ 58↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- async-trait
0.1.56 - directories
4.0.1 - exit-future
0.2.0 - futures
0.3.21 - futures-timer
3.0.2 - hash-db
0.15.2 - jsonrpsee
0.13.1 - log
0.4.17 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - pin-project
1.0.10 - rand
0.7.3 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-informant
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.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.137 - serde_json
1.0.81 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-tracing
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tempfile
3.3.0 - thiserror
1.0.31 - tokio
1.19.2 - tracing
0.1.35 - tracing-futures
0.2.5
used by- cumulus-client-cli
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-cli
0.9.24 - polkadot-client
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24 - sc-cli
0.10.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.24 - unique-rpc
0.1.0
- async-trait
sc-state-db
0.10.0-devgithub.com/paritytech/substrate↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysc-sync-state-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-sysinfo
6.0.0-devgithub.com/paritytech/substrate↘ 12↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsc-telemetry
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - polkadot-service
0.9.24 - 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.24
- cumulus-client-consensus-aura
sc-tracing
4.0.0-devgithub.com/paritytech/substrate↘ 24↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.19 - lazy_static
1.4.0 - libc
0.2.126 - log
0.4.17 - once_cell
1.12.0 - parking_lot
0.12.1 - regex
1.5.6 - 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.137 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-rpc
6.0.0 - sp-runtime
6.0.0 - sp-tracing
5.0.0 - thiserror
1.0.31 - tracing
0.1.35 - 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.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysc-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 20↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- futures
0.3.21 - futures-timer
3.0.2 - linked-hash-map
0.5.4 - log
0.4.17 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - retain_mut
0.1.9 - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.137 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-tracing
5.0.0 - sp-transaction-pool
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.31
- futures
sc-transaction-pool-api
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sc-utils
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28scale-info
2.1.2crates.io↘ 6↖ 133sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc46be926081c9f4dd5dd9b6f1d3e3229f2360bc6502dd8836f84a93b7c75e99adepends onused by- beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - ethbloom
0.12.1 - ethereum
0.12.0 - ethereum-types
0.13.1 - evm
0.35.0 - evm-core
0.35.0 - finality-grandpa
0.15.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.0 - 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-recovery
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - parachain-info
0.1.0 - polkadot-core-primitives
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - primitive-types
0.11.1 - quartz-runtime
0.9.24 - rmrk-traits
0.1.0 - rococo-runtime
0.9.24 - sc-rpc-api
0.10.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - westend-runtime
0.9.24 - xcm
0.9.24 - xcm-builder
0.9.24
- beefy-primitives
scale-info-derive
2.1.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50e334bb10a245e28e5fd755cabcafd96cfcd167c99ae63a46924ca8d8703a3cused byschannel
0.1.20crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscopeguard
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdsct
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4depends onused bysec1
0.2.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1secp256k1
0.21.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260depends onused bysecp256k1-sys
0.4.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036depends onused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused bysecurity-framework
2.6.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dcdepends onused bysecurity-framework-sys
2.6.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556depends onused bysemver
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537depends onused bysemver
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403depends onused bysemver
1.0.10crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma41d061efea015927ac527063765e73601444cdc344ba855bc7bd44578b25e1cdepends onsemver-parser
0.7.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used byserde
1.0.137crates.io↘ 1↖ 122sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1depends onused by- beef
0.5.2 - beefy-gadget-rpc
4.0.0-dev - bincode
1.3.3 - bp-header-chain
0.1.0 - bp-messages
0.1.0 - camino
1.0.9 - cargo-platform
0.1.2 - cargo_metadata
0.14.3 - cid
0.8.5 - cranelift-entity
0.82.3 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - ed25519-dalek
1.0.1 - ethereum
0.12.0 - evm
0.35.0 - evm-core
0.35.0 - fc-rpc-core
1.1.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-metadata
15.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
4.3.1 - impl-serde
0.3.2 - indexmap
1.9.1 - jsonrpsee-core
0.13.1 - jsonrpsee-types
0.13.1 - kusama-runtime
0.9.24 - libsecp256k1
0.7.0 - multiaddr
0.14.0 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-common
0.1.0 - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
0.1.0 - pallet-mmr-rpc
3.0.0 - pallet-offences
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-xcm
0.9.24 - parachain-info
0.1.0 - parity-scale-codec
2.3.1 - parity-scale-codec
3.1.5 - polkadot-node-primitives
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - remote-externalities
0.10.0-dev - rmrk-rpc
0.0.1 - rmrk-traits
0.1.0 - rococo-runtime
0.9.24 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-rpc-api
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.1.2 - semver
1.0.10 - serde_json
1.0.81 - serde_nanos
0.1.2 - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.12.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
6.0.0 - sp-serializer
4.0.0-dev - sp-storage
6.0.0 - sp-version
5.0.0 - ss58-registry
1.22.0 - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - toml
0.5.9 - tracing-serde
0.1.3 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - unique-node
0.9.24 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - up-data-structs
0.1.0 - wasmtime
0.35.3 - wasmtime-cache
0.35.3 - wasmtime-environ
0.35.3 - wasmtime-jit
0.35.3 - wasmtime-types
0.35.3 - westend-runtime
0.9.24
- beef
serde_derive
1.0.137crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578bedepends onserde_json
1.0.81crates.io↘ 3↖ 30sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15cdepends onused by- cargo_metadata
0.14.3 - fc-rpc-core
1.1.0-dev - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.1 - jsonrpsee-core
0.13.1 - jsonrpsee-http-server
0.13.1 - jsonrpsee-types
0.13.1 - jsonrpsee-ws-server
0.13.1 - polkadot-service
0.9.24 - remote-externalities
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sp-serializer
4.0.0-dev - ss58-registry
1.22.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - tracing-subscriber
0.2.25 - unique-node
0.9.24
- cargo_metadata
serde_nanos
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume44969a61f5d316be20a42ff97816efb3b407a924d06824c3d8a49fa8450de0edepends onsha-1
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163dfused bysha-1
0.9.8crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6used bysha2
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69used bysha2
0.9.9crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800sha2
0.10.2crates.io↘ 3↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676depends onsha3
0.9.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809sha3
0.10.1crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86depends onsharded-slab
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31depends onused byshlex
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3used bysignal-hook
0.3.14crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29ddepends onused bysignal-hook-registry
1.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0depends onused bysignature
1.4.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788depends onused bysimba
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5cused byslab
0.4.6crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32slot-range-helper
0.9.24github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfeslotmap
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342depends onused bysmallvec
1.8.0crates.io↘ 0↖ 47sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83used by- bp-rococo
0.1.0 - cranelift-codegen
0.82.3 - cranelift-frontend
0.82.3 - cranelift-wasm
0.82.3 - frame-support
4.0.0-dev - kusama-runtime
0.9.24 - kusama-runtime-constants
0.9.24 - kvdb
0.11.0 - kvdb-rocksdb
0.15.2 - libp2p
0.45.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-dns
0.33.0 - libp2p-floodsub
0.36.0 - libp2p-gossipsub
0.38.1 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-mdns
0.37.0 - libp2p-mplex
0.33.0 - libp2p-relay
0.9.1 - libp2p-request-response
0.18.0 - libp2p-swarm
0.36.1 - multistream-select
0.11.0 - opal-runtime
0.9.24 - parity-util-mem
0.11.0 - parking_lot_core
0.8.5 - parking_lot_core
0.9.3 - polkadot-node-subsystem-types
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-constants
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - regalloc
0.0.34 - rococo-runtime
0.9.24 - rococo-runtime-constants
0.9.24 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-state-machine
0.12.0 - test-runtime-constants
0.9.24 - tracing-subscriber
0.2.25 - trie-db
0.23.1 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - unique-runtime
0.9.24 - westend-runtime
0.9.24 - westend-runtime-constants
0.9.24
- bp-rococo
snap
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451used bysnow
0.9.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0ddepends onused bysocket2
0.4.4crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0depends onsoketto
0.7.1crates.io↘ 8↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2sp-api
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 77sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-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-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-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-overseer
0.9.24 - polkadot-primitives
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rmrk-rpc
0.0.1 - rococo-runtime
0.9.24 - 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-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.0 - unique-node
0.9.24 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - up-rpc
0.1.0 - westend-runtime
0.9.24
- beefy-gadget
sp-api-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysp-application-crypto
6.0.0github.com/paritytech/substrate↘ 6↖ 30sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used by- beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-test-utils
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - 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.24 - polkadot-gossip-support
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime-parachains
0.9.24 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-service
0.10.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
6.0.0
- beefy-gadget
sp-arithmetic
5.0.0github.com/paritytech/substrate↘ 8↖ 22sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.24 - opal-runtime
0.9.24 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-gilt
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - polkadot-primitives
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - sc-client-db
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - unique-runtime
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- beefy-gadget
sp-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- kusama-runtime
0.9.24 - pallet-authority-discovery
4.0.0-dev - polkadot-client
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - rococo-runtime
0.9.24 - sc-authority-discovery
0.10.0-dev - westend-runtime
0.9.24
- kusama-runtime
sp-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-block-builder
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 21sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used by- cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - fc-rpc
2.0.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - polkadot-client
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-service
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - unique-node
0.9.24 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - westend-runtime
0.9.24
- cumulus-client-consensus-aura
sp-blockchain
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 49sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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-inprocess-interface
0.1.0 - cumulus-relay-chain-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 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-client
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-rpc
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24 - 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-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - uc-rpc
0.1.0 - unique-node
0.9.24 - unique-rpc
0.1.0
- beefy-gadget
sp-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 33sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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 - fc-consensus
2.0.0-dev - polkadot-client
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-rpc
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24 - 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-sync
0.10.0-dev - sc-service
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.24 - unique-rpc
0.1.0
- beefy-gadget
sp-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- kusama-runtime
0.9.24 - pallet-babe
4.0.0-dev - polkadot-client
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - rococo-runtime
0.9.24 - 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.24
- kusama-runtime
sp-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-consensus-vrf
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-core
6.0.0github.com/paritytech/substrate↘ 39↖ 159sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- base58
0.2.0 - bitflags
1.3.2 - blake2-rfc
0.2.18 - byteorder
1.4.3 - dyn-clonable
0.9.0 - ed25519-dalek
1.0.1 - futures
0.3.21 - hash-db
0.15.2 - hash256-std-hasher
0.15.2 - hex
0.4.3 - impl-serde
0.3.2 - lazy_static
1.4.0 - libsecp256k1
0.7.0 - log
0.4.17 - merlin
2.0.1 - num-traits
0.2.15 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - primitive-types
0.11.1 - rand
0.7.3 - regex
1.5.6 - scale-info
2.1.2 - schnorrkel
0.9.1 - secp256k1
0.21.3 - secrecy
0.8.0 - serde
1.0.137 - sp-core-hashing
4.0.0 - sp-debug-derive
4.0.0 - sp-externalities
0.12.0 - sp-runtime-interface
6.0.0 - sp-std
4.0.0 - sp-storage
6.0.0 - ss58-registry
1.22.0 - substrate-bip39
0.4.4 - thiserror
1.0.31 - tiny-bip39
0.8.2 - wasmi
0.9.1 - zeroize
1.4.3
used by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-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-cli
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - 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-bridge-dispatch
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-nomination-pools
1.0.0 - pallet-nonfungible
0.1.0 - pallet-preimage
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-session
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-cli
0.9.24 - polkadot-client
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-core-primitives
0.9.24 - polkadot-erasure-coding
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-table
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - remote-externalities
0.10.0-dev - rmrk-rpc
0.0.1 - rococo-runtime
0.9.24 - 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-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
6.0.0 - 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
6.0.0 - sp-keyring
6.0.0 - sp-keystore
0.12.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
6.0.0 - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.12.0 - sp-tasks
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - tests
0.1.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - unique-node
0.9.24 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.24 - xcm-executor
0.9.24
- base58
sp-core-hashing
4.0.0github.com/paritytech/substrate↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-core-hashing-proc-macro
5.0.0github.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-database
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-debug-derive
4.0.0github.com/paritytech/substrate↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-externalities
0.12.0github.com/paritytech/substrate↘ 4↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-finality-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-inherents
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 37sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.24 - opal-runtime
0.9.24 - pallet-timestamp
4.0.0-dev - polkadot-client
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - unique-node
0.9.24 - unique-runtime
0.9.24 - westend-runtime
0.9.24
- cumulus-client-consensus-aura
sp-io
6.0.0github.com/paritytech/substrate↘ 18↖ 74sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- bp-runtime
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - fc-rpc
2.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-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-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-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-staking
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - polkadot-node-core-pvf
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.24 - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-sysinfo
6.0.0-dev - sp-application-crypto
6.0.0 - sp-runtime
6.0.0 - sp-sandbox
0.10.0-dev - sp-tasks
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.0 - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.24 - westend-runtime
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- bp-runtime
sp-keyring
6.0.0github.com/paritytech/substrate↘ 4↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-keystore
0.12.0github.com/paritytech/substrate↘ 10↖ 34sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends 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.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-primitives
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24 - 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
6.0.0 - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.24
- beefy-gadget
sp-maybe-compressed-blob
4.1.0-devgithub.com/paritytech/substrate↘ 2↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-mmr-primitives
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-npos-elections
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-panic-handler
4.0.0github.com/paritytech/substrate↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-rpc
6.0.0github.com/paritytech/substrate↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-runtime
6.0.0github.com/paritytech/substrate↘ 15↖ 205sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-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 - 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-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.24 - kusama-runtime-constants
0.9.24 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-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-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.0 - 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-recovery
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - polkadot-client
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-core-primitives
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-rpc
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-constants
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - remote-externalities
0.10.0-dev - rmrk-rpc
0.0.1 - rococo-runtime
0.9.24 - rococo-runtime-constants
0.9.24 - 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-consensus-uncles
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
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-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - slot-range-helper
0.9.24 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
6.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-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - test-runtime-constants
0.9.24 - tests
0.1.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.0 - unique-node
0.9.24 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.24 - westend-runtime-constants
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- beefy-gadget
sp-runtime-interface
6.0.0github.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-runtime-interface-proc-macro
5.0.0github.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysp-sandbox
0.10.0-devgithub.com/paritytech/substrate↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-serializer
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysp-session
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- kusama-runtime
0.9.24 - opal-runtime
0.9.24 - 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.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-service
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.24 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - westend-runtime
0.9.24
- kusama-runtime
sp-staking
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used by- frame-support
4.0.0-dev - kusama-runtime
0.9.24 - pallet-babe
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.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-statement-distribution
0.9.24 - polkadot-test-runtime
0.9.24 - rococo-runtime
0.9.24 - sp-session
4.0.0-dev - westend-runtime
0.9.24
- frame-support
sp-state-machine
0.12.0github.com/paritytech/substrate↘ 15↖ 26sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - 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.24 - polkadot-test-service
0.9.24 - 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
6.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev
- bp-runtime
sp-std
4.0.0github.com/paritytech/substrate↘ 0↖ 153sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used by- beefy-primitives
4.0.0-dev - bp-header-chain
0.1.0 - bp-message-dispatch
0.1.0 - bp-messages
0.1.0 - bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - bp-runtime
0.1.0 - bp-test-utils
0.1.0 - bp-wococo
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-bridge-dispatch
0.1.0 - pallet-bridge-grandpa
0.1.0 - pallet-bridge-messages
0.1.0 - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.0 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.0 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nicks
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.0 - 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-recovery
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - polkadot-core-primitives
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-metrics
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rmrk-rpc
0.0.1 - rococo-runtime
0.9.24 - sc-sysinfo
6.0.0-dev - slot-range-helper
0.9.24 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-core-hashing
4.0.0 - sp-externalities
0.12.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-runtime-interface
6.0.0 - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-tracing
5.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - sp-wasm-interface
6.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0 - westend-runtime
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- beefy-primitives
sp-storage
6.0.0github.com/paritytech/substrate↘ 6↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-client
0.9.24 - polkadot-service
0.9.24 - sc-client-api
4.0.0-dev - sc-service
0.10.0-dev - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-runtime-interface
6.0.0 - unique-rpc
0.1.0
- cumulus-primitives-parachain-inherent
sp-tasks
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysp-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-tracing
5.0.0github.com/paritytech/substrate↘ 5↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28sp-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsp-transaction-storage-proof
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysp-trie
6.0.0github.com/paritytech/substrate↘ 9↖ 23sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- bp-runtime
0.1.0 - bridge-runtime-common
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-utility
0.1.0 - frame-benchmarking-cli
4.0.0-dev - pallet-bridge-grandpa
0.1.0 - pallet-session
4.0.0-dev - polkadot-cli
0.9.24 - polkadot-erasure-coding
0.9.24 - polkadot-primitives
0.9.24 - polkadot-service
0.9.24 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-io
6.0.0 - sp-state-machine
0.12.0 - sp-transaction-storage-proof
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - unique-node
0.9.24
- bp-runtime
sp-version
5.0.0github.com/paritytech/substrate↘ 10↖ 23sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused by- bp-polkadot-core
0.1.0 - bp-rococo
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - frame-system
4.0.0-dev - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.24 - sc-cli
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.24 - westend-runtime
0.9.24
- bp-polkadot-core
sp-version-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysp-wasm-interface
6.0.0github.com/paritytech/substrate↘ 6↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onspin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byss58-registry
1.22.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d804c8d48aeab838be31570866fce1130d275b563d49af08b4927a0bd561e7cdepends onused bystable_deref_trait
1.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fused by- fixed-hash
0.7.0 - kusama-runtime
0.9.24 - libp2p-noise
0.36.0 - libp2p-relay
0.9.1 - multiaddr
0.14.0 - pallet-election-provider-multi-phase
4.0.0-dev - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - rw-stream-sink
0.2.1 - rw-stream-sink
0.3.0 - sp-arithmetic
5.0.0 - sp-runtime-interface
6.0.0 - twox-hash
1.6.3 - uint
0.9.3 - yamux
0.10.1
- fixed-hash
static_init
0.5.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369cused bystatic_init_macro
0.5.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbfused bystatrs
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05bdbb8e4e78216a85785a85d3ec3183144f98d0097b9281802c019bb07a6f05used bystrsim
0.10.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623used bystruct-versioning
0.1.0workspace↘ 2↖ 3strum
0.23.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bbdepends onstrum
0.24.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63fdepends onstrum_macros
0.23.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38used bystrum_macros
0.24.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6878079b17446e4d3eba6192bb0a2950d5b14f0ed8424b852310e5a94345d0efused bysubstrate-bip39
0.4.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733cused bysubstrate-build-script-utils
3.0.0github.com/paritytech/substrate↘ 1↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsubstrate-frame-rpc-system
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsubstrate-prometheus-endpoint
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 21sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used 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.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-service
0.9.24 - 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-gossip
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.24
- beefy-gadget
substrate-state-trie-migration-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onused bysubstrate-test-client
2.0.1github.com/paritytech/substrate↘ 19↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- async-trait
0.1.56 - futures
0.3.21 - hex
0.4.3 - parity-scale-codec
3.1.5 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - serde
1.0.137 - serde_json
1.0.81 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-keyring
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0
used by- async-trait
substrate-test-utils
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28used bysubstrate-test-utils-derive
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28substrate-wasm-builder
5.0.0-devgithub.com/paritytech/substrate↘ 9↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends onsubtle
2.4.1crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601syn
1.0.98crates.io↘ 3↖ 66sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773ddused by- async-attributes
1.1.2 - async-trait
0.1.56 - auto_impl
0.5.0 - clap_derive
3.2.6 - ctor
0.1.22 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - darling_core
0.13.4 - darling_macro
0.13.4 - data-encoding-macro-internal
0.1.10 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.4.0 - enumflags2_derive
0.7.4 - enumn
0.1.4 - evm-coder-macros
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.21 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.13.1 - libp2p-swarm-derive
0.27.2 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.29 - pin-project-internal
1.0.10 - proc-macro-error
1.0.4 - prometheus-client-derive-text-encode
0.2.0 - prost-derive
0.9.0 - prost-derive
0.10.1 - ref-cast-impl
1.0.7 - 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.1.2 - serde_derive
1.0.137 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
4.0.0 - sp-runtime-interface-proc-macro
5.0.0 - sp-version-proc-macro
4.0.0-dev - static_init_macro
0.5.0 - struct-versioning
0.1.0 - strum_macros
0.23.1 - strum_macros
0.24.0 - substrate-test-utils-derive
0.10.0-dev - synstructure
0.12.6 - thiserror-impl
1.0.31 - tokio-macros
0.2.6 - tokio-macros
1.8.0 - tracing-attributes
0.1.21 - tracing-gum-proc-macro
0.9.24 - wasm-bindgen-backend
0.2.81 - wasm-bindgen-macro-support
0.2.81 - xcm-procedural
0.1.0 - zeroize_derive
1.3.2
- async-attributes
synstructure
0.12.6crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210fsystem-configuration
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fdused bysystem-configuration-sys
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9depends onused bytap
1.0.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369target-lexicon
0.12.4crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1tempfile
3.3.0crates.io↘ 6↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4termcolor
1.1.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755depends onused bytest-runtime-constants
0.9.24github.com/paritytech/polkadot↘ 5↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends ontests
0.1.0workspace↘ 23↖ 0depends on- 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.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-fungible
0.1.0 - pallet-nonfungible
0.1.0 - pallet-refungible
0.1.0 - pallet-structure
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.1.0 - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0
- fp-evm-mapping
thiserror
1.0.31crates.io↘ 1↖ 98sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069adepends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - bounded-vec
0.6.0 - cumulus-relay-chain-interface
0.1.0 - fatality
0.0.6 - fatality-proc-macro
0.0.6 - fc-consensus
2.0.0-dev - flexi_logger
0.15.12 - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.1 - jsonrpsee-client-transport
0.13.1 - jsonrpsee-core
0.13.1 - jsonrpsee-types
0.13.1 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-identify
0.36.1 - libp2p-kad
0.37.1 - libp2p-relay
0.9.1 - libp2p-rendezvous
0.6.0 - libp2p-swarm
0.36.1 - libp2p-yamux
0.37.0 - netlink-packet-utils
0.5.1 - orchestra
0.0.1 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-cli
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-erasure-coding
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-jaeger
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-primitives
0.9.24 - polkadot-node-subsystem-types
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-performance-test
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24 - prioritized-metered-channel
0.2.0 - proc-macro-crate
1.1.3 - prometheus
0.13.1 - prost-codec
0.1.0 - redox_users
0.4.3 - reed-solomon-novelpoly
1.0.0 - rtnetlink
0.9.1 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
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-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-state-machine
0.12.0 - sp-timestamp
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tiny-bip39
0.8.2 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - wasmtime-cranelift
0.35.3 - wasmtime-environ
0.35.3 - wasmtime-jit
0.35.3 - wasmtime-runtime
0.35.3 - wasmtime-types
0.35.3
- beefy-gadget
thiserror-impl
1.0.31crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79adepends 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-sys
0.4.3+5.2.1-patched.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1792ccb507d955b46af42c123ea8863668fae24d03721e40cad6a41773dbb49depends onused bytime
0.1.44crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255used bytiny-bip39
0.8.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839ddepends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinyvec
1.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50depends ontinyvec_macros
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5cused bytokio
0.2.25crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092used bytokio
1.19.2crates.io↘ 12↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439depends onused by- backoff
0.4.0 - fc-rpc
2.0.0-dev - h2
0.3.13 - hyper
0.14.19 - hyper-rustls
0.23.0 - jsonrpsee-client-transport
0.13.1 - jsonrpsee-core
0.13.1 - jsonrpsee-http-server
0.13.1 - jsonrpsee-ws-server
0.13.1 - netlink-proto
0.9.2 - polkadot-test-service
0.9.24 - sc-cli
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-test-utils
4.0.0-dev - tokio-rustls
0.23.4 - tokio-util
0.7.3 - unique-node
0.9.24
- backoff
tokio-macros
0.2.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265adepends onused bytokio-macros
1.8.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484depends onused bytokio-rustls
0.23.4crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59depends ontokio-util
0.7.3crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45depends ontoml
0.5.9crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7depends ontower-service
0.3.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52used bytracing
0.1.35crates.io↘ 4↖ 31sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - h2
0.3.13 - hyper
0.14.19 - jsonrpsee
0.13.1 - jsonrpsee-client-transport
0.13.1 - jsonrpsee-core
0.13.1 - jsonrpsee-http-server
0.13.1 - jsonrpsee-types
0.13.1 - jsonrpsee-ws-server
0.13.1 - orchestra
0.0.1 - prioritized-metered-channel
0.2.0 - sc-executor
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sp-io
6.0.0 - sp-state-machine
0.12.0 - sp-tracing
5.0.0 - tokio-util
0.7.3 - tracing-futures
0.2.5 - tracing-gum
0.9.24 - tracing-subscriber
0.2.25
- cumulus-client-collator
tracing-attributes
0.1.21crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7cdepends onused bytracing-core
0.1.27crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7709595b8878a4965ce5e87ebf880a7d39c9afc6837721b21a5a816a8117d921depends ontracing-futures
0.2.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2depends onused bytracing-gum
0.9.24github.com/paritytech/polkadot↘ 4↖ 29sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused by- polkadot-approval-distribution
0.9.24 - polkadot-availability-bitfield-distribution
0.9.24 - polkadot-availability-distribution
0.9.24 - polkadot-availability-recovery
0.9.24 - polkadot-collator-protocol
0.9.24 - polkadot-dispute-distribution
0.9.24 - polkadot-gossip-support
0.9.24 - polkadot-network-bridge
0.9.24 - polkadot-node-collation-generation
0.9.24 - polkadot-node-core-approval-voting
0.9.24 - polkadot-node-core-av-store
0.9.24 - polkadot-node-core-backing
0.9.24 - polkadot-node-core-bitfield-signing
0.9.24 - polkadot-node-core-candidate-validation
0.9.24 - polkadot-node-core-chain-api
0.9.24 - polkadot-node-core-chain-selection
0.9.24 - polkadot-node-core-dispute-coordinator
0.9.24 - polkadot-node-core-parachains-inherent
0.9.24 - polkadot-node-core-provisioner
0.9.24 - polkadot-node-core-pvf
0.9.24 - polkadot-node-core-pvf-checker
0.9.24 - polkadot-node-core-runtime-api
0.9.24 - polkadot-node-metrics
0.9.24 - polkadot-node-network-protocol
0.9.24 - polkadot-node-subsystem-util
0.9.24 - polkadot-overseer
0.9.24 - polkadot-service
0.9.24 - polkadot-statement-distribution
0.9.24 - polkadot-test-service
0.9.24
- polkadot-approval-distribution
tracing-gum-proc-macro
0.9.24github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfeused bytracing-log
0.1.3crates.io↘ 5↖ 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.23.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd32d034c0d3db64b43c31de38e945f15b40cd4ca6d2dcfc26d4798ce8de4ab83trie-root
0.17.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891depends ontriehash
0.8.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5cdepends onused bytrust-dns-proto
0.21.2crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255ddepends onused bytrust-dns-resolver
0.21.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558depends ontry-runtime-cli
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.24#814752f60ab8cce7e2ece3ce0c1b10799b4eab28depends on- clap
3.2.6 - jsonrpsee
0.13.1 - log
0.4.17 - parity-scale-codec
3.1.5 - remote-externalities
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.137 - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-version
5.0.0 - zstd
0.10.2+zstd.1.5.2
- clap
tt-call
1.0.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055used bytwox-hash
1.6.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675used bytypenum
1.15.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987uint
0.9.3crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0unicase
2.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6depends onused byunicode-bidi
0.3.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992used byunicode-ident
1.0.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368cused byunicode-normalization
0.1.19crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9depends onused byunicode-segmentation
1.9.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99used byunicode-width
0.1.9crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973used byunicode-xid
0.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04unique-node
0.9.24workspace↘ 82↖ 0depends on- clap
3.2.6 - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - flexi_logger
0.15.12 - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - futures
0.3.21 - jsonrpsee
0.13.1 - log
0.4.17 - opal-runtime
0.9.24 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-scale-codec
3.1.5 - parking_lot
0.11.2 - polkadot-cli
0.9.24 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-service
0.9.24 - polkadot-test-service
0.9.24 - quartz-runtime
0.9.24 - rmrk-rpc
0.0.1 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.137 - serde_json
1.0.81 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
6.0.0 - substrate-build-script-utils
3.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.19.2 - try-runtime-cli
0.10.0-dev - unique-rpc
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0
- clap
unique-rpc
0.1.0workspace↘ 43↖ 1depends on- fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.21 - jsonrpsee
0.13.1 - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-unique
0.1.0 - rmrk-rpc
0.0.1 - sc-client-api
4.0.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.137 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-storage
6.0.0 - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - tokio
0.2.25 - uc-rpc
0.1.0 - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0
used by- fc-db
unique-runtime
0.9.24workspace↘ 76↖ 1depends on- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - fp-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 - log
0.4.17 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-common
0.1.0 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-evm-migration
0.1.0 - pallet-evm-transaction-payment
0.1.0 - pallet-fungible
0.1.0 - pallet-inflation
0.1.0 - pallet-nonfungible
0.1.0 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-structure
0.1.0 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - pallet-xcm
0.9.24 - parachain-info
0.1.0 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - rmrk-rpc
0.0.1 - scale-info
2.1.2 - serde
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - unique-runtime-common
0.9.24 - up-data-structs
0.1.0 - up-rpc
0.1.0 - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
used by- cumulus-pallet-aura-ext
unique-runtime-common
0.9.24workspace↘ 20↖ 7depends on- evm-coder
0.1.0 - fp-rpc
3.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.0 - pallet-evm
6.0.0-dev - pallet-fungible
0.1.0 - pallet-nonfungible
0.1.0 - pallet-refungible
0.1.0 - pallet-unique
0.1.0 - pallet-unique-scheduler
0.1.0 - parity-scale-codec
3.1.5 - rmrk-rpc
0.0.1 - scale-info
2.1.2 - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - up-data-structs
0.1.0 - up-sponsorship
0.1.0
- evm-coder
universal-hash
0.4.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05depends onused byunsigned-varint
0.7.1crates.io↘ 4↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836untrusted
0.7.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aup-data-structs
0.1.0workspace↘ 12↖ 19depends onused by- opal-runtime
0.9.24 - pallet-common
0.1.0 - pallet-evm-coder-substrate
0.1.0 - pallet-evm-contract-helpers
0.1.0 - pallet-fungible
0.1.0 - pallet-nonfungible
0.1.0 - pallet-refungible
0.1.0 - pallet-rmrk-core
0.1.0 - pallet-rmrk-equip
0.1.0 - pallet-structure
0.1.0 - pallet-unique
0.1.0 - quartz-runtime
0.9.24 - tests
0.1.0 - uc-rpc
0.1.0 - unique-node
0.9.24 - unique-rpc
0.1.0 - unique-runtime
0.9.24 - unique-runtime-common
0.9.24 - up-rpc
0.1.0
- opal-runtime
up-sponsorship
0.1.0github.com/uniquenetwork/pallet-sponsoring↘ 1↖ 5sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.24#05cb0f02abecad915d32455df7a7724b3e2869aadepends onurl
2.2.2crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578cvaluable
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↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483fvoid
1.0.2crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887dwaker-fn
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceecawalkdir
2.3.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56want
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0depends onused bywasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.10.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasi
0.11.0+wasi-snapshot-preview1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423wasm-bindgen
0.2.81crates.io↘ 2↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994depends onwasm-bindgen-backend
0.2.81crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340adepends onwasm-bindgen-futures
0.4.31crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31fwasm-bindgen-macro
0.2.81crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aaused bywasm-bindgen-macro-support
0.2.81crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048used bywasm-gc-api
0.1.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9wasm-instrument
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum962e5b0401bbb6c887f54e69b8c496ea36f704df65db73e81fd5ff8dc3e63a9fdepends onused bywasm-timer
0.2.5crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onwasmi
0.9.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795ddepends onwasmi-validation
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum165343ecd6c018fc09ebcae280752702c9a2ef3e6f8d02f1cfcbdb53ef6d7937depends onused bywasmparser
0.83.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7awasmtime
0.35.3crates.io↘ 23↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21ffb4705016d5ca91e18a72ed6822dab50e6d5ddd7045461b17ef19071cdef1depends on- anyhow
1.0.58 - backtrace
0.3.65 - bincode
1.3.3 - cfg-if
1.0.0 - indexmap
1.9.1 - lazy_static
1.4.0 - libc
0.2.126 - log
0.4.17 - object
0.27.1 - once_cell
1.12.0 - paste
1.0.7 - psm
0.1.18 - rayon
1.5.3 - region
2.2.0 - serde
1.0.137 - target-lexicon
0.12.4 - wasmparser
0.83.0 - wasmtime-cache
0.35.3 - wasmtime-cranelift
0.35.3 - wasmtime-environ
0.35.3 - wasmtime-jit
0.35.3 - wasmtime-runtime
0.35.3 - winapi
0.3.9
- anyhow
wasmtime-cache
0.35.3crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85c6ab24291fa7cb3a181f5669f6c72599b7ef781669759b45c7828c5999d0c0depends onused bywasmtime-cranelift
0.35.3crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf04c810078a491b7bc4866ebe045f714d2b95e6b539e1f64009a4a7606be11dedepends onused bywasmtime-environ
0.35.3crates.io↘ 12↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61448266ea164b1ac406363cdcfac81c7c44db4d94c7a81c8620ac6c5c6cdf59depends onwasmtime-jit
0.35.3crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum156b4623c6b0d4b8c24afb846c20525922f538ef464cc024abab7ea8de2109a2depends onused bywasmtime-jit-debug
0.35.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5dc31f811760a6c76b2672c404866fd19b75e5fb3b0075a3e377a6846490654depends onwasmtime-runtime
0.35.3crates.io↘ 18↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf907beaff69d4d920fa4688411ee4cc75c0f01859e424677f9e426e2ef749864depends onwasmtime-types
0.35.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum514ef0e5fd197b9609dc9eb74beba0c84d5a12b2417cbae55534633329ba4852web-sys
0.3.58crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90depends onwebpki
0.22.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bddepends onwebpki-roots
0.22.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44d8de8415c823c8abd270ad483c6feeac771fad964890779f9a8cb24fbbc1bfdepends onwepoll-ffi
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fbdepends onused bywestend-runtime
0.9.24github.com/paritytech/polkadot↘ 82↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.0 - 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-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-nicks
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-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.24 - pallet-xcm-benchmarks
0.9.24 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.24 - polkadot-primitives
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.137 - serde_derive
1.0.137 - smallvec
1.8.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.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.24 - xcm
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
used by- beefy-primitives
westend-runtime-constants
0.9.24github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused bywhich
4.2.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24aedepends onwidestring
0.5.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983used bywinapi
0.3.9crates.io↘ 2↖ 34sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.12.1 - async-io
1.7.0 - async-process
1.4.0 - atty
0.2.14 - chrono
0.4.19 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - fs-swap
0.2.6 - fs2
0.4.3 - hostname
0.3.1 - if-addrs
0.7.0 - ipconfig
0.3.0 - libloading
0.5.2 - libloading
0.7.3 - parity-util-mem
0.11.0 - parking_lot_core
0.8.5 - polling
2.2.0 - region
2.2.0 - remove_dir_all
0.5.3 - ring
0.16.20 - rpassword
5.0.1 - rustix
0.33.7 - socket2
0.4.4 - tempfile
3.3.0 - time
0.1.44 - tokio
1.19.2 - walkdir
2.3.2 - wasmtime
0.35.3 - wasmtime-cache
0.35.3 - wasmtime-jit
0.35.3 - wasmtime-runtime
0.35.3 - winapi-util
0.1.5 - winreg
0.7.0
- 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_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_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_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_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_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-sys
0.36.1crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2depends onwinreg
0.7.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69depends onused bywyz
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214used bywyz
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390edepends onused byx25519-dalek
1.1.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byxcm
0.9.24github.com/paritytech/polkadot↘ 6↖ 19sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-common
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - unique-runtime
0.9.24 - westend-runtime
0.9.24 - xcm-builder
0.9.24 - xcm-executor
0.9.24
- cumulus-pallet-dmp-queue
xcm-builder
0.9.24github.com/paritytech/polkadot↘ 13↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onxcm-executor
0.9.24github.com/paritytech/polkadot↘ 11↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfedepends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - kusama-runtime
0.9.24 - opal-runtime
0.9.24 - pallet-xcm
0.9.24 - pallet-xcm-benchmarks
0.9.24 - polkadot-runtime
0.9.24 - polkadot-runtime-parachains
0.9.24 - polkadot-test-runtime
0.9.24 - quartz-runtime
0.9.24 - rococo-runtime
0.9.24 - unique-runtime
0.9.24 - westend-runtime
0.9.24 - xcm-builder
0.9.24
- cumulus-pallet-dmp-queue
xcm-procedural
0.1.0github.com/paritytech/polkadot↘ 4↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.24#22836e55d41eef24ed5917fd654ee82a683a7cfeused byyamux
0.10.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c0608f53c1dc0bad505d03a34bbd49fbf2ad7b51eb036123e896365532745a1used byyansi
0.5.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ecused byzeroize
1.4.3crates.io↘ 1↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619depends onused by- chacha20
0.8.1 - chacha20poly1305
0.9.0 - crypto-bigint
0.3.2 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-pre.1 - ed25519-dalek
1.0.1 - elliptic-curve
0.11.12 - libp2p-core
0.32.1 - libp2p-core
0.33.0 - libp2p-noise
0.36.0 - merlin
2.0.1 - rfc6979
0.1.0 - sc-network
0.10.0-dev - schnorrkel
0.9.1 - sec1
0.2.1 - secrecy
0.8.0 - sp-core
6.0.0 - substrate-bip39
0.4.4 - tiny-bip39
0.8.2 - x25519-dalek
1.1.1
- chacha20
zeroize_derive
1.3.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17used byzstd
0.10.2+zstd.1.5.2crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847depends onzstd-safe
4.1.6+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bbdepends onused byzstd-sys
1.6.3+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8depends onused by
pallets/common/CHANGELOG.MDdiffbeforeafterboth--- /dev/null
+++ b/pallets/common/CHANGELOG.MD
@@ -0,0 +1,10 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+
+## [0.1.2] - 2022-07-20
+
+### Fixed
+
+- Some methods in `#[solidity_interface]` for `CollectionHandle` had invalid
+ mutability modifiers, causing invalid stub/abi generation.
pallets/common/Cargo.tomldiffbeforeafterboth--- a/pallets/common/Cargo.toml
+++ b/pallets/common/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "pallet-common"
-version = "0.1.0"
+version = "0.1.2"
license = "GPLv3"
edition = "2021"
pallets/common/src/dispatch.rsdiffbeforeafterboth--- a/pallets/common/src/dispatch.rs
+++ b/pallets/common/src/dispatch.rs
@@ -1,3 +1,5 @@
+//! Module with interfaces for dispatching collections.
+
use frame_support::{
dispatch::{
DispatchResultWithPostInfo, PostDispatchInfo, Weight, DispatchErrorWithPostInfo,
@@ -20,7 +22,10 @@
// submit_logs is measured as part of collection pallets
}
-/// Helper function to implement substrate calls for common collection methods
+/// Helper function to implement substrate calls for common collection methods.
+///
+/// * `collection` - The collection on which to call the method.
+/// * `call` - The function in which to call the corresponding method from [`CommonCollectionOperations`].
pub fn dispatch_tx<
T: Config,
C: FnOnce(&dyn CommonCollectionOperations<T>) -> DispatchResultWithPostInfo,
@@ -64,15 +69,31 @@
result
}
+/// Interface for working with different collections through the dispatcher.
pub trait CollectionDispatch<T: Config> {
+ /// Create a collection. The collection will be created according to the value of [`data.mode`](CreateCollectionData::mode).
+ ///
+ /// * `sender` - The user who will become the owner of the collection.
+ /// * `data` - Description of the created collection.
fn create(
sender: T::CrossAccountId,
data: CreateCollectionData<T::AccountId>,
) -> DispatchResult;
+
+ /// Delete the collection.
+ ///
+ /// * `sender` - The owner of the collection.
+ /// * `handle` - Collection handle.
fn destroy(sender: T::CrossAccountId, handle: CollectionHandle<T>) -> DispatchResult;
+ /// Get a specialized collection from the handle.
+ ///
+ /// * `handle` - Collection handle.
fn dispatch(handle: CollectionHandle<T>) -> Self;
+
+ /// Get the collection handle for the corresponding implementation.
fn into_inner(self) -> CollectionHandle<T>;
+ /// Get the implementation of [`CommonCollectionOperations`].
fn as_dyn(&self) -> &dyn CommonCollectionOperations<T>;
}
pallets/common/src/erc.rsdiffbeforeafterboth--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -14,6 +14,8 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! This module contains the implementation of pallet methods for evm.
+
use evm_coder::{
solidity_interface, solidity, ToLog,
types::*,
@@ -29,29 +31,40 @@
use crate::{Pallet, CollectionHandle, Config, CollectionProperties};
+/// Events for ethereum collection helper.
#[derive(ToLog)]
pub enum CollectionHelpersEvents {
+ /// The collection has been created.
CollectionCreated {
+ /// Collection owner.
#[indexed]
owner: address,
+
+ /// Collection ID.
#[indexed]
collection_id: address,
},
}
/// Does not always represent a full collection, for RFT it is either
-/// collection (Implementing ERC721), or specific collection token (Implementing ERC20)
+/// collection (Implementing ERC721), or specific collection token (Implementing ERC20).
pub trait CommonEvmHandler {
const CODE: &'static [u8];
+ /// Call precompiled handle.
fn call(self, handle: &mut impl PrecompileHandle) -> Option<PrecompileResult>;
}
+/// @title A contract that allows you to work with collections.
#[solidity_interface(name = "Collection")]
impl<T: Config> CollectionHandle<T>
where
T::AccountId: From<[u8; 32]>,
{
+ /// Set collection property.
+ ///
+ /// @param key Property key.
+ /// @param value Propery value.
fn set_collection_property(
&mut self,
caller: caller,
@@ -68,6 +81,9 @@
.map_err(dispatch_to_evm::<T>)
}
+ /// Delete collection property.
+ ///
+ /// @param key Property key.
fn delete_collection_property(&mut self, caller: caller, key: string) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let key = <Vec<u8>>::from(key)
@@ -77,7 +93,12 @@
<Pallet<T>>::delete_collection_property(self, &caller, key).map_err(dispatch_to_evm::<T>)
}
- /// Throws error if key not found
+ /// Get collection property.
+ ///
+ /// @dev Throws error if key not found.
+ ///
+ /// @param key Property key.
+ /// @return bytes The property corresponding to the key.
fn collection_property(&self, key: string) -> Result<bytes> {
let key = <Vec<u8>>::from(key)
.try_into()
@@ -89,6 +110,11 @@
Ok(prop.to_vec())
}
+ /// Set the sponsor of the collection.
+ ///
+ /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ ///
+ /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
fn set_collection_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {
check_is_owner_or_admin(caller, self)?;
@@ -98,6 +124,9 @@
save(self)
}
+ /// Collection sponsorship confirmation.
+ ///
+ /// @dev After setting the sponsor for the collection, it must be confirmed with this function.
fn confirm_collection_sponsorship(&mut self, caller: caller) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
if !self
@@ -109,6 +138,16 @@
save(self)
}
+ /// Set limits for the collection.
+ /// @dev Throws error if limit not found.
+ /// @param limit Name of the limit. Valid names:
+ /// "accountTokenOwnershipLimit",
+ /// "sponsoredDataSize",
+ /// "sponsoredDataRateLimit",
+ /// "tokenLimit",
+ /// "sponsorTransferTimeout",
+ /// "sponsorApproveTimeout"
+ /// @param value Value of the limit.
#[solidity(rename_selector = "setCollectionLimit")]
fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {
check_is_owner_or_admin(caller, self)?;
@@ -145,6 +184,13 @@
save(self)
}
+ /// Set limits for the collection.
+ /// @dev Throws error if limit not found.
+ /// @param limit Name of the limit. Valid names:
+ /// "ownerCanTransfer",
+ /// "ownerCanDestroy",
+ /// "transfersEnabled"
+ /// @param value Value of the limit.
#[solidity(rename_selector = "setCollectionLimit")]
fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {
check_is_owner_or_admin(caller, self)?;
@@ -172,11 +218,18 @@
save(self)
}
+ /// Get contract address.
fn contract_address(&self, _caller: caller) -> Result<address> {
Ok(crate::eth::collection_id_to_address(self.id))
}
- fn add_collection_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {
+ /// Add collection admin by substrate address.
+ /// @param new_admin Substrate administrator address.
+ fn add_collection_admin_substrate(
+ &mut self,
+ caller: caller,
+ new_admin: uint256,
+ ) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
let mut new_admin_arr: [u8; 32] = Default::default();
new_admin.to_big_endian(&mut new_admin_arr);
@@ -186,35 +239,44 @@
Ok(())
}
+ /// Remove collection admin by substrate address.
+ /// @param admin Substrate administrator address.
fn remove_collection_admin_substrate(
- &self,
+ &mut self,
caller: caller,
- new_admin: uint256,
+ admin: uint256,
) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
- let mut new_admin_arr: [u8; 32] = Default::default();
- new_admin.to_big_endian(&mut new_admin_arr);
- let account_id = T::AccountId::from(new_admin_arr);
- let new_admin = T::CrossAccountId::from_sub(account_id);
- <Pallet<T>>::toggle_admin(self, &caller, &new_admin, false)
- .map_err(dispatch_to_evm::<T>)?;
+ let mut admin_arr: [u8; 32] = Default::default();
+ admin.to_big_endian(&mut admin_arr);
+ let account_id = T::AccountId::from(admin_arr);
+ let admin = T::CrossAccountId::from_sub(account_id);
+ <Pallet<T>>::toggle_admin(self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
- fn add_collection_admin(&self, caller: caller, new_admin: address) -> Result<void> {
+ /// Add collection admin.
+ /// @param new_admin Address of the added administrator.
+ fn add_collection_admin(&mut self, caller: caller, new_admin: address) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
let new_admin = T::CrossAccountId::from_eth(new_admin);
<Pallet<T>>::toggle_admin(self, &caller, &new_admin, true).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
- fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {
+ /// Remove collection admin.
+ ///
+ /// @param new_admin Address of the removed administrator.
+ fn remove_collection_admin(&mut self, caller: caller, admin: address) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
let admin = T::CrossAccountId::from_eth(admin);
<Pallet<T>>::toggle_admin(self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
+ /// Toggle accessibility of collection nesting.
+ ///
+ /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
#[solidity(rename_selector = "setCollectionNesting")]
fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {
check_is_owner_or_admin(caller, self)?;
@@ -235,6 +297,10 @@
save(self)
}
+ /// Toggle accessibility of collection nesting.
+ ///
+ /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+ /// @param collections Addresses of collections that will be available for nesting.
#[solidity(rename_selector = "setCollectionNesting")]
fn set_nesting(
&mut self,
@@ -280,6 +346,10 @@
save(self)
}
+ /// Set the collection access method.
+ /// @param mode Access mode
+ /// 0 for Normal
+ /// 1 for AllowList
fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result<void> {
check_is_owner_or_admin(caller, self)?;
let permissions = CollectionPermissions {
@@ -300,20 +370,29 @@
save(self)
}
- fn add_to_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {
+ /// Add the user to the allowed list.
+ ///
+ /// @param user Address of a trusted user.
+ fn add_to_collection_allow_list(&mut self, caller: caller, user: address) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
let user = T::CrossAccountId::from_eth(user);
<Pallet<T>>::toggle_allowlist(self, &caller, &user, true).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
- fn remove_from_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {
+ /// Remove the user from the allowed list.
+ ///
+ /// @param user Address of a removed user.
+ fn remove_from_collection_allow_list(&mut self, caller: caller, user: address) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
let user = T::CrossAccountId::from_eth(user);
<Pallet<T>>::toggle_allowlist(self, &caller, &user, false).map_err(dispatch_to_evm::<T>)?;
Ok(())
}
+ /// Switch permission for minting.
+ ///
+ /// @param mode Enable if "true".
fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {
check_is_owner_or_admin(caller, self)?;
let permissions = CollectionPermissions {
@@ -351,6 +430,7 @@
Ok(())
}
+/// Get the "tokenURI" key as [PropertyKey](up_data_structs::PropertyKey).
pub fn token_uri_key() -> up_data_structs::PropertyKey {
b"tokenURI"
.to_vec()
pallets/common/src/eth.rsdiffbeforeafterboth--- a/pallets/common/src/eth.rs
+++ b/pallets/common/src/eth.rs
@@ -14,6 +14,8 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! The module contains a number of functions for converting and checking ethereum identifiers.
+
use up_data_structs::CollectionId;
use sp_core::H160;
@@ -23,6 +25,7 @@
0x17, 0xc4, 0xe6, 0x45, 0x3c, 0xc4, 0x9a, 0xaa, 0xae, 0xac, 0xa8, 0x94, 0xe6, 0xd9, 0x68, 0x3e,
];
+/// Maps the ethereum address of the collection in substrate.
pub fn map_eth_to_id(eth: &H160) -> Option<CollectionId> {
if eth[0..16] != ETH_COLLECTION_PREFIX {
return None;
@@ -31,6 +34,8 @@
id_bytes.copy_from_slice(ð[16..20]);
Some(CollectionId(u32::from_be_bytes(id_bytes)))
}
+
+/// Maps the substrate collection id in ethereum.
pub fn collection_id_to_address(id: CollectionId) -> H160 {
let mut out = [0; 20];
out[0..16].copy_from_slice(Ð_COLLECTION_PREFIX);
@@ -38,6 +43,7 @@
H160(out)
}
+/// Check if the ethereum address is a collection.
pub fn is_collection(address: &H160) -> bool {
address[0..16] == ETH_COLLECTION_PREFIX
}
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -14,8 +14,43 @@
// 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)]
+//! # Common pallet
+//!
+//! The Common pallet provides functionality for handling collections.
+//!
+//! ## Overview
+//!
+//! The Common pallet provides an interface for common collection operations for different collection types
+//! (see [CommonCollectionOperations]), as well as a generic dispatcher for these, see [dispatch] module.
+//! It also provides this functionality to EVM, see [erc] and [eth] modules.
+//!
+//! The Common pallet provides functions for:
+//!
+//! - Setting and approving collection sponsor.
+//! - Get\set\delete allow list.
+//! - Get\set\delete collection properties.
+//! - Get\set\delete collection property permissions.
+//! - Get\set\delete token property permissions.
+//! - Get\set\delete collection administrators.
+//! - Checking access permissions.
+//!
+//! ### Terminology
+//! **Collection sponsor** - For the collection, you can set a sponsor, at whose expense it will
+//! be possible to mint tokens.
+//!
+//! **Allow list** - List of users who have the right to minting tokens.
+//!
+//! **Collection properties** - Collection properties are simply key-value stores where various
+//! metadata can be placed.
+//!
+//! **Permissions on token properties** - For each property in the token can be set permission
+//! to change, see [`PropertyPermission`].
+//!
+//! **Collection administrator** - For a collection, you can set administrators who have the right
+//! to most actions on the collection.
+#![warn(missing_docs)]
+#![cfg_attr(not(feature = "std"), no_std)]
extern crate alloc;
use core::ops::{Deref, DerefMut};
@@ -90,14 +125,24 @@
pub mod eth;
pub mod weights;
+/// Weight info.
pub type SelfWeightOf<T> = <T as Config>::WeightInfo;
+/// Collection handle contains information about collection data and id.
+/// Also provides functionality to count consumed gas.
+///
+/// CollectionHandle is used as a generic wrapper for collections of all types.
+/// It allows to perform common operations and queries on any collection type,
+/// both completely general for all, as well as their respective implementations of [`CommonCollectionOperations`].
#[must_use = "Should call submit_logs or save, otherwise some data will be lost for evm side"]
pub struct CollectionHandle<T: Config> {
+ /// Collection id
pub id: CollectionId,
collection: Collection<T::AccountId>,
+ /// Substrate recorder for counting consumed gas
pub recorder: SubstrateRecorder<T>,
}
+
impl<T: Config> WithRecorder<T> for CollectionHandle<T> {
fn recorder(&self) -> &SubstrateRecorder<T> {
&self.recorder
@@ -106,7 +151,9 @@
self.recorder
}
}
+
impl<T: Config> CollectionHandle<T> {
+ /// Same as [CollectionHandle::new] but with an explicit gas limit.
pub fn new_with_gas_limit(id: CollectionId, gas_limit: u64) -> Option<Self> {
<CollectionById<T>>::get(id).map(|collection| Self {
id,
@@ -115,6 +162,7 @@
})
}
+ /// Same as [CollectionHandle::new] but with an existed [`SubstrateRecorder`].
pub fn new_with_recorder(id: CollectionId, recorder: SubstrateRecorder<T>) -> Option<Self> {
<CollectionById<T>>::get(id).map(|collection| Self {
id,
@@ -123,14 +171,18 @@
})
}
+ /// Retrives collection data from storage and creates collection handle with default parameters.
+ /// If collection not found return `None`
pub fn new(id: CollectionId) -> Option<Self> {
Self::new_with_gas_limit(id, u64::MAX)
}
+ /// Same as [`CollectionHandle::new`] but if collection not found [CollectionNotFound](Error::CollectionNotFound) returned.
pub fn try_get(id: CollectionId) -> Result<Self, DispatchError> {
Ok(Self::new(id).ok_or(<Error<T>>::CollectionNotFound)?)
}
+ /// Consume gas for reading.
pub fn consume_store_reads(&self, reads: u64) -> evm_coder::execution::Result<()> {
self.recorder
.consume_gas(T::GasWeightMapping::weight_to_gas(
@@ -140,6 +192,7 @@
))
}
+ /// Consume gas for writing.
pub fn consume_store_writes(&self, writes: u64) -> evm_coder::execution::Result<()> {
self.recorder
.consume_gas(T::GasWeightMapping::weight_to_gas(
@@ -148,16 +201,27 @@
.saturating_mul(writes),
))
}
+
+ /// Save collection to storage.
pub fn save(self) -> DispatchResult {
<CollectionById<T>>::insert(self.id, self.collection);
Ok(())
}
+ /// Set collection sponsor.
+ ///
+ /// Unique collections allows sponsoring for certain actions.
+ /// This method allows you to set the sponsor of the collection.
+ /// In order for sponsorship to become active, it must be confirmed through [`Self::confirm_sponsorship`].
pub fn set_sponsor(&mut self, sponsor: T::AccountId) -> DispatchResult {
self.collection.sponsorship = SponsorshipState::Unconfirmed(sponsor);
Ok(())
}
+ /// Confirm sponsorship
+ ///
+ /// In order for the sponsorship to become active, the user set as the sponsor must confirm their participation.
+ /// Before confirming sponsorship, the user must be specified as the sponsor of the collection via [`Self::set_sponsor`].
pub fn confirm_sponsorship(&mut self, sender: &T::AccountId) -> Result<bool, DispatchError> {
if self.collection.sponsorship.pending_sponsor() != Some(sender) {
return Ok(false);
@@ -168,7 +232,7 @@
}
/// Checks that the collection was created with, and must be operated upon through **Unique API**.
- /// Now check only the `external_collection` flag and if it's **true**, then return `CollectionIsExternal` error.
+ /// Now check only the `external_collection` flag and if it's **true**, then return [`Error::CollectionIsExternal`] error.
pub fn check_is_internal(&self) -> DispatchResult {
if self.external_collection {
return Err(<Error<T>>::CollectionIsExternal)?;
@@ -178,7 +242,7 @@
}
/// Checks that the collection was created with, and must be operated upon through an **assimilated API**.
- /// Now check only the `external_collection` flag and if it's **false**, then return `CollectionIsInternal` error.
+ /// Now check only the `external_collection` flag and if it's **false**, then return [`Error::CollectionIsInternal`] error.
pub fn check_is_external(&self) -> DispatchResult {
if !self.external_collection {
return Err(<Error<T>>::CollectionIsInternal)?;
@@ -203,23 +267,34 @@
}
impl<T: Config> CollectionHandle<T> {
- pub fn check_is_owner(&self, subject: &T::CrossAccountId) -> DispatchResult {
- ensure!(*subject.as_sub() == self.owner, <Error<T>>::NoPermission);
+ /// Checks if the `user` is the owner of the collection.
+ pub fn check_is_owner(&self, user: &T::CrossAccountId) -> DispatchResult {
+ ensure!(*user.as_sub() == self.owner, <Error<T>>::NoPermission);
Ok(())
}
- pub fn is_owner_or_admin(&self, subject: &T::CrossAccountId) -> bool {
- *subject.as_sub() == self.owner || <IsAdmin<T>>::get((self.id, subject))
+
+ /// Returns **true** if the `user` is the owner or administrator of the collection.
+ pub fn is_owner_or_admin(&self, user: &T::CrossAccountId) -> bool {
+ *user.as_sub() == self.owner || <IsAdmin<T>>::get((self.id, user))
}
- pub fn check_is_owner_or_admin(&self, subject: &T::CrossAccountId) -> DispatchResult {
- ensure!(self.is_owner_or_admin(subject), <Error<T>>::NoPermission);
+
+ /// Checks if the `user` is the owner or administrator of the collection.
+ pub fn check_is_owner_or_admin(&self, user: &T::CrossAccountId) -> DispatchResult {
+ ensure!(self.is_owner_or_admin(user), <Error<T>>::NoPermission);
Ok(())
}
+
+ /// Return **true** if `user` was not allowed to have tokens, and he can ignore such restrictions.
pub fn ignores_allowance(&self, user: &T::CrossAccountId) -> bool {
self.limits.owner_can_transfer() && self.is_owner_or_admin(user)
}
+
+ /// Return **true** if `user` does not have enough token parts, and he can ignore such restrictions.
pub fn ignores_owned_amount(&self, user: &T::CrossAccountId) -> bool {
self.limits.owner_can_transfer() && self.is_owner_or_admin(user)
}
+
+ /// Checks if the user is in the allow list. If not [Error::AddressNotInAllowlist] returns.
pub fn check_allowlist(&self, user: &T::CrossAccountId) -> DispatchResult {
ensure!(
<Allowlist<T>>::get((self.id, user)),
@@ -249,21 +324,34 @@
+ TypeInfo
+ account::Config
{
+ /// Weight information for functions of this pallet.
type WeightInfo: WeightInfo;
+
+ /// Events compatible with [`frame_system::Config::Event`].
type Event: IsType<<Self as frame_system::Config>::Event> + From<Event<Self>>;
+ /// Handler of accounts and payment.
type Currency: Currency<Self::AccountId>;
+ /// Set price to create a collection.
#[pallet::constant]
type CollectionCreationPrice: Get<
<<Self as Config>::Currency as Currency<Self::AccountId>>::Balance,
>;
+
+ /// Dispatcher of operations on collections.
type CollectionDispatch: CollectionDispatch<Self>;
+ /// Account which holds the chain's treasury.
type TreasuryAccountId: Get<Self::AccountId>;
+
+ /// Address under which the CollectionHelper contract would be available.
type ContractAddress: Get<H160>;
+ /// Mapper for token addresses to Ethereum addresses.
type EvmTokenAddressMapping: TokenAddressMapping<H160>;
+
+ /// Mapper for token addresses to [`CrossAccountId`].
type CrossTokenAddressMapping: TokenAddressMapping<Self::CrossAccountId>;
}
@@ -276,6 +364,7 @@
#[pallet::extra_constants]
impl<T: Config> Pallet<T> {
+ /// Maximum admins per collection.
pub fn collection_admins_limit() -> u32 {
COLLECTION_ADMINS_LIMIT
}
@@ -285,94 +374,116 @@
#[pallet::generate_deposit(pub fn deposit_event)]
pub enum Event<T: Config> {
/// New collection was created
- ///
- /// # Arguments
- ///
- /// * collection_id: Globally unique identifier of newly created collection.
- ///
- /// * mode: [CollectionMode] converted into u8.
- ///
- /// * account_id: Collection owner.
- CollectionCreated(CollectionId, u8, T::AccountId),
+ CollectionCreated(
+ /// Globally unique identifier of newly created collection.
+ CollectionId,
+ /// [`CollectionMode`] converted into _u8_.
+ u8,
+ /// Collection owner.
+ T::AccountId,
+ ),
/// New collection was destroyed
- ///
- /// # Arguments
- ///
- /// * collection_id: Globally unique identifier of collection.
- CollectionDestroyed(CollectionId),
+ CollectionDestroyed(
+ /// Globally unique identifier of collection.
+ CollectionId,
+ ),
/// New item was created.
- ///
- /// # Arguments
- ///
- /// * collection_id: Id of the collection where item was created.
- ///
- /// * item_id: Id of an item. Unique within the collection.
- ///
- /// * recipient: Owner of newly created item
- ///
- /// * amount: Always 1 for NFT
- ItemCreated(CollectionId, TokenId, T::CrossAccountId, u128),
+ ItemCreated(
+ /// Id of the collection where item was created.
+ CollectionId,
+ /// Id of an item. Unique within the collection.
+ TokenId,
+ /// Owner of newly created item
+ T::CrossAccountId,
+ /// Always 1 for NFT
+ u128,
+ ),
/// Collection item was burned.
- ///
- /// # Arguments
- ///
- /// * collection_id.
- ///
- /// * item_id: Identifier of burned NFT.
- ///
- /// * owner: which user has destroyed its tokens
- ///
- /// * amount: Always 1 for NFT
- ItemDestroyed(CollectionId, TokenId, T::CrossAccountId, u128),
+ ItemDestroyed(
+ /// Id of the collection where item was destroyed.
+ CollectionId,
+ /// Identifier of burned NFT.
+ TokenId,
+ /// Which user has destroyed its tokens.
+ T::CrossAccountId,
+ /// Amount of token pieces destroed. Always 1 for NFT.
+ u128,
+ ),
/// Item was transferred
- ///
- /// * collection_id: Id of collection to which item is belong
- ///
- /// * item_id: Id of an item
- ///
- /// * sender: Original owner of item
- ///
- /// * recipient: New owner of item
- ///
- /// * amount: Always 1 for NFT
Transfer(
+ /// Id of collection to which item is belong.
CollectionId,
+ /// Id of an item.
TokenId,
+ /// Original owner of item.
T::CrossAccountId,
+ /// New owner of item.
T::CrossAccountId,
+ /// Amount of token pieces transfered. Always 1 for NFT.
u128,
),
- /// * collection_id
- ///
- /// * item_id
- ///
- /// * sender
- ///
- /// * spender
- ///
- /// * amount
+ /// Amount pieces of token owned by `sender` was approved for `spender`.
Approved(
+ /// Id of collection to which item is belong.
CollectionId,
+ /// Id of an item.
TokenId,
+ /// Original owner of item.
T::CrossAccountId,
+ /// Id for which the approval was granted.
T::CrossAccountId,
+ /// Amount of token pieces transfered. Always 1 for NFT.
u128,
),
- CollectionPropertySet(CollectionId, PropertyKey),
+ /// The colletion property has been set.
+ CollectionPropertySet(
+ /// Id of collection to which property has been set.
+ CollectionId,
+ /// The property that was set.
+ PropertyKey,
+ ),
- CollectionPropertyDeleted(CollectionId, PropertyKey),
+ /// The property has been deleted.
+ CollectionPropertyDeleted(
+ /// Id of collection to which property has been deleted.
+ CollectionId,
+ /// The property that was deleted.
+ PropertyKey,
+ ),
- TokenPropertySet(CollectionId, TokenId, PropertyKey),
+ /// The token property has been set.
+ TokenPropertySet(
+ /// Identifier of the collection whose token has the property set.
+ CollectionId,
+ /// The token for which the property was set.
+ TokenId,
+ /// The property that was set.
+ PropertyKey,
+ ),
- TokenPropertyDeleted(CollectionId, TokenId, PropertyKey),
+ /// The token property has been deleted.
+ TokenPropertyDeleted(
+ /// Identifier of the collection whose token has the property deleted.
+ CollectionId,
+ /// The token for which the property was deleted.
+ TokenId,
+ /// The property that was deleted.
+ PropertyKey,
+ ),
- PropertyPermissionSet(CollectionId, PropertyKey),
+ /// The colletion property permission has been set.
+ PropertyPermissionSet(
+ /// Id of collection to which property permission has been set.
+ CollectionId,
+ /// The property permission that was set.
+ PropertyKey,
+ ),
}
#[pallet::error]
@@ -460,13 +571,16 @@
CollectionIsInternal,
}
+ /// Storage of the count of created collections.
#[pallet::storage]
pub type CreatedCollectionCount<T> = StorageValue<Value = CollectionId, QueryKind = ValueQuery>;
+
+ /// Storage of the count of deleted collections.
#[pallet::storage]
pub type DestroyedCollectionCount<T> =
StorageValue<Value = CollectionId, QueryKind = ValueQuery>;
- /// Collection info
+ /// Storage of collection info.
#[pallet::storage]
pub type CollectionById<T> = StorageMap<
Hasher = Blake2_128Concat,
@@ -475,7 +589,7 @@
QueryKind = OptionQuery,
>;
- /// Collection properties
+ /// Storage of collection properties.
#[pallet::storage]
#[pallet::getter(fn collection_properties)]
pub type CollectionProperties<T> = StorageMap<
@@ -486,6 +600,7 @@
OnEmpty = up_data_structs::CollectionProperties,
>;
+ /// Storage of collection properties permissions.
#[pallet::storage]
#[pallet::getter(fn property_permissions)]
pub type CollectionPropertyPermissions<T> = StorageMap<
@@ -495,6 +610,7 @@
QueryKind = ValueQuery,
>;
+ /// Storage of collection admins count.
#[pallet::storage]
pub type AdminAmount<T> = StorageMap<
Hasher = Blake2_128Concat,
@@ -525,7 +641,7 @@
QueryKind = ValueQuery,
>;
- /// Not used by code, exists only to provide some types to metadata
+ /// Not used by code, exists only to provide some types to metadata.
#[pallet::storage]
pub type DummyStorageValue<T: Config> = StorageValue<
Value = (
@@ -619,7 +735,9 @@
}
impl<T: Config> Pallet<T> {
- /// Ethereum receiver 0x0000000000000000000000000000000000000000 is reserved, and shouldn't own tokens
+ /// Enshure that receiver address is correct.
+ ///
+ /// Ethereum receiver 0x0000000000000000000000000000000000000000 is reserved, and shouldn't own tokens.
pub fn ensure_correct_receiver(receiver: &T::CrossAccountId) -> DispatchResult {
ensure!(
&T::CrossAccountId::from_eth(H160([0; 20])) != receiver,
@@ -627,19 +745,27 @@
);
Ok(())
}
+
+ /// Get a vector of collection admins.
pub fn adminlist(collection: CollectionId) -> Vec<T::CrossAccountId> {
<IsAdmin<T>>::iter_prefix((collection,))
.map(|(a, _)| a)
.collect()
}
+
+ /// Get a vector of users allowed to mint tokens.
pub fn allowlist(collection: CollectionId) -> Vec<T::CrossAccountId> {
<Allowlist<T>>::iter_prefix((collection,))
.map(|(a, _)| a)
.collect()
}
+
+ /// Is `user` allowed to mint token in `collection`.
pub fn allowed(collection: CollectionId, user: T::CrossAccountId) -> bool {
<Allowlist<T>>::get((collection, user))
}
+
+ /// Get statistics of collections.
pub fn collection_stats() -> CollectionStats {
let created = <CreatedCollectionCount<T>>::get();
let destroyed = <DestroyedCollectionCount<T>>::get();
@@ -650,6 +776,7 @@
}
}
+ /// Get the effective limits for the collection.
pub fn effective_collection_limits(collection: CollectionId) -> Option<CollectionLimits> {
let collection = <CollectionById<T>>::get(collection);
if collection.is_none() {
@@ -683,6 +810,7 @@
Some(effective_limits)
}
+ /// Returns information about the `collection` adapted for rpc.
pub fn rpc_collection(collection: CollectionId) -> Option<RpcCollection<T::AccountId>> {
let Collection {
name,
@@ -758,6 +886,11 @@
}
impl<T: Config> Pallet<T> {
+ /// Create new collection.
+ ///
+ /// * `owner` - The owner of the collection.
+ /// * `data` - Description of the created collection.
+ /// * `is_external` - Marks that collection managet by not "Unique network".
pub fn init_collection(
owner: T::CrossAccountId,
data: CreateCollectionData<T::AccountId>,
@@ -833,7 +966,7 @@
),
);
<T as Config>::Currency::settle(
- &owner.as_sub(),
+ owner.as_sub(),
imbalance,
WithdrawReasons::TRANSFER,
ExistenceRequirement::KeepAlive,
@@ -858,6 +991,10 @@
Ok(id)
}
+ /// Destroy collection.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `sender` - The owner or administrator of the collection.
pub fn destroy_collection(
collection: CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -886,6 +1023,11 @@
Ok(())
}
+ /// Set collection property.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `sender` - The owner or administrator of the collection.
+ /// * `property` - The property to set.
pub fn set_collection_property(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -904,6 +1046,11 @@
Ok(())
}
+ /// Set scouped collection property.
+ ///
+ /// * `collection_id` - ID of the collection for which the property is being set.
+ /// * `scope` - Property scope.
+ /// * `property` - The property to set.
pub fn set_scoped_collection_property(
collection_id: CollectionId,
scope: PropertyScope,
@@ -917,6 +1064,11 @@
Ok(())
}
+ /// Set scouped collection properties.
+ ///
+ /// * `collection_id` - ID of the collection for which the properties is being set.
+ /// * `scope` - Property scope.
+ /// * `properties` - The properties to set.
pub fn set_scoped_collection_properties(
collection_id: CollectionId,
scope: PropertyScope,
@@ -930,6 +1082,11 @@
Ok(())
}
+ /// Set collection properties.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `sender` - The owner or administrator of the collection.
+ /// * `properties` - The properties to set.
#[transactional]
pub fn set_collection_properties(
collection: &CollectionHandle<T>,
@@ -943,6 +1100,11 @@
Ok(())
}
+ /// Delete collection property.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `sender` - The owner or administrator of the collection.
+ /// * `property` - The property to delete.
pub fn delete_collection_property(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -963,6 +1125,11 @@
Ok(())
}
+ /// Delete collection properties.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `sender` - The owner or administrator of the collection.
+ /// * `properties` - The properties to delete.
#[transactional]
pub fn delete_collection_properties(
collection: &CollectionHandle<T>,
@@ -976,7 +1143,12 @@
Ok(())
}
- // For migrations
+ /// Set collection propetry permission without any checks.
+ ///
+ /// Used for migrations.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `property_permissions` - Property permissions.
pub fn set_property_permission_unchecked(
collection: CollectionId,
property_permission: PropertyKeyPermission,
@@ -988,6 +1160,11 @@
Ok(())
}
+ /// Set collection property permission.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `sender` - The owner or administrator of the collection.
+ /// * `property_permission` - Property permission.
pub fn set_property_permission(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -1018,6 +1195,11 @@
Ok(())
}
+ /// Set token property permission.
+ ///
+ /// * `collection` - Collection handler.
+ /// * `sender` - The owner or administrator of the collection.
+ /// * `property_permissions` - Property permissions.
#[transactional]
pub fn set_token_property_permissions(
collection: &CollectionHandle<T>,
@@ -1031,6 +1213,7 @@
Ok(())
}
+ /// Get collection property.
pub fn get_collection_property(
collection_id: CollectionId,
key: &PropertyKey,
@@ -1038,6 +1221,7 @@
Self::collection_properties(collection_id).get(key).cloned()
}
+ /// Convert byte vector to property key vector.
pub fn bytes_keys_to_property_keys(
keys: Vec<Vec<u8>>,
) -> Result<Vec<PropertyKey>, DispatchError> {
@@ -1049,6 +1233,7 @@
.collect::<Result<Vec<PropertyKey>, DispatchError>>()
}
+ /// Get properties according to given keys.
pub fn filter_collection_properties(
collection_id: CollectionId,
keys: Option<Vec<PropertyKey>>,
@@ -1076,6 +1261,7 @@
Ok(properties)
}
+ /// Get property permissions according to given keys.
pub fn filter_property_permissions(
collection_id: CollectionId,
keys: Option<Vec<PropertyKey>>,
@@ -1105,6 +1291,7 @@
Ok(key_permissions)
}
+ /// Toggle `user` participation in the `collection`'s allow list.
pub fn toggle_allowlist(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -1124,6 +1311,7 @@
Ok(())
}
+ /// Toggle `user` participation in the `collection`'s admin list.
pub fn toggle_admin(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -1159,6 +1347,7 @@
Ok(())
}
+ /// Merge set fields from `new_limit` to `old_limit`.
pub fn clamp_limits(
mode: CollectionMode,
old_limit: &CollectionLimits,
@@ -1204,20 +1393,22 @@
Ok(new_limit)
}
+ /// Merge set fields from `new_permission` to `old_permission`.
pub fn clamp_permissions(
_mode: CollectionMode,
- old_limit: &CollectionPermissions,
- mut new_limit: CollectionPermissions,
+ old_permission: &CollectionPermissions,
+ mut new_permission: CollectionPermissions,
) -> Result<CollectionPermissions, DispatchError> {
- limit_default_clone!(old_limit, new_limit,
+ limit_default_clone!(old_permission, new_permission,
access => {},
mint_mode => {},
nesting => { /* todo check for permissive, if only it gets out of benchmarks */ },
);
- Ok(new_limit)
+ Ok(new_permission)
}
}
+/// Indicates unsupported methods by returning [Error::UnsupportedOperation].
#[macro_export]
macro_rules! unsupported {
() => {
@@ -1225,32 +1416,72 @@
};
}
-/// Worst cases
+/// Return weights for various worst-case operations.
pub trait CommonWeightInfo<CrossAccountId> {
+ /// Weight of item creation.
fn create_item() -> Weight;
+
+ /// Weight of items creation.
fn create_multiple_items(amount: &[CreateItemData]) -> Weight;
+
+ /// Weight of items creation.
fn create_multiple_items_ex(cost: &CreateItemExData<CrossAccountId>) -> Weight;
+
+ /// The weight of the burning item.
fn burn_item() -> Weight;
+
+ /// Property setting weight.
+ ///
+ /// * `amount`- The number of properties to set.
fn set_collection_properties(amount: u32) -> Weight;
+
+ /// Collection property deletion weight.
+ ///
+ /// * `amount`- The number of properties to set.
fn delete_collection_properties(amount: u32) -> Weight;
+
+ /// Token property setting weight.
+ ///
+ /// * `amount`- The number of properties to set.
fn set_token_properties(amount: u32) -> Weight;
+
+ /// Token property deletion weight.
+ ///
+ /// * `amount`- The number of properties to delete.
fn delete_token_properties(amount: u32) -> Weight;
+
+ /// Token property permissions set weight.
+ ///
+ /// * `amount`- The number of property permissions to set.
fn set_token_property_permissions(amount: u32) -> Weight;
+
+ /// Transfer price of the token or its parts.
fn transfer() -> Weight;
+
+ /// The price of setting the permission of the operation from another user.
fn approve() -> Weight;
+
+ /// Transfer price from another user.
fn transfer_from() -> Weight;
+
+ /// The price of burning a token from another user.
fn burn_from() -> Weight;
/// Differs from burn_item in case of Fungible and Refungible, as it should burn
- /// whole users's balance
+ /// whole users's balance.
///
- /// This method shouldn't be used directly, as it doesn't count breadth price, use `burn_recursively` instead
+ /// This method shouldn't be used directly, as it doesn't count breadth price, use [burn_recursively](CommonWeightInfo::burn_recursively) instead
fn burn_recursively_self_raw() -> Weight;
- /// Cost of iterating over `amount` children while burning, without counting child burning itself
+
+ /// Cost of iterating over `amount` children while burning, without counting child burning itself.
///
- /// This method shouldn't be used directly, as it doesn't count depth price, use `burn_recursively` instead
+ /// This method shouldn't be used directly, as it doesn't count depth price, use [burn_recursively](CommonWeightInfo::burn_recursively) instead
fn burn_recursively_breadth_raw(amount: u32) -> Weight;
+ /// The price of recursive burning a token.
+ ///
+ /// `max_selfs` - The maximum burning weight of the token itself.
+ /// `max_breadth` - The maximum number of nested tokens to burn.
fn burn_recursively(max_selfs: u32, max_breadth: u32) -> Weight {
Self::burn_recursively_self_raw()
.saturating_mul(max_selfs.max(1) as u64)
@@ -1258,11 +1489,23 @@
}
}
+/// Weight info extension trait for refungible pallet.
pub trait RefungibleExtensionsWeightInfo {
+ /// Weight of token repartition.
fn repartition() -> Weight;
}
+/// Common collection operations.
+///
+/// It wraps methods in Fungible, Nonfungible and Refungible pallets
+/// and adds weight info.
pub trait CommonCollectionOperations<T: Config> {
+ /// Create token.
+ ///
+ /// * `sender` - The user who mint the token and pays for the transaction.
+ /// * `to` - The user who will own the token.
+ /// * `data` - Token data.
+ /// * `nesting_budget` - A budget that can be spent on nesting tokens.
fn create_item(
&self,
sender: T::CrossAccountId,
@@ -1270,6 +1513,13 @@
data: CreateItemData,
nesting_budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Create multiple tokens.
+ ///
+ /// * `sender` - The user who mint the token and pays for the transaction.
+ /// * `to` - The user who will own the token.
+ /// * `data` - Token data.
+ /// * `nesting_budget` - A budget that can be spent on nesting tokens.
fn create_multiple_items(
&self,
sender: T::CrossAccountId,
@@ -1277,18 +1527,38 @@
data: Vec<CreateItemData>,
nesting_budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Create multiple tokens.
+ ///
+ /// * `sender` - The user who mint the token and pays for the transaction.
+ /// * `to` - The user who will own the token.
+ /// * `data` - Token data.
+ /// * `nesting_budget` - A budget that can be spent on nesting tokens.
fn create_multiple_items_ex(
&self,
sender: T::CrossAccountId,
data: CreateItemExData<T::CrossAccountId>,
nesting_budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Burn token.
+ ///
+ /// * `sender` - The user who owns the token.
+ /// * `token` - Token id that will burned.
+ /// * `amount` - The number of parts of the token that will be burned.
fn burn_item(
&self,
sender: T::CrossAccountId,
token: TokenId,
amount: u128,
) -> DispatchResultWithPostInfo;
+
+ /// Burn token and all nested tokens recursievly.
+ ///
+ /// * `sender` - The user who owns the token.
+ /// * `token` - Token id that will burned.
+ /// * `self_budget` - The budget that can be spent on burning tokens.
+ /// * `breadth_budget` - The budget that can be spent on burning nested tokens.
fn burn_item_recursively(
&self,
sender: T::CrossAccountId,
@@ -1296,43 +1566,95 @@
self_budget: &dyn Budget,
breadth_budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Set collection properties.
+ ///
+ /// * `sender` - Must be either the owner of the collection or its admin.
+ /// * `properties` - Properties to be set.
fn set_collection_properties(
&self,
sender: T::CrossAccountId,
properties: Vec<Property>,
) -> DispatchResultWithPostInfo;
+
+ /// Delete collection properties.
+ ///
+ /// * `sender` - Must be either the owner of the collection or its admin.
+ /// * `properties` - The properties to be removed.
fn delete_collection_properties(
&self,
sender: &T::CrossAccountId,
property_keys: Vec<PropertyKey>,
) -> DispatchResultWithPostInfo;
+
+ /// Set token properties.
+ ///
+ /// The appropriate [`PropertyPermission`] for the token property
+ /// must be set with [`Self::set_token_property_permissions`].
+ ///
+ /// * `sender` - Must be either the owner of the token or its admin.
+ /// * `token_id` - The token for which the properties are being set.
+ /// * `properties` - Properties to be set.
+ /// * `budget` - Budget for setting properties.
fn set_token_properties(
&self,
sender: T::CrossAccountId,
token_id: TokenId,
- property: Vec<Property>,
- nesting_budget: &dyn Budget,
+ properties: Vec<Property>,
+ budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Remove token properties.
+ ///
+ /// The appropriate [`PropertyPermission`] for the token property
+ /// must be set with [`Self::set_token_property_permissions`].
+ ///
+ /// * `sender` - Must be either the owner of the token or its admin.
+ /// * `token_id` - The token for which the properties are being remove.
+ /// * `property_keys` - Keys to remove corresponding properties.
+ /// * `budget` - Budget for removing properties.
fn delete_token_properties(
&self,
sender: T::CrossAccountId,
token_id: TokenId,
property_keys: Vec<PropertyKey>,
- nesting_budget: &dyn Budget,
+ budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Set token property permissions.
+ ///
+ /// * `sender` - Must be either the owner of the token or its admin.
+ /// * `token_id` - The token for which the properties are being set.
+ /// * `properties` - Properties to be set.
+ /// * `budget` - Budget for setting properties.
fn set_token_property_permissions(
&self,
sender: &T::CrossAccountId,
property_permissions: Vec<PropertyKeyPermission>,
) -> DispatchResultWithPostInfo;
+
+ /// Transfer amount of token pieces.
+ ///
+ /// * `sender` - Donor user.
+ /// * `to` - Recepient user.
+ /// * `token` - The token of which parts are being sent.
+ /// * `amount` - The number of parts of the token that will be transferred.
+ /// * `budget` - The maximum budget that can be spent on the transfer.
fn transfer(
&self,
sender: T::CrossAccountId,
to: T::CrossAccountId,
token: TokenId,
amount: u128,
- nesting_budget: &dyn Budget,
+ budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Grant access to another account to transfer parts of the token owned by the calling user via [Self::transfer_from].
+ ///
+ /// * `sender` - The user who grants access to the token.
+ /// * `spender` - The user to whom the rights are granted.
+ /// * `token` - The token to which access is granted.
+ /// * `amount` - The amount of pieces that another user can dispose of.
fn approve(
&self,
sender: T::CrossAccountId,
@@ -1340,6 +1662,17 @@
token: TokenId,
amount: u128,
) -> DispatchResultWithPostInfo;
+
+ /// Send parts of a token owned by another user.
+ ///
+ /// Before calling this method, you must grant rights to the calling user via [`Self::approve`].
+ ///
+ /// * `sender` - The user who must have access to the token (see [`Self::approve`]).
+ /// * `from` - The user who owns the token.
+ /// * `to` - Recepient user.
+ /// * `token` - The token of which parts are being sent.
+ /// * `amount` - The number of parts of the token that will be transferred.
+ /// * `budget` - The maximum budget that can be spent on the transfer.
fn transfer_from(
&self,
sender: T::CrossAccountId,
@@ -1347,67 +1680,140 @@
to: T::CrossAccountId,
token: TokenId,
amount: u128,
- nesting_budget: &dyn Budget,
+ budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+
+ /// Burn parts of a token owned by another user.
+ ///
+ /// Before calling this method, you must grant rights to the calling user via [`Self::approve`].
+ ///
+ /// * `sender` - The user who must have access to the token (see [`Self::approve`]).
+ /// * `from` - The user who owns the token.
+ /// * `token` - The token of which parts are being sent.
+ /// * `amount` - The number of parts of the token that will be transferred.
+ /// * `budget` - The maximum budget that can be spent on the burn.
fn burn_from(
&self,
sender: T::CrossAccountId,
from: T::CrossAccountId,
token: TokenId,
amount: u128,
- nesting_budget: &dyn Budget,
+ budget: &dyn Budget,
) -> DispatchResultWithPostInfo;
+ /// Check permission to nest token.
+ ///
+ /// * `sender` - The user who initiated the check.
+ /// * `from` - The token that is checked for embedding.
+ /// * `under` - Token under which to check.
+ /// * `budget` - The maximum budget that can be spent on the check.
fn check_nesting(
&self,
sender: T::CrossAccountId,
from: (CollectionId, TokenId),
under: TokenId,
- nesting_budget: &dyn Budget,
+ budget: &dyn Budget,
) -> DispatchResult;
+ /// Nest one token into another.
+ ///
+ /// * `under` - Token holder.
+ /// * `to_nest` - Nested token.
fn nest(&self, under: TokenId, to_nest: (CollectionId, TokenId));
+ /// Unnest token.
+ ///
+ /// * `under` - Token holder.
+ /// * `to_nest` - Token to unnest.
fn unnest(&self, under: TokenId, to_nest: (CollectionId, TokenId));
+ /// Get all user tokens.
+ ///
+ /// * `account` - Account for which you need to get tokens.
fn account_tokens(&self, account: T::CrossAccountId) -> Vec<TokenId>;
+
+ /// Get all the tokens in the collection.
fn collection_tokens(&self) -> Vec<TokenId>;
+
+ /// Check if the token exists.
+ ///
+ /// * `token` - Id token to check.
fn token_exists(&self, token: TokenId) -> bool;
+
+ /// Get the id of the last minted token.
fn last_token_id(&self) -> TokenId;
+ /// Get the owner of the token.
+ ///
+ /// * `token` - The token for which you need to find out the owner.
fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId>;
+
+ /// Get the value of the token property by key.
+ ///
+ /// * `token` - Token with the property to get.
+ /// * `key` - Property name.
fn token_property(&self, token_id: TokenId, key: &PropertyKey) -> Option<PropertyValue>;
- fn token_properties(&self, token_id: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property>;
+
+ /// Get a set of token properties by key vector.
+ ///
+ /// * `token` - Token with the property to get.
+ /// * `keys` - Vector of property keys. If this parameter is [None](sp_std::result::Result),
+ /// then all properties are returned.
+ fn token_properties(&self, token: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property>;
+
/// Amount of unique collection tokens
fn total_supply(&self) -> u32;
- /// Amount of different tokens account has (Applicable to nonfungible/refungible)
+
+ /// Amount of different tokens account has.
+ ///
+ /// * `account` - The account for which need to get the balance.
fn account_balance(&self, account: T::CrossAccountId) -> u32;
- /// Amount of specific token account have (Applicable to fungible/refungible)
+
+ /// Amount of specific token account have.
fn balance(&self, account: T::CrossAccountId, token: TokenId) -> u128;
+
/// Amount of token pieces
fn total_pieces(&self, token: TokenId) -> Option<u128>;
+
+ /// Get the number of parts of the token that a trusted user can manage.
+ ///
+ /// * `sender` - Trusted user.
+ /// * `spender` - Owner of the token.
+ /// * `token` - The token for which to get the value.
fn allowance(
&self,
sender: T::CrossAccountId,
spender: T::CrossAccountId,
token: TokenId,
) -> u128;
+
+ /// Get extension for RFT collection.
fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions<T>>;
}
+/// Extension for RFT collection.
pub trait RefungibleExtensions<T>
where
T: Config,
{
+ /// Change the number of parts of the token.
+ ///
+ /// When the value changes down, this function is equivalent to burning parts of the token.
+ ///
+ /// * `sender` - The user calling the repartition operation. Must be the owner of the token.
+ /// * `token` - The token for which you want to change the number of parts.
+ /// * `amount` - The new value of the parts of the token.
fn repartition(
&self,
- owner: &T::CrossAccountId,
+ sender: &T::CrossAccountId,
token: TokenId,
amount: u128,
) -> DispatchResultWithPostInfo;
}
-// Flexible enough for implementing CommonCollectionOperations
+/// Merge [`DispatchResult`] with [`Weight`] into [`DispatchResultWithPostInfo`].
+///
+/// Used for [`CommonCollectionOperations`] implementations and flexible enough to do so.
pub fn with_weight(res: DispatchResult, weight: Weight) -> DispatchResultWithPostInfo {
let post_info = PostDispatchInfo {
actual_weight: Some(weight),
pallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterbothbinary blob — no preview
pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -105,6 +105,8 @@
}
}
+/// Implementation of `CommonCollectionOperations` for `FungibleHandle`. It wraps FungibleHandle Pallete
+/// methods and adds weight info.
impl<T: Config> CommonCollectionOperations<T> for FungibleHandle<T> {
fn create_item(
&self,
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -14,6 +14,8 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! ERC-20 standart support implementation.
+
use core::char::{REPLACEMENT_CHARACTER, decode_utf16};
use core::convert::TryInto;
use evm_coder::{ToLog, execution::*, generate_stubgen, solidity_interface, types::*, weight};
pallets/fungible/src/lib.rsdiffbeforeafterboth--- a/pallets/fungible/src/lib.rs
+++ b/pallets/fungible/src/lib.rs
@@ -14,6 +14,68 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! # Fungible Pallet
+//!
+//! The Fungible pallet provides functionality for dealing with fungible assets.
+//!
+//! - [`CreateItemData`]
+//! - [`Config`]
+//! - [`FungibleHandle`]
+//! - [`Pallet`]
+//! - [`TotalSupply`]
+//! - [`Balance`]
+//! - [`Allowance`]
+//! - [`Error`]
+//!
+//! ## Fungible tokens
+//!
+//! Fungible tokens or assets are divisible and non-unique. For instance,
+//! fiat currencies like the dollar are fungible: A $1 bill
+//! in New York City has the same value as a $1 bill in Miami.
+//! A fungible token can also be a cryptocurrency like Bitcoin: 1 BTC is worth 1 BTC,
+//! no matter where it is issued. Thus, the fungibility refers to a specific currency’s
+//! ability to maintain one standard value. As well, it needs to have uniform acceptance.
+//! This means that a currency’s history should not be able to affect its value,
+//! and this is due to the fact that each piece that is a part of the currency is equal
+//! in value when compared to every other piece of that exact same currency.
+//! In the world of cryptocurrencies, this is essentially a coin or a token
+//! that can be replaced by another identical coin or token, and they are
+//! both mutually interchangeable. A popular implementation of fungible tokens is
+//! the ERC-20 token standard.
+//!
+//! ### ERC-20
+//!
+//! The [ERC-20](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) (Ethereum Request for Comments 20), proposed by Fabian Vogelsteller in November 2015,
+//! is a Token Standard that implements an API for tokens within Smart Contracts.
+//!
+//! Example functionalities ERC-20 provides:
+//!
+//! * transfer tokens from one account to another
+//! * get the current token balance of an account
+//! * get the total supply of the token available on the network
+//! * approve whether an amount of token from an account can be spent by a third-party account
+//!
+//! ## Overview
+//!
+//! The module provides functionality for asset management of fungible asset, supports ERC-20 standart, includes:
+//!
+//! * Asset Issuance
+//! * Asset Transferal
+//! * Asset Destruction
+//! * Delegated Asset Transfers
+//!
+//! **NOTE:** The created fungible asset always has `token_id` = 0.
+//! So `tokenA` and `tokenB` will have different `collection_id`.
+//!
+//! ### Implementations
+//!
+//! The Fungible pallet provides implementations for the following traits.
+//!
+//! - [`WithRecorder`](pallet_evm_coder_substrate::WithRecorder): Trait for EVM support
+//! - [`CommonCollectionOperations`](pallet_common::CommonCollectionOperations): Functions for dealing with collections
+//! - [`CommonWeightInfo`](pallet_common::CommonWeightInfo): Functions for retrieval of transaction weight
+//! - [`CommonEvmHandler`](pallet_common::erc::CommonEvmHandler): Function for handling EVM runtime calls
+
#![cfg_attr(not(feature = "std"), no_std)]
use core::ops::Deref;
@@ -57,13 +119,14 @@
pub enum Error<T> {
/// Not Fungible item data used to mint in Fungible collection.
NotFungibleDataUsedToMintFungibleCollectionToken,
- /// Not default id passed as TokenId argument
+ /// Not default id passed as TokenId argument.
+ /// The default value of TokenId for Fungible collection is 0.
FungibleItemsHaveNoId,
- /// Tried to set data for fungible item
+ /// Tried to set data for fungible item.
FungibleItemsDontHaveData,
- /// Fungible token does not support nested
+ /// Fungible token does not support nesting.
FungibleDisallowsNesting,
- /// Setting item properties is not allowed
+ /// Setting item properties is not allowed.
SettingPropertiesNotAllowed,
}
@@ -78,10 +141,12 @@
#[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(_);
+ /// Total amount of fungible tokens inside a collection.
#[pallet::storage]
pub type TotalSupply<T: Config> =
StorageMap<Hasher = Twox64Concat, Key = CollectionId, Value = u128, QueryKind = ValueQuery>;
+ /// Amount of tokens owned by an account inside a collection.
#[pallet::storage]
pub type Balance<T: Config> = StorageNMap<
Key = (
@@ -92,6 +157,7 @@
QueryKind = ValueQuery,
>;
+ /// Storage for delegated assets.
#[pallet::storage]
pub type Allowance<T: Config> = StorageNMap<
Key = (
@@ -104,14 +170,23 @@
>;
}
+/// Wrapper around untyped collection handle, asserting inner collection is of fungible type.
+/// Required for interaction with Fungible collections, type safety and implementation [`solidity_interface`][`evm_coder::solidity_interface`].
+
pub struct FungibleHandle<T: Config>(pallet_common::CollectionHandle<T>);
+
+/// Implementation of methods required for dispatching during runtime.
impl<T: Config> FungibleHandle<T> {
+ /// Casts [`CollectionHandle`][`pallet_common::CollectionHandle`] into [`FungibleHandle`].
pub fn cast(inner: pallet_common::CollectionHandle<T>) -> Self {
Self(inner)
}
+
+ /// Casts [`FungibleHandle`] into [`CollectionHandle`][`pallet_common::CollectionHandle`].
pub fn into_inner(self) -> pallet_common::CollectionHandle<T> {
self.0
}
+ /// Returns a mutable reference to the internal [`CollectionHandle`][`pallet_common::CollectionHandle`].
pub fn common_mut(&mut self) -> &mut pallet_common::CollectionHandle<T> {
&mut self.0
}
@@ -132,13 +207,17 @@
}
}
+/// Pallet implementation for fungible assets
impl<T: Config> Pallet<T> {
+ /// Initializes the collection. Returns [CollectionId] on success, [DispatchError] otherwise.
pub fn init_collection(
owner: T::CrossAccountId,
data: CreateCollectionData<T::AccountId>,
) -> Result<CollectionId, DispatchError> {
<PalletCommon<T>>::init_collection(owner, data, false)
}
+
+ /// Destroys a collection.
pub fn destroy_collection(
collection: FungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -159,10 +238,14 @@
Ok(())
}
+ ///Checks if collection has tokens. Return `true` if it has.
fn collection_has_tokens(collection_id: CollectionId) -> bool {
<TotalSupply<T>>::get(collection_id) != 0
}
+ /// Burns the specified amount of the token. If the token balance
+ /// or total supply is less than the given value,
+ /// it will return [DispatchError].
pub fn burn(
collection: &FungibleHandle<T>,
owner: &T::CrossAccountId,
@@ -207,6 +290,13 @@
Ok(())
}
+ /// Transfers the specified amount of tokens. Will check that
+ /// the transfer is allowed for the token.
+ ///
+ /// - `from`: Owner of tokens to transfer.
+ /// - `to`: Recepient of transfered tokens.
+ /// - `amount`: Amount of tokens to transfer.
+ /// - `collection`: Collection that contains the token
pub fn transfer(
collection: &FungibleHandle<T>,
from: &T::CrossAccountId,
@@ -277,6 +367,8 @@
Ok(())
}
+ /// Minting tokens for multiple IDs.
+ /// See [`create_item`][`Pallet::create_item`] for more details.
pub fn create_multiple_items(
collection: &FungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -378,6 +470,12 @@
));
}
+ /// Set allowance for the spender to `transfer` or `burn` owner's tokens.
+ ///
+ /// - `collection`: Collection that contains the token
+ /// - `owner`: Owner of tokens that sets the allowance.
+ /// - `spender`: Recipient of the allowance rights.
+ /// - `amount`: Amount of tokens the spender is allowed to `transfer` or `burn`.
pub fn set_allowance(
collection: &FungibleHandle<T>,
owner: &T::CrossAccountId,
@@ -402,6 +500,13 @@
Ok(())
}
+ /// Checks if a non-owner has (enough) allowance from the owner to perform operations on the tokens.
+ /// Returns the expected remaining allowance - it should be set manually if the transaction proceeds.
+ ///
+ /// - `collection`: Collection that contains the token.
+ /// - `spender`: CrossAccountId who has the allowance rights.
+ /// - `from`: The owner of the tokens who sets the allowance.
+ /// - `amount`: Amount of tokens by which the allowance sholud be reduced.
fn check_allowed(
collection: &FungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -441,6 +546,11 @@
Ok(allowance)
}
+ /// Transfer fungible tokens from one account to another.
+ /// Same as the [`transfer`][`Pallet::transfer`] but spender doesn't needs to be an owner of the token pieces.
+ /// The owner should set allowance for the spender to transfer pieces.
+ /// See [`set_allowance`][`Pallet::set_allowance`] for more details.
+
pub fn transfer_from(
collection: &FungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -460,6 +570,11 @@
Ok(())
}
+ /// Burn fungible tokens from the account.
+ ///
+ /// Same as the [`burn`][`Pallet::burn`] but spender doesn't need to be an owner of the tokens. The `from` should
+ /// set allowance for the spender to burn tokens.
+ /// See [`set_allowance`][`Pallet::set_allowance`] for more details.
pub fn burn_from(
collection: &FungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -478,7 +593,13 @@
Ok(())
}
- /// Delegated to `create_multiple_items`
+ /// Creates fungible token.
+ ///
+ /// The sender should be the owner/admin of the collection or collection should be configured
+ /// to allow public minting.
+ ///
+ /// - `data`: Contains user who will become the owners of the tokens and amount
+ /// of tokens he will receive.
pub fn create_item(
collection: &FungibleHandle<T>,
sender: &T::CrossAccountId,
pallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -43,6 +43,233 @@
}
}
+// Selector: 7d9262e6
+contract Collection is Dummy, ERC165 {
+ // Set collection property.
+ //
+ // @param key Property key.
+ // @param value Propery value.
+ //
+ // Selector: setCollectionProperty(string,bytes) 2f073f66
+ function setCollectionProperty(string memory key, bytes memory value)
+ public
+ {
+ require(false, stub_error);
+ key;
+ value;
+ dummy = 0;
+ }
+
+ // Delete collection property.
+ //
+ // @param key Property key.
+ //
+ // Selector: deleteCollectionProperty(string) 7b7debce
+ function deleteCollectionProperty(string memory key) public {
+ require(false, stub_error);
+ key;
+ dummy = 0;
+ }
+
+ // Get collection property.
+ //
+ // @dev Throws error if key not found.
+ //
+ // @param key Property key.
+ // @return bytes The property corresponding to the key.
+ //
+ // Selector: collectionProperty(string) cf24fd6d
+ function collectionProperty(string memory key)
+ public
+ view
+ returns (bytes memory)
+ {
+ require(false, stub_error);
+ key;
+ dummy;
+ return hex"";
+ }
+
+ // Set the sponsor of the collection.
+ //
+ // @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ //
+ // @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+ //
+ // Selector: setCollectionSponsor(address) 7623402e
+ function setCollectionSponsor(address sponsor) public {
+ require(false, stub_error);
+ sponsor;
+ dummy = 0;
+ }
+
+ // Collection sponsorship confirmation.
+ //
+ // @dev After setting the sponsor for the collection, it must be confirmed with this function.
+ //
+ // Selector: confirmCollectionSponsorship() 3c50e97a
+ function confirmCollectionSponsorship() public {
+ require(false, stub_error);
+ dummy = 0;
+ }
+
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "accountTokenOwnershipLimit",
+ // "sponsoredDataSize",
+ // "sponsoredDataRateLimit",
+ // "tokenLimit",
+ // "sponsorTransferTimeout",
+ // "sponsorApproveTimeout"
+ // @param value Value of the limit.
+ //
+ // Selector: setCollectionLimit(string,uint32) 6a3841db
+ function setCollectionLimit(string memory limit, uint32 value) public {
+ require(false, stub_error);
+ limit;
+ value;
+ dummy = 0;
+ }
+
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "ownerCanTransfer",
+ // "ownerCanDestroy",
+ // "transfersEnabled"
+ // @param value Value of the limit.
+ //
+ // Selector: setCollectionLimit(string,bool) 993b7fba
+ function setCollectionLimit(string memory limit, bool value) public {
+ require(false, stub_error);
+ limit;
+ value;
+ dummy = 0;
+ }
+
+ // Get contract address.
+ //
+ // Selector: contractAddress() f6b4dfb4
+ function contractAddress() public view returns (address) {
+ require(false, stub_error);
+ dummy;
+ return 0x0000000000000000000000000000000000000000;
+ }
+
+ // Add collection admin by substrate address.
+ // @param new_admin Substrate administrator address.
+ //
+ // Selector: addCollectionAdminSubstrate(uint256) 5730062b
+ function addCollectionAdminSubstrate(uint256 newAdmin) public {
+ require(false, stub_error);
+ newAdmin;
+ dummy = 0;
+ }
+
+ // Remove collection admin by substrate address.
+ // @param admin Substrate administrator address.
+ //
+ // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+ function removeCollectionAdminSubstrate(uint256 admin) public {
+ require(false, stub_error);
+ admin;
+ dummy = 0;
+ }
+
+ // Add collection admin.
+ // @param new_admin Address of the added administrator.
+ //
+ // Selector: addCollectionAdmin(address) 92e462c7
+ function addCollectionAdmin(address newAdmin) public {
+ require(false, stub_error);
+ newAdmin;
+ dummy = 0;
+ }
+
+ // Remove collection admin.
+ //
+ // @param new_admin Address of the removed administrator.
+ //
+ // Selector: removeCollectionAdmin(address) fafd7b42
+ function removeCollectionAdmin(address admin) public {
+ require(false, stub_error);
+ admin;
+ dummy = 0;
+ }
+
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+ //
+ // Selector: setCollectionNesting(bool) 112d4586
+ function setCollectionNesting(bool enable) public {
+ require(false, stub_error);
+ enable;
+ dummy = 0;
+ }
+
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+ // @param collections Addresses of collections that will be available for nesting.
+ //
+ // Selector: setCollectionNesting(bool,address[]) 64872396
+ function setCollectionNesting(bool enable, address[] memory collections)
+ public
+ {
+ require(false, stub_error);
+ enable;
+ collections;
+ dummy = 0;
+ }
+
+ // Set the collection access method.
+ // @param mode Access mode
+ // 0 for Normal
+ // 1 for AllowList
+ //
+ // Selector: setCollectionAccess(uint8) 41835d4c
+ function setCollectionAccess(uint8 mode) public {
+ require(false, stub_error);
+ mode;
+ dummy = 0;
+ }
+
+ // Add the user to the allowed list.
+ //
+ // @param user Address of a trusted user.
+ //
+ // Selector: addToCollectionAllowList(address) 67844fe6
+ function addToCollectionAllowList(address user) public {
+ require(false, stub_error);
+ user;
+ dummy = 0;
+ }
+
+ // Remove the user from the allowed list.
+ //
+ // @param user Address of a removed user.
+ //
+ // Selector: removeFromCollectionAllowList(address) 85c51acb
+ function removeFromCollectionAllowList(address user) public {
+ require(false, stub_error);
+ user;
+ dummy = 0;
+ }
+
+ // Switch permission for minting.
+ //
+ // @param mode Enable if "true".
+ //
+ // Selector: setCollectionMintMode(bool) 00018e84
+ function setCollectionMintMode(bool mode) public {
+ require(false, stub_error);
+ mode;
+ dummy = 0;
+ }
+}
+
// Selector: 942e8b22
contract ERC20 is Dummy, ERC165, ERC20Events {
// Selector: name() 06fdde03
@@ -124,76 +351,6 @@
spender;
dummy;
return 0;
- }
-}
-
-// Selector: c894dc35
-contract Collection is Dummy, ERC165 {
- // Selector: setCollectionProperty(string,bytes) 2f073f66
- function setCollectionProperty(string memory key, bytes memory value)
- public
- {
- require(false, stub_error);
- key;
- value;
- dummy = 0;
- }
-
- // Selector: deleteCollectionProperty(string) 7b7debce
- function deleteCollectionProperty(string memory key) public {
- require(false, stub_error);
- key;
- dummy = 0;
- }
-
- // Throws error if key not found
- //
- // Selector: collectionProperty(string) cf24fd6d
- function collectionProperty(string memory key)
- public
- view
- returns (bytes memory)
- {
- require(false, stub_error);
- key;
- dummy;
- return hex"";
- }
-
- // Selector: ethSetSponsor(address) 8f9af356
- function ethSetSponsor(address sponsor) public {
- require(false, stub_error);
- sponsor;
- dummy = 0;
- }
-
- // Selector: ethConfirmSponsorship() a8580d1a
- function ethConfirmSponsorship() public {
- require(false, stub_error);
- dummy = 0;
- }
-
- // Selector: setLimit(string,uint32) 68db30ca
- function setLimit(string memory limit, uint32 value) public {
- require(false, stub_error);
- limit;
- value;
- dummy = 0;
- }
-
- // Selector: setLimit(string,bool) ea67e4c2
- function setLimit(string memory limit, bool value) public {
- require(false, stub_error);
- limit;
- value;
- dummy = 0;
- }
-
- // Selector: contractAddress() f6b4dfb4
- function contractAddress() public view returns (address) {
- require(false, stub_error);
- dummy;
- return 0x0000000000000000000000000000000000000000;
}
}
pallets/inflation/src/lib.rsdiffbeforeafterboth--- a/pallets/inflation/src/lib.rs
+++ b/pallets/inflation/src/lib.rs
@@ -14,6 +14,20 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! # Inflation
+//!
+//! The inflation pallet is designed to increase the number of tokens at certain intervals.
+//! With each iteration, increases the `total_issuance` value for the native token.
+//! Executing an `on_initialize` hook at the beginning of each block, causing inflation to begin.
+//!
+//! ## Interface
+//!
+//! ### Dispatchable Functions
+//!
+//! * `start_inflation` - This method sets the inflation start date. Can be only called once.
+//! Inflation start block can be backdated and will catch up. The method will create Treasury
+//! account if it does not exist and perform the first inflation deposit.
+
// #![recursion_limit = "1024"]
#![cfg_attr(not(feature = "std"), no_std)]
pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -183,7 +183,7 @@
value: property_value(),
}).collect::<Vec<_>>();
let item = create_max_item(&collection, &owner, owner.clone())?;
- }: {<Pallet<T>>::set_token_properties(&collection, &owner, item, props, false, &Unlimited)?}
+ }: {<Pallet<T>>::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?}
delete_token_properties {
let b in 0..MAX_PROPERTIES_PER_ITEM;
@@ -205,7 +205,7 @@
value: property_value(),
}).collect::<Vec<_>>();
let item = create_max_item(&collection, &owner, owner.clone())?;
- <Pallet<T>>::set_token_properties(&collection, &owner, item, props, false, &Unlimited)?;
+ <Pallet<T>>::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?;
let to_delete = (0..b).map(|k| property_key(k as usize)).collect::<Vec<_>>();
- }: {<Pallet<T>>::delete_token_properties(&collection, &owner, item, to_delete, &Unlimited)?}
+ }: {<Pallet<T>>::delete_token_properties(&collection, &owner, item, to_delete.into_iter(), &Unlimited)?}
}
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -133,6 +133,8 @@
}
}
+/// Implementation of `CommonCollectionOperations` for `NonfungibleHandle`. It wraps Nonfungible Pallete
+/// methods and adds weight info.
impl<T: Config> CommonCollectionOperations<T> for NonfungibleHandle<T> {
fn create_item(
&self,
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -14,6 +14,11 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! # Nonfungible Pallet EVM API
+//!
+//! Provides ERC-721 standart support implementation and EVM API for unique extensions for Nonfungible Pallet.
+//! Method implementations are mostly doing parameter conversion and calling Nonfungible Pallet methods.
+
extern crate alloc;
use core::{
char::{REPLACEMENT_CHARACTER, decode_utf16},
@@ -40,8 +45,15 @@
SelfWeightOf, weights::WeightInfo, TokenProperties,
};
+/// @title A contract that allows to set and delete token properties and change token property permissions.
#[solidity_interface(name = "TokenProperties")]
impl<T: Config> NonfungibleHandle<T> {
+ /// @notice Set permissions for token property.
+ /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
+ /// @param key Property key.
+ /// @param is_mutable Permission to mutate property.
+ /// @param collection_admin Permission to mutate property by collection admin if property is mutable.
+ /// @param token_owner Permission to mutate property by token owner if property is mutable.
fn set_token_property_permission(
&mut self,
caller: caller,
@@ -68,6 +80,11 @@
.map_err(dispatch_to_evm::<T>)
}
+ /// @notice Set token property value.
+ /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ /// @param tokenId ID of the token.
+ /// @param key Property key.
+ /// @param value Property value.
fn set_property(
&mut self,
caller: caller,
@@ -96,6 +113,10 @@
.map_err(dispatch_to_evm::<T>)
}
+ /// @notice Delete token property value.
+ /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ /// @param tokenId ID of the token.
+ /// @param key Property key.
fn delete_property(&mut self, token_id: uint256, caller: caller, key: string) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
@@ -111,7 +132,11 @@
.map_err(dispatch_to_evm::<T>)
}
- /// Throws error if key not found
+ /// @notice Get token property value.
+ /// @dev Throws error if key not found
+ /// @param tokenId ID of the token.
+ /// @param key Property key.
+ /// @return Property value bytes
fn property(&self, token_id: uint256, key: string) -> Result<bytes> {
let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
let key = <Vec<u8>>::from(key)
@@ -127,6 +152,11 @@
#[derive(ToLog)]
pub enum ERC721Events {
+ /// @dev This emits when ownership of any NFT changes by any mechanism.
+ /// This event emits when NFTs are created (`from` == 0) and destroyed
+ /// (`to` == 0). Exception: during contract creation, any number of NFTs
+ /// may be created and assigned without emitting Transfer. At the time of
+ /// any transfer, the approved address for that NFT (if any) is reset to none.
Transfer {
#[indexed]
from: address,
@@ -135,6 +165,10 @@
#[indexed]
token_id: uint256,
},
+ /// @dev This emits when the approved address for an NFT is changed or
+ /// reaffirmed. The zero address indicates there is no approved address.
+ /// When a Transfer event emits, this also indicates that the approved
+ /// address for that NFT (if any) is reset to none.
Approval {
#[indexed]
owner: address,
@@ -143,6 +177,8 @@
#[indexed]
token_id: uint256,
},
+ /// @dev This emits when an operator is enabled or disabled for an owner.
+ /// The operator can manage all NFTs of the owner.
#[allow(dead_code)]
ApprovalForAll {
#[indexed]
@@ -159,19 +195,27 @@
MintingFinished {},
}
+/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
+/// @dev See https://eips.ethereum.org/EIPS/eip-721
#[solidity_interface(name = "ERC721Metadata")]
impl<T: Config> NonfungibleHandle<T> {
+ /// @notice A descriptive name for a collection of NFTs in this contract
fn name(&self) -> Result<string> {
Ok(decode_utf16(self.name.iter().copied())
.map(|r| r.unwrap_or(REPLACEMENT_CHARACTER))
.collect::<string>())
}
+ /// @notice An abbreviated name for NFTs in this contract
fn symbol(&self) -> Result<string> {
Ok(string::from_utf8_lossy(&self.token_prefix).into())
}
- /// Returns token's const_metadata
+ /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
+ /// @dev Throws if `tokenId` is not a valid NFT. URIs are defined in RFC
+ /// 3986. The URI may point to a JSON file that conforms to the "ERC721
+ /// Metadata JSON Schema".
+ /// @return token's const_metadata
#[solidity(rename_selector = "tokenURI")]
fn token_uri(&self, token_id: uint256) -> Result<string> {
let key = token_uri_key();
@@ -192,32 +236,53 @@
}
}
+/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
+/// @dev See https://eips.ethereum.org/EIPS/eip-721
#[solidity_interface(name = "ERC721Enumerable")]
impl<T: Config> NonfungibleHandle<T> {
+ /// @notice Enumerate valid NFTs
+ /// @param index A counter less than `totalSupply()`
+ /// @return The token identifier for the `index`th NFT,
+ /// (sort order not specified)
fn token_by_index(&self, index: uint256) -> Result<uint256> {
Ok(index)
}
- /// Not implemented
+ /// @dev Not implemented
fn token_of_owner_by_index(&self, _owner: address, _index: uint256) -> Result<uint256> {
// TODO: Not implemetable
Err("not implemented".into())
}
+ /// @notice Count NFTs tracked by this contract
+ /// @return A count of valid NFTs tracked by this contract, where each one of
+ /// them has an assigned and queryable owner not equal to the zero address
fn total_supply(&self) -> Result<uint256> {
self.consume_store_reads(1)?;
Ok(<Pallet<T>>::total_supply(self).into())
}
}
+/// @title ERC-721 Non-Fungible Token Standard
+/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
#[solidity_interface(name = "ERC721", events(ERC721Events))]
impl<T: Config> NonfungibleHandle<T> {
+ /// @notice Count all NFTs assigned to an owner
+ /// @dev NFTs assigned to the zero address are considered invalid, and this
+ /// function throws for queries about the zero address.
+ /// @param owner An address for whom to query the balance
+ /// @return The number of NFTs owned by `owner`, possibly zero
fn balance_of(&self, owner: address) -> Result<uint256> {
self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
let balance = <AccountBalance<T>>::get((self.id, owner));
Ok(balance.into())
}
+ /// @notice Find the owner of an NFT
+ /// @dev NFTs assigned to zero address are considered invalid, and queries
+ /// about them do throw.
+ /// @param tokenId The identifier for an NFT
+ /// @return The address of the owner of the NFT
fn owner_of(&self, token_id: uint256) -> Result<address> {
self.consume_store_reads(1)?;
let token: TokenId = token_id.try_into()?;
@@ -226,7 +291,7 @@
.owner
.as_eth())
}
- /// Not implemented
+ /// @dev Not implemented
fn safe_transfer_from_with_data(
&mut self,
_from: address,
@@ -238,7 +303,7 @@
// TODO: Not implemetable
Err("not implemented".into())
}
- /// Not implemented
+ /// @dev Not implemented
fn safe_transfer_from(
&mut self,
_from: address,
@@ -250,6 +315,16 @@
Err("not implemented".into())
}
+ /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
+ /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
+ /// THEY MAY BE PERMANENTLY LOST
+ /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ /// operator for this NFT. Throws if `from` is not the current owner. Throws
+ /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param from The current owner of the NFT
+ /// @param to The new owner
+ /// @param tokenId The NFT to transfer
+ /// @param _value Not used for an NFT
#[weight(<SelfWeightOf<T>>::transfer_from())]
fn transfer_from(
&mut self,
@@ -272,6 +347,12 @@
Ok(())
}
+ /// @notice Set or reaffirm the approved address for an NFT
+ /// @dev The zero address indicates there is no approved address.
+ /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ /// operator of the current owner.
+ /// @param approved The new approved NFT controller
+ /// @param tokenId The NFT to approve
#[weight(<SelfWeightOf<T>>::approve())]
fn approve(
&mut self,
@@ -289,7 +370,7 @@
Ok(())
}
- /// Not implemented
+ /// @dev Not implemented
fn set_approval_for_all(
&mut self,
_caller: caller,
@@ -300,21 +381,26 @@
Err("not implemented".into())
}
- /// Not implemented
+ /// @dev Not implemented
fn get_approved(&self, _token_id: uint256) -> Result<address> {
// TODO: Not implemetable
Err("not implemented".into())
}
- /// Not implemented
+ /// @dev Not implemented
fn is_approved_for_all(&self, _owner: address, _operator: address) -> Result<address> {
// TODO: Not implemetable
Err("not implemented".into())
}
}
+/// @title ERC721 Token that can be irreversibly burned (destroyed).
#[solidity_interface(name = "ERC721Burnable")]
impl<T: Config> NonfungibleHandle<T> {
+ /// @notice Burns a specific ERC721 token.
+ /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ /// operator of the current owner.
+ /// @param tokenId The NFT to approve
#[weight(<SelfWeightOf<T>>::burn_item())]
fn burn(&mut self, caller: caller, token_id: uint256) -> Result<void> {
let caller = T::CrossAccountId::from_eth(caller);
@@ -325,14 +411,18 @@
}
}
+/// @title ERC721 minting logic.
#[solidity_interface(name = "ERC721Mintable", events(ERC721MintableEvents))]
impl<T: Config> NonfungibleHandle<T> {
fn minting_finished(&self) -> Result<bool> {
Ok(false)
}
- /// `token_id` should be obtained with `next_token_id` method,
- /// unlike standard, you can't specify it manually
+ /// @notice Function to mint token.
+ /// @dev `tokenId` should be obtained with `nextTokenId` method,
+ /// unlike standard, you can't specify it manually
+ /// @param to The new owner
+ /// @param tokenId ID of the minted NFT
#[weight(<SelfWeightOf<T>>::create_item())]
fn mint(&mut self, caller: caller, to: address, token_id: uint256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
@@ -364,8 +454,12 @@
Ok(true)
}
- /// `token_id` should be obtained with `next_token_id` method,
- /// unlike standard, you can't specify it manually
+ /// @notice Function to mint token with the given tokenUri.
+ /// @dev `tokenId` should be obtained with `nextTokenId` method,
+ /// unlike standard, you can't specify it manually
+ /// @param to The new owner
+ /// @param tokenId ID of the minted NFT
+ /// @param tokenUri Token URI that would be stored in the NFT properties
#[solidity(rename_selector = "mintWithTokenURI")]
#[weight(<SelfWeightOf<T>>::create_item())]
fn mint_with_token_uri(
@@ -420,7 +514,7 @@
Ok(true)
}
- /// Not implemented
+ /// @dev Not implemented
fn finish_minting(&mut self, _caller: caller) -> Result<bool> {
Err("not implementable".into())
}
@@ -449,8 +543,15 @@
false
}
+/// @title Unique extensions for ERC721.
#[solidity_interface(name = "ERC721UniqueExtensions")]
impl<T: Config> NonfungibleHandle<T> {
+ /// @notice Transfer ownership of an NFT
+ /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ /// is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param to The new owner
+ /// @param tokenId The NFT to transfer
+ /// @param _value Not used for an NFT
#[weight(<SelfWeightOf<T>>::transfer())]
fn transfer(
&mut self,
@@ -470,6 +571,13 @@
Ok(())
}
+ /// @notice Burns a specific ERC721 token.
+ /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ /// operator for this NFT. Throws if `from` is not the current owner. Throws
+ /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param from The current owner of the NFT
+ /// @param tokenId The NFT to transfer
+ /// @param _value Not used for an NFT
#[weight(<SelfWeightOf<T>>::burn_from())]
fn burn_from(
&mut self,
@@ -490,6 +598,7 @@
Ok(())
}
+ /// @notice Returns next free NFT ID.
fn next_token_id(&self) -> Result<uint256> {
self.consume_store_reads(1)?;
Ok(<TokensMinted<T>>::get(self.id)
@@ -498,6 +607,11 @@
.into())
}
+ /// @notice Function to mint multiple tokens.
+ /// @dev `tokenIds` should be an array of consecutive numbers and first number
+ /// should be obtained with `nextTokenId` method
+ /// @param to The new owner
+ /// @param tokenIds IDs of the minted NFTs
#[weight(<SelfWeightOf<T>>::create_multiple_items(token_ids.len() as u32))]
fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec<uint256>) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
@@ -529,6 +643,11 @@
Ok(true)
}
+ /// @notice Function to mint multiple tokens with the given tokenUris.
+ /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+ /// numbers and first number should be obtained with `nextTokenId` method
+ /// @param to The new owner
+ /// @param tokens array of pairs of token ID and token URI for minted tokens
#[solidity(rename_selector = "mintBulkWithTokenURI")]
#[weight(<SelfWeightOf<T>>::create_multiple_items(tokens.len() as u32))]
fn mint_bulk_with_token_uri(
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -14,6 +14,80 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! # Nonfungible Pallet
+//!
+//! The Nonfungible pallet provides functionality for handling nonfungible collections and tokens.
+//!
+//! - [`Config`]
+//! - [`NonfungibleHandle`]
+//! - [`Pallet`]
+//! - [`CommonWeights`]
+//!
+//! ## Overview
+//!
+//! The Nonfungible pallet provides functions for:
+//!
+//! - NFT collection creation and removal
+//! - Minting and burning of NFT tokens
+//! - Retrieving account balances
+//! - Transfering NFT tokens
+//! - Setting and checking allowance for NFT tokens
+//! - Setting properties and permissions for NFT collections and tokens
+//! - Nesting and unnesting tokens
+//!
+//! ### Terminology
+//!
+//! - **NFT token:** Non fungible token.
+//!
+//! - **NFT Collection:** A collection of NFT tokens. All NFT tokens are part of a collection.
+//! Each collection can define it's own properties, properties for it's tokens and set of permissions.
+//!
+//! - **Balance:** Number of NFT tokens owned by an account
+//!
+//! - **Allowance:** NFT tokens owned by one account that another account is allowed to make operations on
+//!
+//! - **Burning:** The process of “deleting” a token from a collection and from
+//! an account balance of the owner.
+//!
+//! - **Nesting:** Setting up parent-child relationship between tokens. Nested tokens are inhereting
+//! owner from their parent. There could be multiple levels of nesting. Token couldn't be nested in
+//! it's child token i.e. parent-child relationship graph shouldn't have cycles.
+//!
+//! - **Properties:** Key-Values pairs. Token properties are attached to a token. Collection properties are
+//! attached to a collection. Set of permissions could be defined for each property.
+//!
+//! ### Implementations
+//!
+//! The Nonfungible pallet provides implementations for the following traits. If these traits provide
+//! the functionality that you need, then you can avoid coupling with the Nonfungible pallet.
+//!
+//! - [`CommonWeightInfo`](pallet_common::CommonWeightInfo): Functions for retrieval of transaction weight
+//! - [`CommonCollectionOperations`](pallet_common::CommonCollectionOperations): Functions for dealing
+//! with collections
+//!
+//! ## Interface
+//!
+//! ### Dispatchable Functions
+//!
+//! - `init_collection` - Create NFT collection. NFT collection can be configured to allow or deny access for
+//! some accounts.
+//! - `destroy_collection` - Destroy exising NFT collection. There should be no tokens in the collection.
+//! - `burn` - Burn NFT token owned by account.
+//! - `transfer` - Transfer NFT token. Transfers should be enabled for NFT collection.
+//! Nests the NFT token if it is sent to another token.
+//! - `create_item` - Mint NFT token in collection. Sender should have permission to mint tokens.
+//! - `set_allowance` - Set allowance for another account.
+//! - `set_token_property` - Set token property value.
+//! - `delete_token_property` - Remove property from the token.
+//! - `set_collection_properties` - Set collection properties.
+//! - `delete_collection_properties` - Remove properties from the collection.
+//! - `set_property_permission` - Set collection property permission.
+//! - `set_token_property_permissions` - Set token property permissions.
+//!
+//! ## Assumptions
+//!
+//! * To perform operations on tokens sender should be in collection's allow list if collection access mode is `AllowList`.
+
#![cfg_attr(not(feature = "std"), no_std)]
use erc::ERC721Events;
@@ -102,13 +176,17 @@
#[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(_);
+ /// Amount of tokens minted for collection.
#[pallet::storage]
pub type TokensMinted<T: Config> =
StorageMap<Hasher = Twox64Concat, Key = CollectionId, Value = u32, QueryKind = ValueQuery>;
+
+ /// Amount of burnt tokens for collection.
#[pallet::storage]
pub type TokensBurnt<T: Config> =
StorageMap<Hasher = Twox64Concat, Key = CollectionId, Value = u32, QueryKind = ValueQuery>;
+ /// Custom data serialized to bytes for token.
#[pallet::storage]
pub type TokenData<T: Config> = StorageNMap<
Key = (Key<Twox64Concat, CollectionId>, Key<Twox64Concat, TokenId>),
@@ -116,6 +194,7 @@
QueryKind = OptionQuery,
>;
+ /// Key-Value map stored for token.
#[pallet::storage]
#[pallet::getter(fn token_properties)]
pub type TokenProperties<T: Config> = StorageNMap<
@@ -125,6 +204,8 @@
OnEmpty = up_data_structs::TokenProperties,
>;
+ /// Custom data that is serialized to bytes and attached to a token property.
+ /// Currently used to store RMRK data.
#[pallet::storage]
#[pallet::getter(fn token_aux_property)]
pub type TokenAuxProperties<T: Config> = StorageNMap<
@@ -138,7 +219,7 @@
QueryKind = OptionQuery,
>;
- /// Used to enumerate tokens owned by account
+ /// Used to enumerate tokens owned by account.
#[pallet::storage]
pub type Owned<T: Config> = StorageNMap<
Key = (
@@ -150,7 +231,7 @@
QueryKind = ValueQuery,
>;
- /// Used to enumerate token's children
+ /// Used to enumerate token's children.
#[pallet::storage]
#[pallet::getter(fn token_children)]
pub type TokenChildren<T: Config> = StorageNMap<
@@ -163,6 +244,7 @@
QueryKind = ValueQuery,
>;
+ /// Amount of tokens owned by account.
#[pallet::storage]
pub type AccountBalance<T: Config> = StorageNMap<
Key = (
@@ -173,6 +255,7 @@
QueryKind = ValueQuery,
>;
+ /// Allowance set by an owner for a spender for a token.
#[pallet::storage]
pub type Allowance<T: Config> = StorageNMap<
Key = (Key<Twox64Concat, CollectionId>, Key<Twox64Concat, TokenId>),
@@ -273,13 +356,21 @@
}
impl<T: Config> Pallet<T> {
+ /// Get number of NFT tokens in collection.
pub fn total_supply(collection: &NonfungibleHandle<T>) -> u32 {
<TokensMinted<T>>::get(collection.id) - <TokensBurnt<T>>::get(collection.id)
}
+
+ /// Check that NFT token exists.
+ ///
+ /// - `token`: Token ID.
pub fn token_exists(collection: &NonfungibleHandle<T>, token: TokenId) -> bool {
<TokenData<T>>::contains_key((collection.id, token))
}
+ /// Set the token property with the scope.
+ ///
+ /// - `property`: Contains key-value pair.
pub fn set_scoped_token_property(
collection_id: CollectionId,
token_id: TokenId,
@@ -294,6 +385,7 @@
Ok(())
}
+ /// Batch operation to set multiple properties with the same scope.
pub fn set_scoped_token_properties(
collection_id: CollectionId,
token_id: TokenId,
@@ -308,6 +400,9 @@
Ok(())
}
+ /// Add or edit auxiliary data for the property.
+ ///
+ /// - `f`: function that adds or edits auxiliary data.
pub fn try_mutate_token_aux_property<R, E>(
collection_id: CollectionId,
token_id: TokenId,
@@ -318,6 +413,7 @@
<TokenAuxProperties<T>>::try_mutate((collection_id, token_id, scope, key), f)
}
+ /// Remove auxiliary data for the property.
pub fn remove_token_aux_property(
collection_id: CollectionId,
token_id: TokenId,
@@ -327,6 +423,9 @@
<TokenAuxProperties<T>>::remove((collection_id, token_id, scope, key));
}
+ /// Get all auxiliary data in a given scope.
+ ///
+ /// Returns iterator over Property Key - Data pairs.
pub fn iterate_token_aux_properties(
collection_id: CollectionId,
token_id: TokenId,
@@ -335,6 +434,7 @@
<TokenAuxProperties<T>>::iter_prefix((collection_id, token_id, scope))
}
+ /// Get ID of the last minted token
pub fn current_token_id(collection_id: CollectionId) -> TokenId {
TokenId(<TokensMinted<T>>::get(collection_id))
}
@@ -342,6 +442,11 @@
// unchecked calls skips any permission checks
impl<T: Config> Pallet<T> {
+ /// Create NFT collection
+ ///
+ /// `init_collection` will take non-refundable deposit for collection creation.
+ ///
+ /// - `data`: Contains settings for collection limits and permissions.
pub fn init_collection(
owner: T::CrossAccountId,
data: CreateCollectionData<T::AccountId>,
@@ -349,6 +454,11 @@
) -> Result<CollectionId, DispatchError> {
<PalletCommon<T>>::init_collection(owner, data, is_external)
}
+
+ /// Destroy NFT collection
+ ///
+ /// `destroy_collection` will throw error if collection contains any tokens.
+ /// Only owner can destroy collection.
pub fn destroy_collection(
collection: NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -373,6 +483,15 @@
Ok(())
}
+ /// Burn NFT token
+ ///
+ /// `burn` removes `token` from the `collection`, from it's owner and from the parent token
+ /// if the token is nested.
+ /// Only the owner can `burn` the token. The `token` shouldn't have any nested tokens.
+ /// Also removes all corresponding properties and auxiliary properties.
+ ///
+ /// - `token`: Token that should be burned
+ /// - `collection`: Collection that contains the token
pub fn burn(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -442,6 +561,12 @@
Ok(())
}
+ /// Same as [`burn`] but burns all the tokens that are nested in the token first
+ ///
+ /// - `self_budget`: Limit for searching children in depth.
+ /// - `breadth_budget`: Limit of breadth of searching children.
+ ///
+ /// [`burn`]: struct.Pallet.html#method.burn
#[transactional]
pub fn burn_recursively(
collection: &NonfungibleHandle<T>,
@@ -481,6 +606,14 @@
})
}
+ /// Batch operation to add, edit or remove properties for the token
+ ///
+ /// All affected properties should have mutable permission and sender should have
+ /// permission to edit those properties.
+ ///
+ /// - `nesting_budget`: Limit for searching parents in depth to check ownership.
+ /// - `is_token_create`: Indicates that method is called during token initialization.
+ /// Allows to bypass ownership check.
#[transactional]
fn modify_token_properties(
collection: &NonfungibleHandle<T>,
@@ -574,6 +707,11 @@
Ok(())
}
+ /// Batch operation to add or edit properties for the token
+ ///
+ /// Same as [`modify_token_properties`] but doesn't allow to remove properties
+ ///
+ /// [`modify_token_properties`]: struct.Pallet.html#method.modify_token_properties
pub fn set_token_properties(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -592,6 +730,11 @@
)
}
+ /// Add or edit single property for the token
+ ///
+ /// Calls [`set_token_properties`] internally
+ ///
+ /// [`set_token_properties`]: struct.Pallet.html#method.set_token_properties
pub fn set_token_property(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -611,6 +754,11 @@
)
}
+ /// Batch operation to remove properties from the token
+ ///
+ /// Same as [`modify_token_properties`] but doesn't allow to add or edit properties
+ ///
+ /// [`modify_token_properties`]: struct.Pallet.html#method.modify_token_properties
pub fn delete_token_properties(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -630,6 +778,11 @@
)
}
+ /// Remove single property from the token
+ ///
+ /// Calls [`delete_token_properties`] internally
+ ///
+ /// [`delete_token_properties`]: struct.Pallet.html#method.delete_token_properties
pub fn delete_token_property(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -646,6 +799,7 @@
)
}
+ /// Add or edit properties for the collection
pub fn set_collection_properties(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -654,6 +808,7 @@
<PalletCommon<T>>::set_collection_properties(collection, sender, properties)
}
+ /// Remove properties from the collection
pub fn delete_collection_properties(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -662,6 +817,9 @@
<PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)
}
+ /// Set property permissions for the token.
+ ///
+ /// Sender should be the owner or admin of token's collection.
pub fn set_token_property_permissions(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -670,6 +828,9 @@
<PalletCommon<T>>::set_token_property_permissions(collection, sender, property_permissions)
}
+ /// Set property permissions for the collection.
+ ///
+ /// Sender should be the owner or admin of the collection.
pub fn set_property_permission(
collection: &CollectionHandle<T>,
sender: &T::CrossAccountId,
@@ -678,6 +839,15 @@
<PalletCommon<T>>::set_property_permission(collection, sender, permission)
}
+ /// Transfer NFT token from one account to another.
+ ///
+ /// `from` account stops being the owner and `to` account becomes the owner of the token.
+ /// If `to` is token than `to` becomes owner of the token and the token become nested.
+ /// Unnests token from previous parent if it was nested before.
+ /// Removes allowance for the token if there was any.
+ /// Throws if transfers aren't allowed for collection or if receiver reached token ownership limit.
+ ///
+ /// - `nesting_budget`: Limit for token nesting depth
pub fn transfer(
collection: &NonfungibleHandle<T>,
from: &T::CrossAccountId,
@@ -769,6 +939,16 @@
Ok(())
}
+ /// Batch operation to mint multiple NFT tokens.
+ ///
+ /// The sender should be the owner/admin of the collection or collection should be configured
+ /// to allow public minting.
+ /// Throws if amount of tokens reached it's limit for the collection or if caller reached
+ /// token ownership limit.
+ ///
+ /// - `data`: Contains list of token properties and users who will become the owners of the
+ /// corresponging tokens.
+ /// - `nesting_budget`: Limit for token nesting depth
pub fn create_multiple_items(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -953,6 +1133,9 @@
}
}
+ /// Set allowance for the spender to `transfer` or `burn` sender's token.
+ ///
+ /// - `token`: Token the spender is allowed to `transfer` or `burn`.
pub fn set_allowance(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -985,6 +1168,7 @@
Ok(())
}
+ /// Checks allowance for the spender to use the token.
fn check_allowed(
collection: &NonfungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -1027,6 +1211,12 @@
Ok(())
}
+ /// Transfer NFT token from one account to another.
+ ///
+ /// Same as the [`transfer`] but spender doesn't needs to be the owner of the token.
+ /// The owner should set allowance for the spender to transfer token.
+ ///
+ /// [`transfer`]: struct.Pallet.html#method.transfer
pub fn transfer_from(
collection: &NonfungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -1043,6 +1233,12 @@
Self::transfer(collection, from, to, token, nesting_budget)
}
+ /// Burn NFT token for `from` account.
+ ///
+ /// Same as the [`burn`] but spender doesn't need to be an owner of the token. The owner should
+ /// set allowance for the spender to burn token.
+ ///
+ /// [`burn`]: struct.Pallet.html#method.burn
pub fn burn_from(
collection: &NonfungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -1057,6 +1253,8 @@
Self::burn(collection, from, token)
}
+ /// Check that `from` token could be nested in `under` token.
+ ///
pub fn check_nesting(
handle: &NonfungibleHandle<T>,
sender: T::CrossAccountId,
@@ -1126,7 +1324,11 @@
.collect()
}
- /// Delegated to `create_multiple_items`
+ /// Mint single NFT token.
+ ///
+ /// Delegated to [`create_multiple_items`]
+ ///
+ /// [`create_multiple_items`]: struct.Pallet.html#method.create_multiple_items
pub fn create_item(
collection: &NonfungibleHandle<T>,
sender: &T::CrossAccountId,
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -53,6 +53,13 @@
// Selector: 41369377
contract TokenProperties is Dummy, ERC165 {
+ // @notice Set permissions for token property.
+ // @dev Throws error if `msg.sender` is not admin or owner of the collection.
+ // @param key Property key.
+ // @param is_mutable Permission to mutate property.
+ // @param collection_admin Permission to mutate property by collection admin if property is mutable.
+ // @param token_owner Permission to mutate property by token owner if property is mutable.
+ //
// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
function setTokenPropertyPermission(
string memory key,
@@ -68,6 +75,12 @@
dummy = 0;
}
+ // @notice Set token property value.
+ // @dev Throws error if `msg.sender` has no permission to edit the property.
+ // @param tokenId ID of the token.
+ // @param key Property key.
+ // @param value Property value.
+ //
// Selector: setProperty(uint256,string,bytes) 1752d67b
function setProperty(
uint256 tokenId,
@@ -81,6 +94,11 @@
dummy = 0;
}
+ // @notice Delete token property value.
+ // @dev Throws error if `msg.sender` has no permission to edit the property.
+ // @param tokenId ID of the token.
+ // @param key Property key.
+ //
// Selector: deleteProperty(uint256,string) 066111d1
function deleteProperty(uint256 tokenId, string memory key) public {
require(false, stub_error);
@@ -89,7 +107,11 @@
dummy = 0;
}
- // Throws error if key not found
+ // @notice Get token property value.
+ // @dev Throws error if key not found
+ // @param tokenId ID of the token.
+ // @param key Property key.
+ // @return Property value bytes
//
// Selector: property(uint256,string) 7228c327
function property(uint256 tokenId, string memory key)
@@ -107,6 +129,11 @@
// Selector: 42966c68
contract ERC721Burnable is Dummy, ERC165 {
+ // @notice Burns a specific ERC721 token.
+ // @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ // operator of the current owner.
+ // @param tokenId The NFT to approve
+ //
// Selector: burn(uint256) 42966c68
function burn(uint256 tokenId) public {
require(false, stub_error);
@@ -117,6 +144,12 @@
// Selector: 58800161
contract ERC721 is Dummy, ERC165, ERC721Events {
+ // @notice Count all NFTs assigned to an owner
+ // @dev NFTs assigned to the zero address are considered invalid, and this
+ // function throws for queries about the zero address.
+ // @param owner An address for whom to query the balance
+ // @return The number of NFTs owned by `owner`, possibly zero
+ //
// Selector: balanceOf(address) 70a08231
function balanceOf(address owner) public view returns (uint256) {
require(false, stub_error);
@@ -125,6 +158,12 @@
return 0;
}
+ // @notice Find the owner of an NFT
+ // @dev NFTs assigned to zero address are considered invalid, and queries
+ // about them do throw.
+ // @param tokenId The identifier for an NFT
+ // @return The address of the owner of the NFT
+ //
// Selector: ownerOf(uint256) 6352211e
function ownerOf(uint256 tokenId) public view returns (address) {
require(false, stub_error);
@@ -133,7 +172,7 @@
return 0x0000000000000000000000000000000000000000;
}
- // Not implemented
+ // @dev Not implemented
//
// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672
function safeTransferFromWithData(
@@ -150,7 +189,7 @@
dummy = 0;
}
- // Not implemented
+ // @dev Not implemented
//
// Selector: safeTransferFrom(address,address,uint256) 42842e0e
function safeTransferFrom(
@@ -165,6 +204,17 @@
dummy = 0;
}
+ // @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
+ // TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
+ // THEY MAY BE PERMANENTLY LOST
+ // @dev Throws unless `msg.sender` is the current owner or an authorized
+ // operator for this NFT. Throws if `from` is not the current owner. Throws
+ // if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ // @param from The current owner of the NFT
+ // @param to The new owner
+ // @param tokenId The NFT to transfer
+ // @param _value Not used for an NFT
+ //
// Selector: transferFrom(address,address,uint256) 23b872dd
function transferFrom(
address from,
@@ -178,6 +228,13 @@
dummy = 0;
}
+ // @notice Set or reaffirm the approved address for an NFT
+ // @dev The zero address indicates there is no approved address.
+ // @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ // operator of the current owner.
+ // @param approved The new approved NFT controller
+ // @param tokenId The NFT to approve
+ //
// Selector: approve(address,uint256) 095ea7b3
function approve(address approved, uint256 tokenId) public {
require(false, stub_error);
@@ -186,7 +243,7 @@
dummy = 0;
}
- // Not implemented
+ // @dev Not implemented
//
// Selector: setApprovalForAll(address,bool) a22cb465
function setApprovalForAll(address operator, bool approved) public {
@@ -196,7 +253,7 @@
dummy = 0;
}
- // Not implemented
+ // @dev Not implemented
//
// Selector: getApproved(uint256) 081812fc
function getApproved(uint256 tokenId) public view returns (address) {
@@ -206,7 +263,7 @@
return 0x0000000000000000000000000000000000000000;
}
- // Not implemented
+ // @dev Not implemented
//
// Selector: isApprovedForAll(address,address) e985e9c5
function isApprovedForAll(address owner, address operator)
@@ -224,6 +281,8 @@
// Selector: 5b5e139f
contract ERC721Metadata is Dummy, ERC165 {
+ // @notice A descriptive name for a collection of NFTs in this contract
+ //
// Selector: name() 06fdde03
function name() public view returns (string memory) {
require(false, stub_error);
@@ -231,6 +290,8 @@
return "";
}
+ // @notice An abbreviated name for NFTs in this contract
+ //
// Selector: symbol() 95d89b41
function symbol() public view returns (string memory) {
require(false, stub_error);
@@ -238,7 +299,11 @@
return "";
}
- // Returns token's const_metadata
+ // @notice A distinct Uniform Resource Identifier (URI) for a given asset.
+ // @dev Throws if `tokenId` is not a valid NFT. URIs are defined in RFC
+ // 3986. The URI may point to a JSON file that conforms to the "ERC721
+ // Metadata JSON Schema".
+ // @return token's const_metadata
//
// Selector: tokenURI(uint256) c87b56dd
function tokenURI(uint256 tokenId) public view returns (string memory) {
@@ -258,8 +323,11 @@
return false;
}
- // `token_id` should be obtained with `next_token_id` method,
- // unlike standard, you can't specify it manually
+ // @notice Function to mint token.
+ // @dev `tokenId` should be obtained with `nextTokenId` method,
+ // unlike standard, you can't specify it manually
+ // @param to The new owner
+ // @param tokenId ID of the minted NFT
//
// Selector: mint(address,uint256) 40c10f19
function mint(address to, uint256 tokenId) public returns (bool) {
@@ -270,8 +338,12 @@
return false;
}
- // `token_id` should be obtained with `next_token_id` method,
- // unlike standard, you can't specify it manually
+ // @notice Function to mint token with the given tokenUri.
+ // @dev `tokenId` should be obtained with `nextTokenId` method,
+ // unlike standard, you can't specify it manually
+ // @param to The new owner
+ // @param tokenId ID of the minted NFT
+ // @param tokenUri Token URI that would be stored in the NFT properties
//
// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f
function mintWithTokenURI(
@@ -287,7 +359,7 @@
return false;
}
- // Not implemented
+ // @dev Not implemented
//
// Selector: finishMinting() 7d64bcb4
function finishMinting() public returns (bool) {
@@ -299,6 +371,11 @@
// Selector: 780e9d63
contract ERC721Enumerable is Dummy, ERC165 {
+ // @notice Enumerate valid NFTs
+ // @param index A counter less than `totalSupply()`
+ // @return The token identifier for the `index`th NFT,
+ // (sort order not specified)
+ //
// Selector: tokenByIndex(uint256) 4f6ccce7
function tokenByIndex(uint256 index) public view returns (uint256) {
require(false, stub_error);
@@ -307,7 +384,7 @@
return 0;
}
- // Not implemented
+ // @dev Not implemented
//
// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
function tokenOfOwnerByIndex(address owner, uint256 index)
@@ -322,6 +399,10 @@
return 0;
}
+ // @notice Count NFTs tracked by this contract
+ // @return A count of valid NFTs tracked by this contract, where each one of
+ // them has an assigned and queryable owner not equal to the zero address
+ //
// Selector: totalSupply() 18160ddd
function totalSupply() public view returns (uint256) {
require(false, stub_error);
@@ -332,6 +413,11 @@
// Selector: 7d9262e6
contract Collection is Dummy, ERC165 {
+ // Set collection property.
+ //
+ // @param key Property key.
+ // @param value Propery value.
+ //
// Selector: setCollectionProperty(string,bytes) 2f073f66
function setCollectionProperty(string memory key, bytes memory value)
public
@@ -342,6 +428,10 @@
dummy = 0;
}
+ // Delete collection property.
+ //
+ // @param key Property key.
+ //
// Selector: deleteCollectionProperty(string) 7b7debce
function deleteCollectionProperty(string memory key) public {
require(false, stub_error);
@@ -349,8 +439,13 @@
dummy = 0;
}
- // Throws error if key not found
+ // Get collection property.
+ //
+ // @dev Throws error if key not found.
//
+ // @param key Property key.
+ // @return bytes The property corresponding to the key.
+ //
// Selector: collectionProperty(string) cf24fd6d
function collectionProperty(string memory key)
public
@@ -363,6 +458,12 @@
return hex"";
}
+ // Set the sponsor of the collection.
+ //
+ // @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ //
+ // @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+ //
// Selector: setCollectionSponsor(address) 7623402e
function setCollectionSponsor(address sponsor) public {
require(false, stub_error);
@@ -370,12 +471,27 @@
dummy = 0;
}
+ // Collection sponsorship confirmation.
+ //
+ // @dev After setting the sponsor for the collection, it must be confirmed with this function.
+ //
// Selector: confirmCollectionSponsorship() 3c50e97a
function confirmCollectionSponsorship() public {
require(false, stub_error);
dummy = 0;
}
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "accountTokenOwnershipLimit",
+ // "sponsoredDataSize",
+ // "sponsoredDataRateLimit",
+ // "tokenLimit",
+ // "sponsorTransferTimeout",
+ // "sponsorApproveTimeout"
+ // @param value Value of the limit.
+ //
// Selector: setCollectionLimit(string,uint32) 6a3841db
function setCollectionLimit(string memory limit, uint32 value) public {
require(false, stub_error);
@@ -384,6 +500,14 @@
dummy = 0;
}
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "ownerCanTransfer",
+ // "ownerCanDestroy",
+ // "transfersEnabled"
+ // @param value Value of the limit.
+ //
// Selector: setCollectionLimit(string,bool) 993b7fba
function setCollectionLimit(string memory limit, bool value) public {
require(false, stub_error);
@@ -392,6 +516,8 @@
dummy = 0;
}
+ // Get contract address.
+ //
// Selector: contractAddress() f6b4dfb4
function contractAddress() public view returns (address) {
require(false, stub_error);
@@ -399,34 +525,51 @@
return 0x0000000000000000000000000000000000000000;
}
+ // Add collection admin by substrate address.
+ // @param new_admin Substrate administrator address.
+ //
// Selector: addCollectionAdminSubstrate(uint256) 5730062b
- function addCollectionAdminSubstrate(uint256 newAdmin) public view {
+ function addCollectionAdminSubstrate(uint256 newAdmin) public {
require(false, stub_error);
newAdmin;
- dummy;
+ dummy = 0;
}
+ // Remove collection admin by substrate address.
+ // @param admin Substrate administrator address.
+ //
// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
- function removeCollectionAdminSubstrate(uint256 newAdmin) public view {
+ function removeCollectionAdminSubstrate(uint256 admin) public {
require(false, stub_error);
- newAdmin;
- dummy;
+ admin;
+ dummy = 0;
}
+ // Add collection admin.
+ // @param new_admin Address of the added administrator.
+ //
// Selector: addCollectionAdmin(address) 92e462c7
- function addCollectionAdmin(address newAdmin) public view {
+ function addCollectionAdmin(address newAdmin) public {
require(false, stub_error);
newAdmin;
- dummy;
+ dummy = 0;
}
+ // Remove collection admin.
+ //
+ // @param new_admin Address of the removed administrator.
+ //
// Selector: removeCollectionAdmin(address) fafd7b42
- function removeCollectionAdmin(address admin) public view {
+ function removeCollectionAdmin(address admin) public {
require(false, stub_error);
admin;
- dummy;
+ dummy = 0;
}
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+ //
// Selector: setCollectionNesting(bool) 112d4586
function setCollectionNesting(bool enable) public {
require(false, stub_error);
@@ -434,6 +577,11 @@
dummy = 0;
}
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+ // @param collections Addresses of collections that will be available for nesting.
+ //
// Selector: setCollectionNesting(bool,address[]) 64872396
function setCollectionNesting(bool enable, address[] memory collections)
public
@@ -444,6 +592,11 @@
dummy = 0;
}
+ // Set the collection access method.
+ // @param mode Access mode
+ // 0 for Normal
+ // 1 for AllowList
+ //
// Selector: setCollectionAccess(uint8) 41835d4c
function setCollectionAccess(uint8 mode) public {
require(false, stub_error);
@@ -451,20 +604,32 @@
dummy = 0;
}
+ // Add the user to the allowed list.
+ //
+ // @param user Address of a trusted user.
+ //
// Selector: addToCollectionAllowList(address) 67844fe6
- function addToCollectionAllowList(address user) public view {
+ function addToCollectionAllowList(address user) public {
require(false, stub_error);
user;
- dummy;
+ dummy = 0;
}
+ // Remove the user from the allowed list.
+ //
+ // @param user Address of a removed user.
+ //
// Selector: removeFromCollectionAllowList(address) 85c51acb
- function removeFromCollectionAllowList(address user) public view {
+ function removeFromCollectionAllowList(address user) public {
require(false, stub_error);
user;
- dummy;
+ dummy = 0;
}
+ // Switch permission for minting.
+ //
+ // @param mode Enable if "true".
+ //
// Selector: setCollectionMintMode(bool) 00018e84
function setCollectionMintMode(bool mode) public {
require(false, stub_error);
@@ -475,6 +640,13 @@
// Selector: d74d154f
contract ERC721UniqueExtensions is Dummy, ERC165 {
+ // @notice Transfer ownership of an NFT
+ // @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ // is the zero address. Throws if `tokenId` is not a valid NFT.
+ // @param to The new owner
+ // @param tokenId The NFT to transfer
+ // @param _value Not used for an NFT
+ //
// Selector: transfer(address,uint256) a9059cbb
function transfer(address to, uint256 tokenId) public {
require(false, stub_error);
@@ -483,6 +655,14 @@
dummy = 0;
}
+ // @notice Burns a specific ERC721 token.
+ // @dev Throws unless `msg.sender` is the current owner or an authorized
+ // operator for this NFT. Throws if `from` is not the current owner. Throws
+ // if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ // @param from The current owner of the NFT
+ // @param tokenId The NFT to transfer
+ // @param _value Not used for an NFT
+ //
// Selector: burnFrom(address,uint256) 79cc6790
function burnFrom(address from, uint256 tokenId) public {
require(false, stub_error);
@@ -491,6 +671,8 @@
dummy = 0;
}
+ // @notice Returns next free NFT ID.
+ //
// Selector: nextTokenId() 75794a3c
function nextTokenId() public view returns (uint256) {
require(false, stub_error);
@@ -498,6 +680,12 @@
return 0;
}
+ // @notice Function to mint multiple tokens.
+ // @dev `tokenIds` should be an array of consecutive numbers and first number
+ // should be obtained with `nextTokenId` method
+ // @param to The new owner
+ // @param tokenIds IDs of the minted NFTs
+ //
// Selector: mintBulk(address,uint256[]) 44a9945e
function mintBulk(address to, uint256[] memory tokenIds)
public
@@ -510,6 +698,12 @@
return false;
}
+ // @notice Function to mint multiple tokens with the given tokenUris.
+ // @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+ // numbers and first number should be obtained with `nextTokenId` method
+ // @param to The new owner
+ // @param tokens array of pairs of token ID and token URI for minted tokens
+ //
// Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006
function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)
public
pallets/nonfungible/src/weights.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/weights.rs
+++ b/pallets/nonfungible/src/weights.rs
@@ -3,7 +3,7 @@
//! Autogenerated weights for pallet_nonfungible
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-07-20, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
@@ -56,7 +56,7 @@
// Storage: Nonfungible TokenData (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (24_135_000 as Weight)
+ (20_328_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -65,9 +65,9 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (21_952_000 as Weight)
- // Standard Error: 5_000
- .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))
+ (10_134_000 as Weight)
+ // Standard Error: 3_000
+ .saturating_add((4_927_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
.saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))
@@ -77,9 +77,9 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items_ex(b: u32, ) -> Weight {
- (10_432_000 as Weight)
- // Standard Error: 6_000
- .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))
+ (5_710_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((7_578_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
@@ -93,7 +93,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_item() -> Weight {
- (29_798_000 as Weight)
+ (28_433_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -105,7 +105,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_recursively_self_raw() -> Weight {
- (37_955_000 as Weight)
+ (34_435_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -119,8 +119,8 @@
// Storage: Common CollectionById (r:1 w:0)
fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 1_349_000
- .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 1_539_000
+ .saturating_add((304_456_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(7 as Weight))
.saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
@@ -131,14 +131,14 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer() -> Weight {
- (27_867_000 as Weight)
+ (24_376_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
// Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible Allowance (r:1 w:1)
fn approve() -> Weight {
- (18_824_000 as Weight)
+ (15_890_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -147,7 +147,7 @@
// Storage: Nonfungible AccountBalance (r:2 w:2)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer_from() -> Weight {
- (32_879_000 as Weight)
+ (28_634_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
@@ -159,7 +159,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_from() -> Weight {
- (37_061_000 as Weight)
+ (32_201_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
@@ -167,28 +167,26 @@
fn set_token_property_permissions(b: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 57_000
- .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((15_232_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionPropertyPermissions (r:1 w:0)
- // Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn set_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 2_278_000
- .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(T::DbWeight::get().reads(3 as Weight))
+ // Standard Error: 1_648_000
+ .saturating_add((288_654_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionPropertyPermissions (r:1 w:0)
- // Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn delete_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 2_234_000
- .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(T::DbWeight::get().reads(3 as Weight))
+ // Standard Error: 1_632_000
+ .saturating_add((289_190_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
}
@@ -200,7 +198,7 @@
// Storage: Nonfungible TokenData (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (24_135_000 as Weight)
+ (20_328_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -209,9 +207,9 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (21_952_000 as Weight)
- // Standard Error: 5_000
- .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))
+ (10_134_000 as Weight)
+ // Standard Error: 3_000
+ .saturating_add((4_927_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
.saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))
@@ -221,9 +219,9 @@
// Storage: Nonfungible TokenData (r:0 w:4)
// Storage: Nonfungible Owned (r:0 w:4)
fn create_multiple_items_ex(b: u32, ) -> Weight {
- (10_432_000 as Weight)
- // Standard Error: 6_000
- .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))
+ (5_710_000 as Weight)
+ // Standard Error: 4_000
+ .saturating_add((7_578_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
@@ -237,7 +235,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_item() -> Weight {
- (29_798_000 as Weight)
+ (28_433_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -249,7 +247,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_recursively_self_raw() -> Weight {
- (37_955_000 as Weight)
+ (34_435_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -263,8 +261,8 @@
// Storage: Common CollectionById (r:1 w:0)
fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 1_349_000
- .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))
+ // Standard Error: 1_539_000
+ .saturating_add((304_456_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(7 as Weight))
.saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
@@ -275,14 +273,14 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer() -> Weight {
- (27_867_000 as Weight)
+ (24_376_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
// Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible Allowance (r:1 w:1)
fn approve() -> Weight {
- (18_824_000 as Weight)
+ (15_890_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -291,7 +289,7 @@
// Storage: Nonfungible AccountBalance (r:2 w:2)
// Storage: Nonfungible Owned (r:0 w:2)
fn transfer_from() -> Weight {
- (32_879_000 as Weight)
+ (28_634_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
@@ -303,7 +301,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Nonfungible TokenProperties (r:0 w:1)
fn burn_from() -> Weight {
- (37_061_000 as Weight)
+ (32_201_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
@@ -311,28 +309,26 @@
fn set_token_property_permissions(b: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 57_000
- .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((15_232_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionPropertyPermissions (r:1 w:0)
- // Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn set_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 2_278_000
- .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(RocksDbWeight::get().reads(3 as Weight))
+ // Standard Error: 1_648_000
+ .saturating_add((288_654_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Common CollectionPropertyPermissions (r:1 w:0)
- // Storage: Nonfungible TokenData (r:1 w:0)
// Storage: Nonfungible TokenProperties (r:1 w:1)
fn delete_token_properties(b: u32, ) -> Weight {
(0 as Weight)
- // Standard Error: 2_234_000
- .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))
- .saturating_add(RocksDbWeight::get().reads(3 as Weight))
+ // Standard Error: 1_632_000
+ .saturating_add((289_190_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
}
pallets/refungible/Cargo.tomldiffbeforeafterboth--- a/pallets/refungible/Cargo.toml
+++ b/pallets/refungible/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "pallet-refungible"
-version = "0.1.0"
+version = "0.1.1"
license = "GPLv3"
edition = "2021"
pallets/refungible/Changelog.mddiffbeforeafterboth--- /dev/null
+++ b/pallets/refungible/Changelog.md
@@ -0,0 +1,3 @@
+### 0.1.1
+---
+* Added support for properties for RFT collections and tokens.
pallets/refungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/refungible/src/benchmarking.rs
+++ b/pallets/refungible/src/benchmarking.rs
@@ -18,9 +18,12 @@
use crate::{Pallet, Config, RefungibleHandle};
use sp_std::prelude::*;
-use pallet_common::benchmarking::{create_collection_raw, create_data};
+use pallet_common::benchmarking::{create_collection_raw, property_key, property_value, create_data};
use frame_benchmarking::{benchmarks, account};
-use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH, CUSTOM_DATA_LIMIT, budget::Unlimited};
+use up_data_structs::{
+ CollectionMode, MAX_ITEMS_PER_BATCH, MAX_PROPERTIES_PER_ITEM, CUSTOM_DATA_LIMIT,
+ budget::Unlimited,
+};
use pallet_common::bench_init;
use core::convert::TryInto;
use core::iter::IntoIterator;
@@ -38,6 +41,7 @@
.collect::<BTreeMap<_, _>>()
.try_into()
.unwrap(),
+ properties: Default::default(),
}
}
fn create_max_item<T: Config>(
@@ -204,6 +208,68 @@
<Pallet<T>>::set_allowance(&collection, &sender, &burner, item, 200)?;
}: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, 200, &Unlimited)?}
+ set_token_property_permissions {
+ let b in 0..MAX_PROPERTIES_PER_ITEM;
+ bench_init!{
+ owner: sub; collection: collection(owner);
+ owner: cross_from_sub;
+ };
+ let perms = (0..b).map(|k| PropertyKeyPermission {
+ key: property_key(k as usize),
+ permission: PropertyPermission {
+ mutable: false,
+ collection_admin: false,
+ token_owner: false,
+ },
+ }).collect::<Vec<_>>();
+ }: {<Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?}
+
+ set_token_properties {
+ let b in 0..MAX_PROPERTIES_PER_ITEM;
+ bench_init!{
+ owner: sub; collection: collection(owner);
+ owner: cross_from_sub;
+ };
+ let perms = (0..b).map(|k| PropertyKeyPermission {
+ key: property_key(k as usize),
+ permission: PropertyPermission {
+ mutable: false,
+ collection_admin: true,
+ token_owner: true,
+ },
+ }).collect::<Vec<_>>();
+ <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;
+ let props = (0..b).map(|k| Property {
+ key: property_key(k as usize),
+ value: property_value(),
+ }).collect::<Vec<_>>();
+ let item = create_max_item(&collection, &owner, [(owner.clone(), 200)])?;
+ }: {<Pallet<T>>::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?}
+
+ delete_token_properties {
+ let b in 0..MAX_PROPERTIES_PER_ITEM;
+ bench_init!{
+ owner: sub; collection: collection(owner);
+ owner: cross_from_sub;
+ };
+ let perms = (0..b).map(|k| PropertyKeyPermission {
+ key: property_key(k as usize),
+ permission: PropertyPermission {
+ mutable: true,
+ collection_admin: true,
+ token_owner: true,
+ },
+ }).collect::<Vec<_>>();
+ <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;
+ let props = (0..b).map(|k| Property {
+ key: property_key(k as usize),
+ value: property_value(),
+ }).collect::<Vec<_>>();
+ let item = create_max_item(&collection, &owner, [(owner.clone(), 200)])?;
+ <Pallet<T>>::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?;
+ let to_delete = (0..b).map(|k| property_key(k as usize)).collect::<Vec<_>>();
+ }: {<Pallet<T>>::delete_token_properties(&collection, &owner, item, to_delete.into_iter(), &Unlimited)?}
+
repartition_item {
bench_init!{
owner: sub; collection: collection(owner);
pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -20,9 +20,12 @@
use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight, traits::Get};
use up_data_structs::{
CollectionId, TokenId, CreateItemExData, CreateRefungibleExData, budget::Budget, Property,
- PropertyKey, PropertyValue, PropertyKeyPermission, CreateItemData,
+ PropertyKey, PropertyValue, PropertyKeyPermission, CreateItemData, CollectionPropertiesVec,
};
-use pallet_common::{CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight};
+use pallet_common::{
+ CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight,
+ weights::WeightInfo as _,
+};
use pallet_structure::Error as StructureError;
use sp_runtime::{DispatchError};
use sp_std::{vec::Vec, vec};
@@ -41,6 +44,14 @@
};
}
+fn properties_weight<T: Config>(properties: &CollectionPropertiesVec) -> u64 {
+ if properties.len() > 0 {
+ <CommonWeights<T>>::set_token_properties(properties.len() as u32)
+ } else {
+ 0
+ }
+}
+
pub struct CommonWeights<T: Config>(PhantomData<T>);
impl<T: Config> CommonWeightInfo<T::CrossAccountId> for CommonWeights<T> {
fn create_item() -> Weight {
@@ -48,16 +59,31 @@
}
fn create_multiple_items(data: &[CreateItemData]) -> Weight {
- <SelfWeightOf<T>>::create_multiple_items(data.len() as u32)
+ <SelfWeightOf<T>>::create_multiple_items(data.len() as u32).saturating_add(
+ data.iter()
+ .map(|data| match data {
+ CreateItemData::ReFungible(rft_data) => {
+ properties_weight::<T>(&rft_data.properties)
+ }
+ _ => 0,
+ })
+ .fold(0, |a, b| a.saturating_add(b)),
+ )
}
fn create_multiple_items_ex(call: &CreateItemExData<T::CrossAccountId>) -> Weight {
match call {
CreateItemExData::RefungibleMultipleOwners(i) => {
<SelfWeightOf<T>>::create_multiple_items_ex_multiple_owners(i.users.len() as u32)
+ .saturating_add(properties_weight::<T>(&i.properties))
}
CreateItemExData::RefungibleMultipleItems(i) => {
<SelfWeightOf<T>>::create_multiple_items_ex_multiple_items(i.len() as u32)
+ .saturating_add(
+ i.iter()
+ .map(|d| properties_weight::<T>(&d.properties))
+ .fold(0, |a, b| a.saturating_add(b)),
+ )
}
_ => 0,
}
@@ -67,29 +93,24 @@
max_weight_of!(burn_item_partial(), burn_item_fully())
}
- fn set_collection_properties(_amount: u32) -> Weight {
- // Error
- 0
+ fn set_collection_properties(amount: u32) -> Weight {
+ <pallet_common::SelfWeightOf<T>>::set_collection_properties(amount)
}
- fn delete_collection_properties(_amount: u32) -> Weight {
- // Error
- 0
+ fn delete_collection_properties(amount: u32) -> Weight {
+ <pallet_common::SelfWeightOf<T>>::delete_collection_properties(amount)
}
- fn set_token_properties(_amount: u32) -> Weight {
- // Error
- 0
+ fn set_token_properties(amount: u32) -> Weight {
+ <SelfWeightOf<T>>::set_token_properties(amount)
}
- fn delete_token_properties(_amount: u32) -> Weight {
- // Error
- 0
+ fn delete_token_properties(amount: u32) -> Weight {
+ <SelfWeightOf<T>>::delete_token_properties(amount)
}
- fn set_token_property_permissions(_amount: u32) -> Weight {
- // Error
- 0
+ fn set_token_property_permissions(amount: u32) -> Weight {
+ <SelfWeightOf<T>>::set_token_property_permissions(amount)
}
fn transfer() -> Weight {
@@ -140,11 +161,14 @@
out.insert(to.clone(), data.pieces);
out.try_into().expect("limit > 0")
},
+ properties: data.properties,
}),
_ => fail!(<Error<T>>::NotRefungibleDataUsedToMintFungibleCollectionToken),
}
}
+/// Implementation of `CommonCollectionOperations` for `RefungibleHandle`. It wraps Refungible Pallete
+/// methods and adds weight info.
impl<T: Config> CommonCollectionOperations<T> for RefungibleHandle<T> {
fn create_item(
&self,
@@ -295,46 +319,85 @@
fn set_collection_properties(
&self,
- _sender: T::CrossAccountId,
- _property: Vec<Property>,
+ sender: T::CrossAccountId,
+ properties: Vec<Property>,
) -> DispatchResultWithPostInfo {
- fail!(<Error<T>>::SettingPropertiesNotAllowed)
+ let weight = <CommonWeights<T>>::set_collection_properties(properties.len() as u32);
+
+ with_weight(
+ <Pallet<T>>::set_collection_properties(self, &sender, properties),
+ weight,
+ )
}
fn delete_collection_properties(
&self,
- _sender: &T::CrossAccountId,
- _property_keys: Vec<PropertyKey>,
+ sender: &T::CrossAccountId,
+ property_keys: Vec<PropertyKey>,
) -> DispatchResultWithPostInfo {
- fail!(<Error<T>>::SettingPropertiesNotAllowed)
+ let weight = <CommonWeights<T>>::delete_collection_properties(property_keys.len() as u32);
+
+ with_weight(
+ <Pallet<T>>::delete_collection_properties(self, sender, property_keys),
+ weight,
+ )
}
fn set_token_properties(
&self,
- _sender: T::CrossAccountId,
- _token_id: TokenId,
- _property: Vec<Property>,
- _nesting_budget: &dyn Budget,
+ sender: T::CrossAccountId,
+ token_id: TokenId,
+ properties: Vec<Property>,
+ nesting_budget: &dyn Budget,
) -> DispatchResultWithPostInfo {
- fail!(<Error<T>>::SettingPropertiesNotAllowed)
+ let weight = <CommonWeights<T>>::set_token_properties(properties.len() as u32);
+
+ with_weight(
+ <Pallet<T>>::set_token_properties(
+ self,
+ &sender,
+ token_id,
+ properties.into_iter(),
+ false,
+ nesting_budget,
+ ),
+ weight,
+ )
}
fn set_token_property_permissions(
&self,
- _sender: &T::CrossAccountId,
- _property_permissions: Vec<PropertyKeyPermission>,
+ sender: &T::CrossAccountId,
+ property_permissions: Vec<PropertyKeyPermission>,
) -> DispatchResultWithPostInfo {
- fail!(<Error<T>>::SettingPropertiesNotAllowed)
+ let weight =
+ <CommonWeights<T>>::set_token_property_permissions(property_permissions.len() as u32);
+
+ with_weight(
+ <Pallet<T>>::set_token_property_permissions(self, sender, property_permissions),
+ weight,
+ )
}
fn delete_token_properties(
&self,
- _sender: T::CrossAccountId,
- _token_id: TokenId,
- _property_keys: Vec<PropertyKey>,
- _nesting_budget: &dyn Budget,
+ sender: T::CrossAccountId,
+ token_id: TokenId,
+ property_keys: Vec<PropertyKey>,
+ nesting_budget: &dyn Budget,
) -> DispatchResultWithPostInfo {
- fail!(<Error<T>>::SettingPropertiesNotAllowed)
+ let weight = <CommonWeights<T>>::delete_token_properties(property_keys.len() as u32);
+
+ with_weight(
+ <Pallet<T>>::delete_token_properties(
+ self,
+ &sender,
+ token_id,
+ property_keys.into_iter(),
+ nesting_budget,
+ ),
+ weight,
+ )
}
fn check_nesting(
@@ -371,8 +434,8 @@
TokenId(<TokensMinted<T>>::get(self.id))
}
- fn token_owner(&self, _token: TokenId) -> Option<T::CrossAccountId> {
- None
+ fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId> {
+ <Pallet<T>>::token_owner(self.id, token)
}
fn token_property(&self, _token_id: TokenId, _key: &PropertyKey) -> Option<PropertyValue> {
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -14,17 +14,93 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+//! # Refungible Pallet
+//!
+//! The Refungible pallet provides functionality for handling refungible collections and tokens.
+//!
+//! - [`Config`]
+//! - [`RefungibleHandle`]
+//! - [`Pallet`]
+//! - [`CommonWeights`]
+//!
+//! ## Overview
+//!
+//! The Refungible pallet provides functions for:
+//!
+//! - RFT collection creation and removal
+//! - Minting and burning of RFT tokens
+//! - Partition and repartition of RFT tokens
+//! - Retrieving number of pieces of RFT token
+//! - Retrieving account balances
+//! - Transfering RFT token pieces
+//! - Burning RFT token pieces
+//! - Setting and checking allowance for RFT tokens
+//!
+//! ### Terminology
+//!
+//! - **RFT token:** Non fungible token that was partitioned to pieces. If an account owns all
+//! of the RFT token pieces than it owns the RFT token and can repartition it.
+//!
+//! - **RFT Collection:** A collection of RFT tokens. All RFT tokens are part of a collection.
+//! Each collection has its own settings and set of permissions.
+//!
+//! - **RFT token piece:** A fungible part of an RFT token.
+//!
+//! - **Balance:** RFT token pieces owned by an account
+//!
+//! - **Allowance:** Maximum number of RFT token pieces that one account is allowed to
+//! transfer from the balance of another account
+//!
+//! - **Burning:** The process of “deleting” a token from a collection or removing token pieces from
+//! an account balance.
+//!
+//! ### Implementations
+//!
+//! The Refungible pallet provides implementations for the following traits. If these traits provide
+//! the functionality that you need, then you can avoid coupling with the Refungible pallet.
+//!
+//! - [`CommonWeightInfo`](pallet_common::CommonWeightInfo): Functions for retrieval of transaction weight
+//! - [`CommonCollectionOperations`](pallet_common::CommonCollectionOperations): Functions for dealing
+//! with collections
+//! - [`RefungibleExtensions`](pallet_common::RefungibleExtensions): Functions specific for refungible
+//! collection
+//!
+//! ## Interface
+//!
+//! ### Dispatchable Functions
+//!
+//! - `init_collection` - Create RFT collection. RFT collection can be configured to allow or deny access for
+//! some accounts.
+//! - `destroy_collection` - Destroy exising RFT collection. There should be no tokens in the collection.
+//! - `burn` - Burn some amount of RFT token pieces owned by account. Burns the RFT token if no pieces left.
+//! - `transfer` - Transfer some amount of RFT token pieces. Transfers should be enabled for RFT collection.
+//! Nests the RFT token if RFT token pieces are sent to another token.
+//! - `create_item` - Mint RFT token in collection. Sender should have permission to mint tokens.
+//! - `set_allowance` - Set allowance for another account to transfer balance from sender's account.
+//! - `repartition` - Repartition token to selected number of pieces. Sender should own all existing pieces.
+//!
+//! ## Assumptions
+//!
+//! * Total number of pieces for one token shouldn't exceed `up_data_structs::MAX_REFUNGIBLE_PIECES`.
+//! * Total number of tokens of all types shouldn't be greater than `up_data_structs::MAX_TOKEN_PREFIX_LENGTH`.
+//! * Sender should be in collection's allow list to perform operations on tokens.
+
#![cfg_attr(not(feature = "std"), no_std)]
-use frame_support::{ensure, BoundedVec};
+use frame_support::{ensure, fail, BoundedVec, transactional, storage::with_transaction};
use up_data_structs::{
AccessMode, CollectionId, CustomDataLimit, MAX_REFUNGIBLE_PIECES, TokenId,
CreateCollectionData, CreateRefungibleExData, mapping::TokenAddressMapping, budget::Budget,
+ Property, PropertyScope, TrySetProperty, PropertyKey, PropertyValue, PropertyPermission,
+ PropertyKeyPermission,
};
use pallet_evm::account::CrossAccountId;
-use pallet_common::{Error as CommonError, Event as CommonEvent, Pallet as PalletCommon};
+use pallet_common::{
+ Error as CommonError, Event as CommonEvent, Pallet as PalletCommon,
+ CommonCollectionOperations as _,
+};
use pallet_structure::Pallet as PalletStructure;
-use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};
+use sp_runtime::{ArithmeticError, DispatchError, DispatchResult, TransactionOutcome};
use sp_std::{vec::Vec, vec, collections::btree_map::BTreeMap};
use core::ops::Deref;
use codec::{Encode, Decode, MaxEncodedLen};
@@ -86,13 +162,17 @@
#[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(_);
+ /// Amount of tokens minted for collection
#[pallet::storage]
pub type TokensMinted<T: Config> =
StorageMap<Hasher = Twox64Concat, Key = CollectionId, Value = u32, QueryKind = ValueQuery>;
+
+ /// Amount of burnt tokens for collection
#[pallet::storage]
pub type TokensBurnt<T: Config> =
StorageMap<Hasher = Twox64Concat, Key = CollectionId, Value = u32, QueryKind = ValueQuery>;
+ /// Custom data serialized to bytes for token
#[pallet::storage]
pub type TokenData<T: Config> = StorageNMap<
Key = (Key<Twox64Concat, CollectionId>, Key<Twox64Concat, TokenId>),
@@ -101,6 +181,16 @@
>;
#[pallet::storage]
+ #[pallet::getter(fn token_properties)]
+ pub type TokenProperties<T: Config> = StorageNMap<
+ Key = (Key<Twox64Concat, CollectionId>, Key<Twox64Concat, TokenId>),
+ Value = up_data_structs::Properties,
+ QueryKind = ValueQuery,
+ OnEmpty = up_data_structs::TokenProperties,
+ >;
+
+ /// Total amount of pieces for token
+ #[pallet::storage]
pub type TotalSupply<T: Config> = StorageNMap<
Key = (Key<Twox64Concat, CollectionId>, Key<Twox64Concat, TokenId>),
Value = u128,
@@ -119,6 +209,7 @@
QueryKind = ValueQuery,
>;
+ /// Amount of tokens owned by account
#[pallet::storage]
pub type AccountBalance<T: Config> = StorageNMap<
Key = (
@@ -130,6 +221,7 @@
QueryKind = ValueQuery,
>;
+ /// Amount of token pieces owned by account
#[pallet::storage]
pub type Balance<T: Config> = StorageNMap<
Key = (
@@ -142,6 +234,7 @@
QueryKind = ValueQuery,
>;
+ /// Allowance set by an owner for a spender for a token
#[pallet::storage]
pub type Allowance<T: Config> = StorageNMap<
Key = (
@@ -188,22 +281,65 @@
}
impl<T: Config> Pallet<T> {
+ /// Get number of RFT tokens in collection
pub fn total_supply(collection: &RefungibleHandle<T>) -> u32 {
<TokensMinted<T>>::get(collection.id) - <TokensBurnt<T>>::get(collection.id)
}
+
+ /// Check that RFT token exists
+ ///
+ /// - `token`: Token ID.
pub fn token_exists(collection: &RefungibleHandle<T>, token: TokenId) -> bool {
<TotalSupply<T>>::contains_key((collection.id, token))
}
+
+ pub fn set_scoped_token_property(
+ collection_id: CollectionId,
+ token_id: TokenId,
+ scope: PropertyScope,
+ property: Property,
+ ) -> DispatchResult {
+ TokenProperties::<T>::try_mutate((collection_id, token_id), |properties| {
+ properties.try_scoped_set(scope, property.key, property.value)
+ })
+ .map_err(<CommonError<T>>::from)?;
+
+ Ok(())
+ }
+
+ pub fn set_scoped_token_properties(
+ collection_id: CollectionId,
+ token_id: TokenId,
+ scope: PropertyScope,
+ properties: impl Iterator<Item = Property>,
+ ) -> DispatchResult {
+ TokenProperties::<T>::try_mutate((collection_id, token_id), |stored_properties| {
+ stored_properties.try_scoped_set_from_iter(scope, properties)
+ })
+ .map_err(<CommonError<T>>::from)?;
+
+ Ok(())
+ }
}
// unchecked calls skips any permission checks
impl<T: Config> Pallet<T> {
+ /// Create RFT collection
+ ///
+ /// `init_collection` will take non-refundable deposit for collection creation.
+ ///
+ /// - `data`: Contains settings for collection limits and permissions.
pub fn init_collection(
owner: T::CrossAccountId,
data: CreateCollectionData<T::AccountId>,
) -> Result<CollectionId, DispatchError> {
<PalletCommon<T>>::init_collection(owner, data, false)
}
+
+ /// Destroy RFT collection
+ ///
+ /// `destroy_collection` will throw error if collection contains any tokens.
+ /// Only owner can destroy collection.
pub fn destroy_collection(
collection: RefungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -235,13 +371,17 @@
.is_some()
}
- pub fn burn_token(collection: &RefungibleHandle<T>, token_id: TokenId) -> DispatchResult {
+ pub fn burn_token_unchecked(
+ collection: &RefungibleHandle<T>,
+ token_id: TokenId,
+ ) -> DispatchResult {
let burnt = <TokensBurnt<T>>::get(collection.id)
.checked_add(1)
.ok_or(ArithmeticError::Overflow)?;
<TokensBurnt<T>>::insert(collection.id, burnt);
<TokenData<T>>::remove((collection.id, token_id));
+ <TokenProperties<T>>::remove((collection.id, token_id));
<TotalSupply<T>>::remove((collection.id, token_id));
<Balance<T>>::remove_prefix((collection.id, token_id), None);
<Allowance<T>>::remove_prefix((collection.id, token_id), None);
@@ -249,6 +389,17 @@
Ok(())
}
+ /// Burn RFT token pieces
+ ///
+ /// `burn` will decrease total amount of token pieces and amount owned by sender.
+ /// `burn` can be called even if there are multiple owners of the RFT token.
+ /// If sender wouldn't have any pieces left after `burn` than she will stop being
+ /// one of the owners of the token. If there is no account that owns any pieces of
+ /// the token than token will be burned too.
+ ///
+ /// - `amount`: Amount of token pieces to burn.
+ /// - `token`: Token who's pieces should be burned
+ /// - `collection`: Collection that contains the token
pub fn burn(
collection: &RefungibleHandle<T>,
owner: &T::CrossAccountId,
@@ -276,7 +427,7 @@
<Owned<T>>::remove((collection.id, owner, token));
<PalletStructure<T>>::unnest_if_nested(owner, collection.id, token);
<AccountBalance<T>>::insert((collection.id, owner), account_balance);
- Self::burn_token(collection, token)?;
+ Self::burn_token_unchecked(collection, token)?;
<PalletCommon<T>>::deposit_event(CommonEvent::ItemDestroyed(
collection.id,
token,
@@ -319,6 +470,179 @@
Ok(())
}
+ #[transactional]
+ fn modify_token_properties(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ token_id: TokenId,
+ properties: impl Iterator<Item = (PropertyKey, Option<PropertyValue>)>,
+ is_token_create: bool,
+ nesting_budget: &dyn Budget,
+ ) -> DispatchResult {
+ let is_collection_admin = || collection.is_owner_or_admin(sender);
+ let is_token_owner = || -> Result<bool, DispatchError> {
+ let balance = collection.balance(sender.clone(), token_id);
+ let total_pieces: u128 =
+ Self::total_pieces(collection.id, token_id).unwrap_or(u128::MAX);
+ if balance != total_pieces {
+ return Ok(false);
+ }
+
+ let is_bundle_owner = <PalletStructure<T>>::check_indirectly_owned(
+ sender.clone(),
+ collection.id,
+ token_id,
+ None,
+ nesting_budget,
+ )?;
+
+ Ok(is_bundle_owner)
+ };
+
+ for (key, value) in properties {
+ let permission = <PalletCommon<T>>::property_permissions(collection.id)
+ .get(&key)
+ .cloned()
+ .unwrap_or_else(PropertyPermission::none);
+
+ let is_property_exists = TokenProperties::<T>::get((collection.id, token_id))
+ .get(&key)
+ .is_some();
+
+ match permission {
+ PropertyPermission { mutable: false, .. } if is_property_exists => {
+ return Err(<CommonError<T>>::NoPermission.into());
+ }
+
+ PropertyPermission {
+ collection_admin,
+ token_owner,
+ ..
+ } => {
+ //TODO: investigate threats during public minting.
+ let is_token_create =
+ is_token_create && (collection_admin || token_owner) && value.is_some();
+ if !(is_token_create
+ || (collection_admin && is_collection_admin())
+ || (token_owner && is_token_owner()?))
+ {
+ fail!(<CommonError<T>>::NoPermission);
+ }
+ }
+ }
+
+ match value {
+ Some(value) => {
+ <TokenProperties<T>>::try_mutate((collection.id, token_id), |properties| {
+ properties.try_set(key.clone(), value)
+ })
+ .map_err(<CommonError<T>>::from)?;
+
+ <PalletCommon<T>>::deposit_event(CommonEvent::TokenPropertySet(
+ collection.id,
+ token_id,
+ key,
+ ));
+ }
+ None => {
+ <TokenProperties<T>>::try_mutate((collection.id, token_id), |properties| {
+ properties.remove(&key)
+ })
+ .map_err(<CommonError<T>>::from)?;
+
+ <PalletCommon<T>>::deposit_event(CommonEvent::TokenPropertyDeleted(
+ collection.id,
+ token_id,
+ key,
+ ));
+ }
+ }
+ }
+
+ Ok(())
+ }
+
+ pub fn set_token_properties(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ token_id: TokenId,
+ properties: impl Iterator<Item = Property>,
+ is_token_create: bool,
+ nesting_budget: &dyn Budget,
+ ) -> DispatchResult {
+ Self::modify_token_properties(
+ collection,
+ sender,
+ token_id,
+ properties.map(|p| (p.key, Some(p.value))),
+ is_token_create,
+ nesting_budget,
+ )
+ }
+
+ pub fn set_token_property(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ token_id: TokenId,
+ property: Property,
+ nesting_budget: &dyn Budget,
+ ) -> DispatchResult {
+ let is_token_create = false;
+
+ Self::set_token_properties(
+ collection,
+ sender,
+ token_id,
+ [property].into_iter(),
+ is_token_create,
+ nesting_budget,
+ )
+ }
+
+ pub fn delete_token_properties(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ token_id: TokenId,
+ property_keys: impl Iterator<Item = PropertyKey>,
+ nesting_budget: &dyn Budget,
+ ) -> DispatchResult {
+ let is_token_create = false;
+
+ Self::modify_token_properties(
+ collection,
+ sender,
+ token_id,
+ property_keys.into_iter().map(|key| (key, None)),
+ is_token_create,
+ nesting_budget,
+ )
+ }
+
+ pub fn delete_token_property(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ token_id: TokenId,
+ property_key: PropertyKey,
+ nesting_budget: &dyn Budget,
+ ) -> DispatchResult {
+ Self::delete_token_properties(
+ collection,
+ sender,
+ token_id,
+ [property_key].into_iter(),
+ nesting_budget,
+ )
+ }
+
+ /// Transfer RFT token pieces from one account to another.
+ ///
+ /// If the sender is no longer owns any pieces after the `transfer` than she stops being an owner of the token.
+ ///
+ /// - `from`: Owner of token pieces to transfer.
+ /// - `to`: Recepient of transfered token pieces.
+ /// - `amount`: Amount of token pieces to transfer.
+ /// - `token`: Token whos pieces should be transfered
+ /// - `collection`: Collection that contains the token
pub fn transfer(
collection: &RefungibleHandle<T>,
from: &T::CrossAccountId,
@@ -423,6 +747,11 @@
Ok(())
}
+ /// Batched operation to create multiple RFT tokens.
+ ///
+ /// Same as `create_item` but creates multiple tokens.
+ ///
+ /// - `data`: Same as 'data` in `create_item` but contains data for multiple tokens.
pub fn create_multiple_items(
collection: &RefungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -507,32 +836,58 @@
// =========
+ with_transaction(|| {
+ for (i, data) in data.iter().enumerate() {
+ let token_id = first_token_id + i as u32 + 1;
+ <TotalSupply<T>>::insert((collection.id, token_id), totals[i]);
+
+ <TokenData<T>>::insert(
+ (collection.id, token_id),
+ ItemData {
+ const_data: data.const_data.clone(),
+ },
+ );
+
+ for (user, amount) in data.users.iter() {
+ if *amount == 0 {
+ continue;
+ }
+ <Balance<T>>::insert((collection.id, token_id, &user), amount);
+ <Owned<T>>::insert((collection.id, &user, TokenId(token_id)), true);
+ <PalletStructure<T>>::nest_if_sent_to_token_unchecked(
+ user,
+ collection.id,
+ TokenId(token_id),
+ );
+ }
+
+ if let Err(e) = Self::set_token_properties(
+ collection,
+ sender,
+ TokenId(token_id),
+ data.properties.clone().into_iter(),
+ true,
+ nesting_budget,
+ ) {
+ return TransactionOutcome::Rollback(Err(e));
+ }
+ }
+ TransactionOutcome::Commit(Ok(()))
+ })?;
+
<TokensMinted<T>>::insert(collection.id, tokens_minted);
+
for (account, balance) in balances {
<AccountBalance<T>>::insert((collection.id, account), balance);
}
+
for (i, token) in data.into_iter().enumerate() {
let token_id = first_token_id + i as u32 + 1;
- <TotalSupply<T>>::insert((collection.id, token_id), totals[i]);
- <TokenData<T>>::insert(
- (collection.id, token_id),
- ItemData {
- const_data: token.const_data,
- },
- );
-
for (user, amount) in token.users.into_iter() {
if amount == 0 {
continue;
}
- <Balance<T>>::insert((collection.id, token_id, &user), amount);
- <Owned<T>>::insert((collection.id, &user, TokenId(token_id)), true);
- <PalletStructure<T>>::nest_if_sent_to_token_unchecked(
- &user,
- collection.id,
- TokenId(token_id),
- );
// TODO: ERC20 transfer event
<PalletCommon<T>>::deposit_event(CommonEvent::ItemCreated(
@@ -568,6 +923,9 @@
))
}
+ /// Set allowance for the spender to `transfer` or `burn` sender's token pieces.
+ ///
+ /// - `amount`: Amount of token pieces the spender is allowed to `transfer` or `burn.
pub fn set_allowance(
collection: &RefungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -636,6 +994,12 @@
Ok(allowance)
}
+ /// Transfer RFT token pieces from one account to another.
+ ///
+ /// Same as the [`transfer`] but spender doesn't needs to be an owner of the token pieces.
+ /// The owner should set allowance for the spender to transfer pieces.
+ ///
+ /// [`transfer`]: struct.Pallet.html#method.transfer
pub fn transfer_from(
collection: &RefungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -657,6 +1021,12 @@
Ok(())
}
+ /// Burn RFT token pieces from the account.
+ ///
+ /// Same as the [`burn`] but spender doesn't need to be an owner of the token pieces. The owner should
+ /// set allowance for the spender to burn pieces
+ ///
+ /// [`burn`]: struct.Pallet.html#method.burn
pub fn burn_from(
collection: &RefungibleHandle<T>,
spender: &T::CrossAccountId,
@@ -677,7 +1047,13 @@
Ok(())
}
- /// Delegated to `create_multiple_items`
+ /// Create RFT token.
+ ///
+ /// The sender should be the owner/admin of the collection or collection should be configured
+ /// to allow public minting.
+ ///
+ /// - `data`: Contains list of users who will become the owners of the token pieces and amount
+ /// of token pieces they will receive.
pub fn create_item(
collection: &RefungibleHandle<T>,
sender: &T::CrossAccountId,
@@ -687,6 +1063,13 @@
Self::create_multiple_items(collection, sender, vec![data], nesting_budget)
}
+ /// Repartition RFT token.
+ ///
+ /// `repartition` will set token balance of the sender and total amount of token pieces.
+ /// Sender should own all of the token pieces. `repartition' could be done even if some
+ /// token pieces were burned before.
+ ///
+ /// - `amount`: Total amount of token pieces that the token will have after `repartition`.
pub fn repartition(
collection: &RefungibleHandle<T>,
owner: &T::CrossAccountId,
@@ -699,10 +1082,10 @@
);
ensure!(amount > 0, <CommonError<T>>::TokenValueTooLow);
// Ensure user owns all pieces
- let total_supply = <TotalSupply<T>>::get((collection.id, token));
+ let total_pieces = Self::total_pieces(collection.id, token).unwrap_or(u128::MAX);
let balance = <Balance<T>>::get((collection.id, token, owner));
ensure!(
- total_supply == balance,
+ total_pieces == balance,
<Error<T>>::RepartitionWhileNotOwningAllPieces
);
@@ -711,7 +1094,44 @@
Ok(())
}
+ fn token_owner(collection_id: CollectionId, token_id: TokenId) -> Option<T::CrossAccountId> {
+ let mut owner = None;
+ let mut count = 0;
+ for key in Balance::<T>::iter_key_prefix((collection_id, token_id)) {
+ count += 1;
+ if count > 1 {
+ return None;
+ }
+ owner = Some(key);
+ }
+ owner
+ }
+
fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Option<u128> {
<TotalSupply<T>>::try_get((collection_id, token_id)).ok()
}
+
+ pub fn set_collection_properties(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ properties: Vec<Property>,
+ ) -> DispatchResult {
+ <PalletCommon<T>>::set_collection_properties(collection, sender, properties)
+ }
+
+ pub fn delete_collection_properties(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ property_keys: Vec<PropertyKey>,
+ ) -> DispatchResult {
+ <PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)
+ }
+
+ pub fn set_token_property_permissions(
+ collection: &RefungibleHandle<T>,
+ sender: &T::CrossAccountId,
+ property_permissions: Vec<PropertyKeyPermission>,
+ ) -> DispatchResult {
+ <PalletCommon<T>>::set_token_property_permissions(collection, sender, property_permissions)
+ }
}
pallets/refungible/src/weights.rsdiffbeforeafterboth--- a/pallets/refungible/src/weights.rs
+++ b/pallets/refungible/src/weights.rs
@@ -3,7 +3,7 @@
//! Autogenerated weights for pallet_refungible
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-06-27, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-07-20, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
@@ -49,6 +49,9 @@
fn transfer_from_removing() -> Weight;
fn transfer_from_creating_removing() -> Weight;
fn burn_from() -> Weight;
+ fn set_token_property_permissions(b: u32, ) -> Weight;
+ fn set_token_properties(b: u32, ) -> Weight;
+ fn delete_token_properties(b: u32, ) -> Weight;
fn repartition_item() -> Weight;
}
@@ -62,7 +65,7 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (17_553_000 as Weight)
+ (21_310_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
@@ -73,9 +76,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (10_654_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((5_114_000 as Weight).saturating_mul(b as Weight))
+ (9_552_000 as Weight)
+ // Standard Error: 2_000
+ .saturating_add((7_056_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
.saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
@@ -87,9 +90,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {
- (3_587_000 as Weight)
+ (4_857_000 as Weight)
// Standard Error: 2_000
- .saturating_add((7_931_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((9_838_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
@@ -102,9 +105,9 @@
// Storage: Refungible Balance (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {
- (1_980_000 as Weight)
+ (11_335_000 as Weight)
// Standard Error: 2_000
- .saturating_add((6_305_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((6_784_000 as Weight).saturating_mul(b as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
@@ -115,7 +118,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_item_partial() -> Weight {
- (21_010_000 as Weight)
+ (21_239_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -125,14 +128,15 @@
// Storage: Refungible TokensBurnt (r:1 w:1)
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
+ // Storage: Refungible TokenProperties (r:0 w:1)
fn burn_item_fully() -> Weight {
- (28_413_000 as Weight)
+ (29_426_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
- .saturating_add(T::DbWeight::get().writes(6 as Weight))
+ .saturating_add(T::DbWeight::get().writes(7 as Weight))
}
// Storage: Refungible Balance (r:2 w:2)
fn transfer_normal() -> Weight {
- (17_513_000 as Weight)
+ (17_743_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
@@ -140,7 +144,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_creating() -> Weight {
- (20_469_000 as Weight)
+ (20_699_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -148,7 +152,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_removing() -> Weight {
- (22_472_000 as Weight)
+ (22_833_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
@@ -156,21 +160,21 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_creating_removing() -> Weight {
- (24_866_000 as Weight)
+ (24_936_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
// Storage: Refungible Balance (r:1 w:0)
// Storage: Refungible Allowance (r:0 w:1)
fn approve() -> Weight {
- (13_475_000 as Weight)
+ (13_446_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Refungible Allowance (r:1 w:1)
// Storage: Refungible Balance (r:2 w:2)
fn transfer_from_normal() -> Weight {
- (24_707_000 as Weight)
+ (24_777_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
}
@@ -179,7 +183,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_creating() -> Weight {
- (27_812_000 as Weight)
+ (28_483_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -188,7 +192,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_removing() -> Weight {
- (29_966_000 as Weight)
+ (29_896_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -197,7 +201,7 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_from_creating_removing() -> Weight {
- (31_660_000 as Weight)
+ (32_070_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(7 as Weight))
}
@@ -208,15 +212,42 @@
// Storage: Refungible TokensBurnt (r:1 w:1)
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
+ // Storage: Refungible TokenProperties (r:0 w:1)
fn burn_from() -> Weight {
- (36_248_000 as Weight)
+ (36_789_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
- .saturating_add(T::DbWeight::get().writes(7 as Weight))
+ .saturating_add(T::DbWeight::get().writes(8 as Weight))
+ }
+ // Storage: Common CollectionPropertyPermissions (r:1 w:1)
+ fn set_token_property_permissions(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 62_000
+ .saturating_add((15_803_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionPropertyPermissions (r:1 w:0)
+ // Storage: Refungible TokenProperties (r:1 w:1)
+ fn set_token_properties(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 1_668_000
+ .saturating_add((302_308_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionPropertyPermissions (r:1 w:0)
+ // Storage: Refungible TokenProperties (r:1 w:1)
+ fn delete_token_properties(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 1_619_000
+ .saturating_add((294_574_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Refungible TotalSupply (r:1 w:1)
// Storage: Refungible Balance (r:1 w:1)
fn repartition_item() -> Weight {
- (8_226_000 as Weight)
+ (8_325_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
@@ -231,7 +262,7 @@
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn create_item() -> Weight {
- (17_553_000 as Weight)
+ (21_310_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
@@ -242,9 +273,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items(b: u32, ) -> Weight {
- (10_654_000 as Weight)
- // Standard Error: 1_000
- .saturating_add((5_114_000 as Weight).saturating_mul(b as Weight))
+ (9_552_000 as Weight)
+ // Standard Error: 2_000
+ .saturating_add((7_056_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
.saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
@@ -256,9 +287,9 @@
// Storage: Refungible TokenData (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {
- (3_587_000 as Weight)
+ (4_857_000 as Weight)
// Standard Error: 2_000
- .saturating_add((7_931_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((9_838_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
@@ -271,9 +302,9 @@
// Storage: Refungible Balance (r:0 w:4)
// Storage: Refungible Owned (r:0 w:4)
fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {
- (1_980_000 as Weight)
+ (11_335_000 as Weight)
// Standard Error: 2_000
- .saturating_add((6_305_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add((6_784_000 as Weight).saturating_mul(b as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
@@ -284,7 +315,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn burn_item_partial() -> Weight {
- (21_010_000 as Weight)
+ (21_239_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -294,14 +325,15 @@
// Storage: Refungible TokensBurnt (r:1 w:1)
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
+ // Storage: Refungible TokenProperties (r:0 w:1)
fn burn_item_fully() -> Weight {
- (28_413_000 as Weight)
+ (29_426_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
- .saturating_add(RocksDbWeight::get().writes(6 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(7 as Weight))
}
// Storage: Refungible Balance (r:2 w:2)
fn transfer_normal() -> Weight {
- (17_513_000 as Weight)
+ (17_743_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
@@ -309,7 +341,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_creating() -> Weight {
- (20_469_000 as Weight)
+ (20_699_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -317,7 +349,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_removing() -> Weight {
- (22_472_000 as Weight)
+ (22_833_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
@@ -325,21 +357,21 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_creating_removing() -> Weight {
- (24_866_000 as Weight)
+ (24_936_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
// Storage: Refungible Balance (r:1 w:0)
// Storage: Refungible Allowance (r:0 w:1)
fn approve() -> Weight {
- (13_475_000 as Weight)
+ (13_446_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Refungible Allowance (r:1 w:1)
// Storage: Refungible Balance (r:2 w:2)
fn transfer_from_normal() -> Weight {
- (24_707_000 as Weight)
+ (24_777_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
}
@@ -348,7 +380,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_creating() -> Weight {
- (27_812_000 as Weight)
+ (28_483_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -357,7 +389,7 @@
// Storage: Refungible AccountBalance (r:1 w:1)
// Storage: Refungible Owned (r:0 w:1)
fn transfer_from_removing() -> Weight {
- (29_966_000 as Weight)
+ (29_896_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -366,7 +398,7 @@
// Storage: Refungible AccountBalance (r:2 w:2)
// Storage: Refungible Owned (r:0 w:2)
fn transfer_from_creating_removing() -> Weight {
- (31_660_000 as Weight)
+ (32_070_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(7 as Weight))
}
@@ -377,15 +409,42 @@
// Storage: Refungible TokensBurnt (r:1 w:1)
// Storage: Refungible TokenData (r:0 w:1)
// Storage: Refungible Owned (r:0 w:1)
+ // Storage: Refungible TokenProperties (r:0 w:1)
fn burn_from() -> Weight {
- (36_248_000 as Weight)
+ (36_789_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
- .saturating_add(RocksDbWeight::get().writes(7 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(8 as Weight))
+ }
+ // Storage: Common CollectionPropertyPermissions (r:1 w:1)
+ fn set_token_property_permissions(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 62_000
+ .saturating_add((15_803_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: Common CollectionPropertyPermissions (r:1 w:0)
+ // Storage: Refungible TokenProperties (r:1 w:1)
+ fn set_token_properties(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 1_668_000
+ .saturating_add((302_308_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
+ // Storage: Common CollectionPropertyPermissions (r:1 w:0)
+ // Storage: Refungible TokenProperties (r:1 w:1)
+ fn delete_token_properties(b: u32, ) -> Weight {
+ (0 as Weight)
+ // Standard Error: 1_619_000
+ .saturating_add((294_574_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
// Storage: Refungible TotalSupply (r:1 w:1)
// Storage: Refungible Balance (r:1 w:1)
fn repartition_item() -> Weight {
- (8_226_000 as Weight)
+ (8_325_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
pallets/scheduler/src/lib.rsdiffbeforeafterboth--- a/pallets/scheduler/src/lib.rs
+++ b/pallets/scheduler/src/lib.rs
@@ -152,7 +152,6 @@
pub use preimage_provider::PreimageProviderAndMaybeRecipient;
-/// Weight templates for calculating actual fees
pub(crate) trait MarginalWeightInfo: WeightInfo {
fn item(periodic: bool, named: bool, resolved: Option<bool>) -> Weight {
match (periodic, named, resolved) {
@@ -259,7 +258,7 @@
/// If `Some` then the number of blocks to postpone execution for when the item is delayed.
type NoPreimagePostponement: Get<Option<Self::BlockNumber>>;
- /// Sponsoring function. In this version sposorship is disabled
+ /// Sponsoring function.
// type SponsorshipHandler: SponsorshipHandler<Self::AccountId, <Self as Config>::Call>;
/// The helper type used for custom transaction fee logic.
@@ -268,7 +267,6 @@
/// A Scheduler-Runtime interface for finer payment handling.
pub trait DispatchCall<T: frame_system::Config + Config, SelfContainedSignedInfo> {
- /// Lock balance required for transaction payment
fn reserve_balance(
id: ScheduledId,
sponsor: <T as frame_system::Config>::AccountId,
@@ -292,7 +290,6 @@
TransactionValidityError,
>;
- /// Cancel schedule reservation and unlock balance
fn cancel_reserve(
id: ScheduledId,
sponsor: <T as frame_system::Config>::AccountId,
@@ -436,7 +433,6 @@
continue;
}
- // Sender is the account who signed transaction
let sender = ensure_signed(
<<T as Config>::Origin as From<T::PalletsOrigin>>::from(s.origin.clone())
.into(),
@@ -500,6 +496,7 @@
}
/// Weight should be 0, because transaction already paid
0
+ //total_weight
}
}
pallets/structure/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/structure/src/benchmarking.rs
+++ b/pallets/structure/src/benchmarking.rs
@@ -1,3 +1,19 @@
+// 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 super::*;
use frame_benchmarking::{benchmarks, account};
pallets/structure/src/lib.rsdiffbeforeafterboth--- a/pallets/structure/src/lib.rs
+++ b/pallets/structure/src/lib.rs
@@ -1,3 +1,56 @@
+// 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/>.
+
+//! # Structure Pallet
+//!
+//! The Structure pallet provides functionality for handling tokens nesting an unnesting.
+//!
+//! - [`Config`]
+//! - [`Pallet`]
+//!
+//! ## Overview
+//!
+//! The Structure pallet provides functions for:
+//!
+//! - Searching for token parents, children and owners. Actual implementation of searching for
+//! parent/child is done by pallets corresponding to token's collection type.
+//! - Nesting and unnesting tokens. Actual implementation of nesting is done by pallets corresponding
+//! to token's collection type.
+//!
+//! ### Terminology
+//!
+//! - **Nesting:** Setting up parent-child relationship between tokens. Nested tokens are inhereting
+//! owner from their parent. There could be multiple levels of nesting. Token couldn't be nested in
+//! it's child token i.e. parent-child relationship graph shouldn't have
+//!
+//! - **Parent:** Token that current token is nested in.
+//!
+//! - **Owner:** Account that owns the token and all nested tokens.
+//!
+//! ## Interface
+//!
+//! ### Available Functions
+//!
+//! - `find_parent` - Find parent of the token. It could be an account or another token.
+//! - `parent_chain` - Find chain of parents of the token.
+//! - `find_topmost_owner` - Find account or token in the end of the chain of parents.
+//! - `check_nesting` - Check if the token could be nested in the other token
+//! - `nest_if_sent_to_token` - Nest the token in the other token
+//! - `unnest_if_nested` - Unnest the token from the other token
+
#![cfg_attr(not(feature = "std"), no_std)]
use pallet_common::CommonCollectionOperations;
@@ -82,6 +135,12 @@
}
impl<T: Config> Pallet<T> {
+ /// Find account owning the `token` or a token that the `token` is nested in.
+ ///
+ /// Returns the enum that have three variants:
+ /// - [`User`](crate::Parent<T>::User): Contains account.
+ /// - [`Token`](crate::Parent<T>::Token): Contains token id and collection id.
+ /// - [`TokenNotFound`](crate::Parent<T>::TokenNotFound): Indicates that parent was not found
pub fn find_parent(
collection: CollectionId,
token: TokenId,
@@ -103,6 +162,11 @@
})
}
+ /// Get the chain of parents of a token in the nesting hierarchy
+ ///
+ /// Returns an iterator of addresses of the owning tokens and the owning account,
+ /// starting from the immediate parent token, ending with the account.
+ /// Returns error if cycle is detected.
pub fn parent_chain(
mut collection: CollectionId,
mut token: TokenId,
@@ -133,6 +197,8 @@
/// Try to dereference address, until finding top level owner
///
/// May return token address if parent token not yet exists
+ ///
+ /// - `budget`: Limit for searching parents in depth.
pub fn find_topmost_owner(
collection: CollectionId,
token: TokenId,
@@ -149,6 +215,10 @@
})
}
+ /// Find the topmost parent and check that assigning `for_nest` token as a child for
+ /// `token` wouldn't create a cycle.
+ ///
+ /// - `budget`: Limit for searching parents in depth.
pub fn get_checked_topmost_owner(
collection: CollectionId,
token: TokenId,
@@ -177,6 +247,10 @@
Err(<Error<T>>::DepthLimit.into())
}
+ /// Burn token and all of it's nested tokens
+ ///
+ /// - `self_budget`: Limit for searching children in depth.
+ /// - `breadth_budget`: Limit of breadth of searching children.
pub fn burn_item_recursively(
from: T::CrossAccountId,
collection: CollectionId,
@@ -190,7 +264,13 @@
dispatch.burn_item_recursively(from.clone(), token, self_budget, breadth_budget)
}
- /// Check if token indirectly owned by specified user
+ /// Check if `token` indirectly owned by `user`
+ ///
+ /// Returns `true` if `user` is `token`'s owner. Or If token is provided as `user` then
+ /// check that `user` and `token` have same owner.
+ /// Checks that assigning `for_nest` token as a child for `token` wouldn't create a cycle.
+ ///
+ /// - `budget`: Limit for searching parents in depth.
pub fn check_indirectly_owned(
user: T::CrossAccountId,
collection: CollectionId,
@@ -207,6 +287,12 @@
.map(|indirect_owner| indirect_owner == target_parent)
}
+ /// Checks that `under` is valid token and that `token_id` could be nested under it
+ /// and that `from` is `under`'s owner
+ ///
+ /// Returns OK if `under` is not a token
+ ///
+ /// - `nesting_budget`: Limit for searching parents in depth.
pub fn check_nesting(
from: T::CrossAccountId,
under: &T::CrossAccountId,
@@ -219,6 +305,11 @@
})
}
+ /// Nests `token_id` under `under` token
+ ///
+ /// Returns OK if `under` is not a token. Checks that nesting is possible.
+ ///
+ /// - `nesting_budget`: Limit for searching parents in depth.
pub fn nest_if_sent_to_token(
from: T::CrossAccountId,
under: &T::CrossAccountId,
@@ -235,6 +326,9 @@
})
}
+ /// Nests `token_id` under `owner` token
+ ///
+ /// Caller should check that nesting wouldn't cause recursion in nesting
pub fn nest_if_sent_to_token_unchecked(
owner: &T::CrossAccountId,
collection_id: CollectionId,
@@ -245,6 +339,7 @@
});
}
+ /// Unnests `token_id` from `owner`.
pub fn unnest_if_nested(
owner: &T::CrossAccountId,
collection_id: CollectionId,
pallets/unique/src/eth/stubs/CollectionHelpers.rawdiffbeforeafterbothbinary blob — no preview
primitives/data-structs/Cargo.tomldiffbeforeafterboth--- a/primitives/data-structs/Cargo.toml
+++ b/primitives/data-structs/Cargo.toml
@@ -6,7 +6,7 @@
license = 'GPLv3'
homepage = "https://unique.network"
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.1.0'
+version = '0.1.1'
[dependencies]
scale-info = { version = "2.0.1", default-features = false, features = [
primitives/data-structs/Changelog.mddiffbeforeafterboth--- /dev/null
+++ b/primitives/data-structs/Changelog.md
@@ -0,0 +1,3 @@
+### 0.1.1
+---
+* Added fields with properties to `CreateReFungibleData` and `CreateRefungibleExData`.
\ No newline at end of file
primitives/data-structs/src/lib.rsdiffbeforeafterboth--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -534,7 +534,12 @@
#[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
#[derivative(Debug(format_with = "bounded::vec_debug"))]
pub const_data: BoundedVec<u8, CustomDataLimit>,
+
pub pieces: u128,
+
+ #[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
+ #[derivative(Debug(format_with = "bounded::vec_debug"))]
+ pub properties: CollectionPropertiesVec,
}
#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
@@ -568,6 +573,8 @@
pub const_data: BoundedVec<u8, CustomDataLimit>,
#[derivative(Debug(format_with = "bounded::map_debug"))]
pub users: BoundedBTreeMap<CrossAccountId, u128, ConstU32<MAX_ITEMS_PER_BATCH>>,
+ #[derivative(Debug(format_with = "bounded::vec_debug"))]
+ pub properties: CollectionPropertiesVec,
}
#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, TypeInfo, Derivative)]
runtime/opal/src/lib.rsdiffbeforeafterboth--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -707,7 +707,6 @@
pub type Barrier = (
TakeWeightCredit,
AllowTopLevelPaidExecutionFrom<Everything>,
- AllowUnpaidExecutionFrom<ParentOrParentsUnitPlurality>,
// ^^^ Parent & its unit plurality gets free execution
);
runtime/quartz/src/lib.rsdiffbeforeafterboth--- a/runtime/quartz/src/lib.rs
+++ b/runtime/quartz/src/lib.rs
@@ -706,7 +706,6 @@
pub type Barrier = (
TakeWeightCredit,
AllowTopLevelPaidExecutionFrom<Everything>,
- AllowUnpaidExecutionFrom<ParentOrParentsUnitPlurality>,
// ^^^ Parent & its unit plurality gets free execution
);
runtime/unique/src/lib.rsdiffbeforeafterboth--- a/runtime/unique/src/lib.rs
+++ b/runtime/unique/src/lib.rs
@@ -705,7 +705,6 @@
pub type Barrier = (
TakeWeightCredit,
AllowTopLevelPaidExecutionFrom<Everything>,
- AllowUnpaidExecutionFrom<ParentOrParentsUnitPlurality>,
// ^^^ Parent & its unit plurality gets free execution
);
tests/src/createMultipleItems.test.tsdiffbeforeafterboth--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -376,14 +376,26 @@
// ReFungible
const collectionIdReFungible =
await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
- const argsReFungible = [
- {ReFungible: ['1'.repeat(2049), 10]},
- {ReFungible: ['2'.repeat(2049), 10]},
- {ReFungible: ['3'.repeat(2049), 10]},
- ];
- const createMultipleItemsTxFungible = api.tx.unique
- .createMultipleItems(collectionIdReFungible, normalizeAccountId(alice.address), argsReFungible);
- await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTxFungible)).to.be.rejected;
+ {
+ const argsReFungible = [
+ {ReFungible: ['1'.repeat(2049), 10, []]},
+ {ReFungible: ['2'.repeat(2049), 10, []]},
+ {ReFungible: ['3'.repeat(2049), 10, []]},
+ ];
+ const createMultipleItemsTxFungible = api.tx.unique
+ .createMultipleItems(collectionIdReFungible, normalizeAccountId(alice.address), argsReFungible);
+ await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTxFungible)).to.be.rejected;
+ }
+ {
+ const argsReFungible = [
+ {ReFungible: {properties: [{key: 'key', value: 'A'.repeat(32769)}]}},
+ {ReFungible: {properties: [{key: 'key', value: 'B'.repeat(32769)}]}},
+ {ReFungible: {properties: [{key: 'key', value: 'C'.repeat(32769)}]}},
+ ];
+ const createMultipleItemsTxFungible = api.tx.unique
+ .createMultipleItems(collectionIdReFungible, normalizeAccountId(alice.address), argsReFungible);
+ await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTxFungible)).to.be.rejected;
+ }
});
});
tests/src/eth/api/UniqueFungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -28,6 +28,154 @@
function burnFrom(address from, uint256 amount) external returns (bool);
}
+// Selector: 7d9262e6
+interface Collection is Dummy, ERC165 {
+ // Set collection property.
+ //
+ // @param key Property key.
+ // @param value Propery value.
+ //
+ // Selector: setCollectionProperty(string,bytes) 2f073f66
+ function setCollectionProperty(string memory key, bytes memory value)
+ external;
+
+ // Delete collection property.
+ //
+ // @param key Property key.
+ //
+ // Selector: deleteCollectionProperty(string) 7b7debce
+ function deleteCollectionProperty(string memory key) external;
+
+ // Get collection property.
+ //
+ // @dev Throws error if key not found.
+ //
+ // @param key Property key.
+ // @return bytes The property corresponding to the key.
+ //
+ // Selector: collectionProperty(string) cf24fd6d
+ function collectionProperty(string memory key)
+ external
+ view
+ returns (bytes memory);
+
+ // Set the sponsor of the collection.
+ //
+ // @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ //
+ // @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+ //
+ // Selector: setCollectionSponsor(address) 7623402e
+ function setCollectionSponsor(address sponsor) external;
+
+ // Collection sponsorship confirmation.
+ //
+ // @dev After setting the sponsor for the collection, it must be confirmed with this function.
+ //
+ // Selector: confirmCollectionSponsorship() 3c50e97a
+ function confirmCollectionSponsorship() external;
+
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "accountTokenOwnershipLimit",
+ // "sponsoredDataSize",
+ // "sponsoredDataRateLimit",
+ // "tokenLimit",
+ // "sponsorTransferTimeout",
+ // "sponsorApproveTimeout"
+ // @param value Value of the limit.
+ //
+ // Selector: setCollectionLimit(string,uint32) 6a3841db
+ function setCollectionLimit(string memory limit, uint32 value) external;
+
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "ownerCanTransfer",
+ // "ownerCanDestroy",
+ // "transfersEnabled"
+ // @param value Value of the limit.
+ //
+ // Selector: setCollectionLimit(string,bool) 993b7fba
+ function setCollectionLimit(string memory limit, bool value) external;
+
+ // Get contract address.
+ //
+ // Selector: contractAddress() f6b4dfb4
+ function contractAddress() external view returns (address);
+
+ // Add collection admin by substrate address.
+ // @param new_admin Substrate administrator address.
+ //
+ // Selector: addCollectionAdminSubstrate(uint256) 5730062b
+ function addCollectionAdminSubstrate(uint256 newAdmin) external;
+
+ // Remove collection admin by substrate address.
+ // @param admin Substrate administrator address.
+ //
+ // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+ function removeCollectionAdminSubstrate(uint256 admin) external;
+
+ // Add collection admin.
+ // @param new_admin Address of the added administrator.
+ //
+ // Selector: addCollectionAdmin(address) 92e462c7
+ function addCollectionAdmin(address newAdmin) external;
+
+ // Remove collection admin.
+ //
+ // @param new_admin Address of the removed administrator.
+ //
+ // Selector: removeCollectionAdmin(address) fafd7b42
+ function removeCollectionAdmin(address admin) external;
+
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+ //
+ // Selector: setCollectionNesting(bool) 112d4586
+ function setCollectionNesting(bool enable) external;
+
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+ // @param collections Addresses of collections that will be available for nesting.
+ //
+ // Selector: setCollectionNesting(bool,address[]) 64872396
+ function setCollectionNesting(bool enable, address[] memory collections)
+ external;
+
+ // Set the collection access method.
+ // @param mode Access mode
+ // 0 for Normal
+ // 1 for AllowList
+ //
+ // Selector: setCollectionAccess(uint8) 41835d4c
+ function setCollectionAccess(uint8 mode) external;
+
+ // Add the user to the allowed list.
+ //
+ // @param user Address of a trusted user.
+ //
+ // Selector: addToCollectionAllowList(address) 67844fe6
+ function addToCollectionAllowList(address user) external;
+
+ // Remove the user from the allowed list.
+ //
+ // @param user Address of a removed user.
+ //
+ // Selector: removeFromCollectionAllowList(address) 85c51acb
+ function removeFromCollectionAllowList(address user) external;
+
+ // Switch permission for minting.
+ //
+ // @param mode Enable if "true".
+ //
+ // Selector: setCollectionMintMode(bool) 00018e84
+ function setCollectionMintMode(bool mode) external;
+}
+
// Selector: 942e8b22
interface ERC20 is Dummy, ERC165, ERC20Events {
// Selector: name() 06fdde03
@@ -63,39 +211,6 @@
external
view
returns (uint256);
-}
-
-// Selector: c894dc35
-interface Collection is Dummy, ERC165 {
- // Selector: setCollectionProperty(string,bytes) 2f073f66
- function setCollectionProperty(string memory key, bytes memory value)
- external;
-
- // Selector: deleteCollectionProperty(string) 7b7debce
- function deleteCollectionProperty(string memory key) external;
-
- // Throws error if key not found
- //
- // Selector: collectionProperty(string) cf24fd6d
- function collectionProperty(string memory key)
- external
- view
- returns (bytes memory);
-
- // Selector: ethSetSponsor(address) 8f9af356
- function ethSetSponsor(address sponsor) external;
-
- // Selector: ethConfirmSponsorship() a8580d1a
- function ethConfirmSponsorship() external;
-
- // Selector: setLimit(string,uint32) 68db30ca
- function setLimit(string memory limit, uint32 value) external;
-
- // Selector: setLimit(string,bool) ea67e4c2
- function setLimit(string memory limit, bool value) external;
-
- // Selector: contractAddress() f6b4dfb4
- function contractAddress() external view returns (address);
}
interface UniqueFungible is
tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -44,6 +44,13 @@
// Selector: 41369377
interface TokenProperties is Dummy, ERC165 {
+ // @notice Set permissions for token property.
+ // @dev Throws error if `msg.sender` is not admin or owner of the collection.
+ // @param key Property key.
+ // @param is_mutable Permission to mutate property.
+ // @param collection_admin Permission to mutate property by collection admin if property is mutable.
+ // @param token_owner Permission to mutate property by token owner if property is mutable.
+ //
// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
function setTokenPropertyPermission(
string memory key,
@@ -52,6 +59,12 @@
bool tokenOwner
) external;
+ // @notice Set token property value.
+ // @dev Throws error if `msg.sender` has no permission to edit the property.
+ // @param tokenId ID of the token.
+ // @param key Property key.
+ // @param value Property value.
+ //
// Selector: setProperty(uint256,string,bytes) 1752d67b
function setProperty(
uint256 tokenId,
@@ -59,10 +72,19 @@
bytes memory value
) external;
+ // @notice Delete token property value.
+ // @dev Throws error if `msg.sender` has no permission to edit the property.
+ // @param tokenId ID of the token.
+ // @param key Property key.
+ //
// Selector: deleteProperty(uint256,string) 066111d1
function deleteProperty(uint256 tokenId, string memory key) external;
- // Throws error if key not found
+ // @notice Get token property value.
+ // @dev Throws error if key not found
+ // @param tokenId ID of the token.
+ // @param key Property key.
+ // @return Property value bytes
//
// Selector: property(uint256,string) 7228c327
function property(uint256 tokenId, string memory key)
@@ -73,19 +95,36 @@
// Selector: 42966c68
interface ERC721Burnable is Dummy, ERC165 {
+ // @notice Burns a specific ERC721 token.
+ // @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ // operator of the current owner.
+ // @param tokenId The NFT to approve
+ //
// Selector: burn(uint256) 42966c68
function burn(uint256 tokenId) external;
}
// Selector: 58800161
interface ERC721 is Dummy, ERC165, ERC721Events {
+ // @notice Count all NFTs assigned to an owner
+ // @dev NFTs assigned to the zero address are considered invalid, and this
+ // function throws for queries about the zero address.
+ // @param owner An address for whom to query the balance
+ // @return The number of NFTs owned by `owner`, possibly zero
+ //
// Selector: balanceOf(address) 70a08231
function balanceOf(address owner) external view returns (uint256);
+ // @notice Find the owner of an NFT
+ // @dev NFTs assigned to zero address are considered invalid, and queries
+ // about them do throw.
+ // @param tokenId The identifier for an NFT
+ // @return The address of the owner of the NFT
+ //
// Selector: ownerOf(uint256) 6352211e
function ownerOf(uint256 tokenId) external view returns (address);
- // Not implemented
+ // @dev Not implemented
//
// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672
function safeTransferFromWithData(
@@ -95,7 +134,7 @@
bytes memory data
) external;
- // Not implemented
+ // @dev Not implemented
//
// Selector: safeTransferFrom(address,address,uint256) 42842e0e
function safeTransferFrom(
@@ -104,6 +143,17 @@
uint256 tokenId
) external;
+ // @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
+ // TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
+ // THEY MAY BE PERMANENTLY LOST
+ // @dev Throws unless `msg.sender` is the current owner or an authorized
+ // operator for this NFT. Throws if `from` is not the current owner. Throws
+ // if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ // @param from The current owner of the NFT
+ // @param to The new owner
+ // @param tokenId The NFT to transfer
+ // @param _value Not used for an NFT
+ //
// Selector: transferFrom(address,address,uint256) 23b872dd
function transferFrom(
address from,
@@ -111,20 +161,27 @@
uint256 tokenId
) external;
+ // @notice Set or reaffirm the approved address for an NFT
+ // @dev The zero address indicates there is no approved address.
+ // @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ // operator of the current owner.
+ // @param approved The new approved NFT controller
+ // @param tokenId The NFT to approve
+ //
// Selector: approve(address,uint256) 095ea7b3
function approve(address approved, uint256 tokenId) external;
- // Not implemented
+ // @dev Not implemented
//
// Selector: setApprovalForAll(address,bool) a22cb465
function setApprovalForAll(address operator, bool approved) external;
- // Not implemented
+ // @dev Not implemented
//
// Selector: getApproved(uint256) 081812fc
function getApproved(uint256 tokenId) external view returns (address);
- // Not implemented
+ // @dev Not implemented
//
// Selector: isApprovedForAll(address,address) e985e9c5
function isApprovedForAll(address owner, address operator)
@@ -135,13 +192,21 @@
// Selector: 5b5e139f
interface ERC721Metadata is Dummy, ERC165 {
+ // @notice A descriptive name for a collection of NFTs in this contract
+ //
// Selector: name() 06fdde03
function name() external view returns (string memory);
+ // @notice An abbreviated name for NFTs in this contract
+ //
// Selector: symbol() 95d89b41
function symbol() external view returns (string memory);
- // Returns token's const_metadata
+ // @notice A distinct Uniform Resource Identifier (URI) for a given asset.
+ // @dev Throws if `tokenId` is not a valid NFT. URIs are defined in RFC
+ // 3986. The URI may point to a JSON file that conforms to the "ERC721
+ // Metadata JSON Schema".
+ // @return token's const_metadata
//
// Selector: tokenURI(uint256) c87b56dd
function tokenURI(uint256 tokenId) external view returns (string memory);
@@ -152,14 +217,21 @@
// Selector: mintingFinished() 05d2035b
function mintingFinished() external view returns (bool);
- // `token_id` should be obtained with `next_token_id` method,
- // unlike standard, you can't specify it manually
+ // @notice Function to mint token.
+ // @dev `tokenId` should be obtained with `nextTokenId` method,
+ // unlike standard, you can't specify it manually
+ // @param to The new owner
+ // @param tokenId ID of the minted NFT
//
// Selector: mint(address,uint256) 40c10f19
function mint(address to, uint256 tokenId) external returns (bool);
- // `token_id` should be obtained with `next_token_id` method,
- // unlike standard, you can't specify it manually
+ // @notice Function to mint token with the given tokenUri.
+ // @dev `tokenId` should be obtained with `nextTokenId` method,
+ // unlike standard, you can't specify it manually
+ // @param to The new owner
+ // @param tokenId ID of the minted NFT
+ // @param tokenUri Token URI that would be stored in the NFT properties
//
// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f
function mintWithTokenURI(
@@ -168,7 +240,7 @@
string memory tokenUri
) external returns (bool);
- // Not implemented
+ // @dev Not implemented
//
// Selector: finishMinting() 7d64bcb4
function finishMinting() external returns (bool);
@@ -176,10 +248,15 @@
// Selector: 780e9d63
interface ERC721Enumerable is Dummy, ERC165 {
+ // @notice Enumerate valid NFTs
+ // @param index A counter less than `totalSupply()`
+ // @return The token identifier for the `index`th NFT,
+ // (sort order not specified)
+ //
// Selector: tokenByIndex(uint256) 4f6ccce7
function tokenByIndex(uint256 index) external view returns (uint256);
- // Not implemented
+ // @dev Not implemented
//
// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
function tokenOfOwnerByIndex(address owner, uint256 index)
@@ -187,20 +264,38 @@
view
returns (uint256);
+ // @notice Count NFTs tracked by this contract
+ // @return A count of valid NFTs tracked by this contract, where each one of
+ // them has an assigned and queryable owner not equal to the zero address
+ //
// Selector: totalSupply() 18160ddd
function totalSupply() external view returns (uint256);
}
// Selector: 7d9262e6
interface Collection is Dummy, ERC165 {
+ // Set collection property.
+ //
+ // @param key Property key.
+ // @param value Propery value.
+ //
// Selector: setCollectionProperty(string,bytes) 2f073f66
function setCollectionProperty(string memory key, bytes memory value)
external;
+ // Delete collection property.
+ //
+ // @param key Property key.
+ //
// Selector: deleteCollectionProperty(string) 7b7debce
function deleteCollectionProperty(string memory key) external;
- // Throws error if key not found
+ // Get collection property.
+ //
+ // @dev Throws error if key not found.
+ //
+ // @param key Property key.
+ // @return bytes The property corresponding to the key.
//
// Selector: collectionProperty(string) cf24fd6d
function collectionProperty(string memory key)
@@ -208,69 +303,168 @@
view
returns (bytes memory);
+ // Set the sponsor of the collection.
+ //
+ // @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ //
+ // @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+ //
// Selector: setCollectionSponsor(address) 7623402e
function setCollectionSponsor(address sponsor) external;
+ // Collection sponsorship confirmation.
+ //
+ // @dev After setting the sponsor for the collection, it must be confirmed with this function.
+ //
// Selector: confirmCollectionSponsorship() 3c50e97a
function confirmCollectionSponsorship() external;
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "accountTokenOwnershipLimit",
+ // "sponsoredDataSize",
+ // "sponsoredDataRateLimit",
+ // "tokenLimit",
+ // "sponsorTransferTimeout",
+ // "sponsorApproveTimeout"
+ // @param value Value of the limit.
+ //
// Selector: setCollectionLimit(string,uint32) 6a3841db
function setCollectionLimit(string memory limit, uint32 value) external;
+ // Set limits for the collection.
+ // @dev Throws error if limit not found.
+ // @param limit Name of the limit. Valid names:
+ // "ownerCanTransfer",
+ // "ownerCanDestroy",
+ // "transfersEnabled"
+ // @param value Value of the limit.
+ //
// Selector: setCollectionLimit(string,bool) 993b7fba
function setCollectionLimit(string memory limit, bool value) external;
+ // Get contract address.
+ //
// Selector: contractAddress() f6b4dfb4
function contractAddress() external view returns (address);
+ // Add collection admin by substrate address.
+ // @param new_admin Substrate administrator address.
+ //
// Selector: addCollectionAdminSubstrate(uint256) 5730062b
- function addCollectionAdminSubstrate(uint256 newAdmin) external view;
+ function addCollectionAdminSubstrate(uint256 newAdmin) external;
+ // Remove collection admin by substrate address.
+ // @param admin Substrate administrator address.
+ //
// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
- function removeCollectionAdminSubstrate(uint256 newAdmin) external view;
+ function removeCollectionAdminSubstrate(uint256 admin) external;
+ // Add collection admin.
+ // @param new_admin Address of the added administrator.
+ //
// Selector: addCollectionAdmin(address) 92e462c7
- function addCollectionAdmin(address newAdmin) external view;
+ function addCollectionAdmin(address newAdmin) external;
+ // Remove collection admin.
+ //
+ // @param new_admin Address of the removed administrator.
+ //
// Selector: removeCollectionAdmin(address) fafd7b42
- function removeCollectionAdmin(address admin) external view;
+ function removeCollectionAdmin(address admin) external;
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+ //
// Selector: setCollectionNesting(bool) 112d4586
function setCollectionNesting(bool enable) external;
+ // Toggle accessibility of collection nesting.
+ //
+ // @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+ // @param collections Addresses of collections that will be available for nesting.
+ //
// Selector: setCollectionNesting(bool,address[]) 64872396
function setCollectionNesting(bool enable, address[] memory collections)
external;
+ // Set the collection access method.
+ // @param mode Access mode
+ // 0 for Normal
+ // 1 for AllowList
+ //
// Selector: setCollectionAccess(uint8) 41835d4c
function setCollectionAccess(uint8 mode) external;
+ // Add the user to the allowed list.
+ //
+ // @param user Address of a trusted user.
+ //
// Selector: addToCollectionAllowList(address) 67844fe6
- function addToCollectionAllowList(address user) external view;
+ function addToCollectionAllowList(address user) external;
+ // Remove the user from the allowed list.
+ //
+ // @param user Address of a removed user.
+ //
// Selector: removeFromCollectionAllowList(address) 85c51acb
- function removeFromCollectionAllowList(address user) external view;
+ function removeFromCollectionAllowList(address user) external;
+ // Switch permission for minting.
+ //
+ // @param mode Enable if "true".
+ //
// Selector: setCollectionMintMode(bool) 00018e84
function setCollectionMintMode(bool mode) external;
}
// Selector: d74d154f
interface ERC721UniqueExtensions is Dummy, ERC165 {
+ // @notice Transfer ownership of an NFT
+ // @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ // is the zero address. Throws if `tokenId` is not a valid NFT.
+ // @param to The new owner
+ // @param tokenId The NFT to transfer
+ // @param _value Not used for an NFT
+ //
// Selector: transfer(address,uint256) a9059cbb
function transfer(address to, uint256 tokenId) external;
+ // @notice Burns a specific ERC721 token.
+ // @dev Throws unless `msg.sender` is the current owner or an authorized
+ // operator for this NFT. Throws if `from` is not the current owner. Throws
+ // if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ // @param from The current owner of the NFT
+ // @param tokenId The NFT to transfer
+ // @param _value Not used for an NFT
+ //
// Selector: burnFrom(address,uint256) 79cc6790
function burnFrom(address from, uint256 tokenId) external;
+ // @notice Returns next free NFT ID.
+ //
// Selector: nextTokenId() 75794a3c
function nextTokenId() external view returns (uint256);
+ // @notice Function to mint multiple tokens.
+ // @dev `tokenIds` should be an array of consecutive numbers and first number
+ // should be obtained with `nextTokenId` method
+ // @param to The new owner
+ // @param tokenIds IDs of the minted NFTs
+ //
// Selector: mintBulk(address,uint256[]) 44a9945e
function mintBulk(address to, uint256[] memory tokenIds)
external
returns (bool);
+ // @notice Function to mint multiple tokens with the given tokenUris.
+ // @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+ // numbers and first number should be obtained with `nextTokenId` method
+ // @param to The new owner
+ // @param tokens array of pairs of token ID and token URI for minted tokens
+ //
// Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006
function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)
external
tests/src/eth/fungibleAbi.jsondiffbeforeafterboth--- a/tests/src/eth/fungibleAbi.json
+++ b/tests/src/eth/fungibleAbi.json
@@ -51,6 +51,33 @@
},
{
"inputs": [
+ { "internalType": "address", "name": "newAdmin", "type": "address" }
+ ],
+ "name": "addCollectionAdmin",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }
+ ],
+ "name": "addCollectionAdminSubstrate",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "addToCollectionAllowList",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
{ "internalType": "address", "name": "owner", "type": "address" },
{ "internalType": "address", "name": "spender", "type": "address" }
],
@@ -97,6 +124,13 @@
},
{
"inputs": [],
+ "name": "confirmCollectionSponsorship",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
"name": "contractAddress",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
@@ -118,43 +152,51 @@
},
{
"inputs": [],
- "name": "ethConfirmSponsorship",
- "outputs": [],
- "stateMutability": "nonpayable",
+ "name": "name",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
"type": "function"
},
{
"inputs": [
- { "internalType": "address", "name": "sponsor", "type": "address" }
+ { "internalType": "address", "name": "admin", "type": "address" }
],
- "name": "ethSetSponsor",
+ "name": "removeCollectionAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
- "inputs": [],
- "name": "name",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
+ "inputs": [
+ { "internalType": "uint256", "name": "admin", "type": "uint256" }
+ ],
+ "name": "removeCollectionAdminSubstrate",
+ "outputs": [],
+ "stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
+ { "internalType": "address", "name": "user", "type": "address" }
],
- "name": "setCollectionProperty",
+ "name": "removeFromCollectionAllowList",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
+ "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],
+ "name": "setCollectionAccess",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
"inputs": [
{ "internalType": "string", "name": "limit", "type": "string" },
{ "internalType": "uint32", "name": "value", "type": "uint32" }
],
- "name": "setLimit",
+ "name": "setCollectionLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
@@ -164,7 +206,54 @@
{ "internalType": "string", "name": "limit", "type": "string" },
{ "internalType": "bool", "name": "value", "type": "bool" }
],
- "name": "setLimit",
+ "name": "setCollectionLimit",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
+ "name": "setCollectionMintMode",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bool", "name": "enable", "type": "bool" },
+ {
+ "internalType": "address[]",
+ "name": "collections",
+ "type": "address[]"
+ }
+ ],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "name": "setCollectionProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "sponsor", "type": "address" }
+ ],
+ "name": "setCollectionSponsor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
tests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth--- a/tests/src/eth/nonFungibleAbi.json
+++ b/tests/src/eth/nonFungibleAbi.json
@@ -86,7 +86,7 @@
],
"name": "addCollectionAdmin",
"outputs": [],
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function"
},
{
@@ -95,7 +95,7 @@
],
"name": "addCollectionAdminSubstrate",
"outputs": [],
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function"
},
{
@@ -104,7 +104,7 @@
],
"name": "addToCollectionAllowList",
"outputs": [],
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function"
},
{
@@ -304,16 +304,16 @@
],
"name": "removeCollectionAdmin",
"outputs": [],
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
- { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }
+ { "internalType": "uint256", "name": "admin", "type": "uint256" }
],
"name": "removeCollectionAdminSubstrate",
"outputs": [],
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function"
},
{
@@ -322,7 +322,7 @@
],
"name": "removeFromCollectionAllowList",
"outputs": [],
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function"
},
{
tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -277,15 +277,16 @@
};
fungible: {
/**
- * Fungible token does not support nested
+ * Fungible token does not support nesting.
**/
FungibleDisallowsNesting: AugmentedError<ApiType>;
/**
- * Tried to set data for fungible item
+ * Tried to set data for fungible item.
**/
FungibleItemsDontHaveData: AugmentedError<ApiType>;
/**
- * Not default id passed as TokenId argument
+ * Not default id passed as TokenId argument.
+ * The default value of TokenId for Fungible collection is 0.
**/
FungibleItemsHaveNoId: AugmentedError<ApiType>;
/**
@@ -293,7 +294,7 @@
**/
NotFungibleDataUsedToMintFungibleCollectionToken: AugmentedError<ApiType>;
/**
- * Setting item properties is not allowed
+ * Setting item properties is not allowed.
**/
SettingPropertiesNotAllowed: AugmentedError<ApiType>;
/**
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -187,8 +187,17 @@
[key: string]: QueryableStorageEntry<ApiType>;
};
fungible: {
+ /**
+ * Storage for delegated assets.
+ **/
allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ /**
+ * Amount of tokens owned by an account inside a collection.
+ **/
balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ /**
+ * Total amount of fungible tokens inside a collection.
+ **/
totalSupply: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
/**
* Generic query
@@ -400,16 +409,35 @@
[key: string]: QueryableStorageEntry<ApiType>;
};
refungible: {
+ /**
+ * Amount of tokens owned by account
+ **/
accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ /**
+ * Allowance set by an owner for a spender for a token
+ **/
allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg4: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ /**
+ * Amount of token pieces owned by account
+ **/
balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Used to enumerate tokens owned by account
**/
owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;
+ /**
+ * Custom data serialized to bytes for token
+ **/
tokenData: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<PalletRefungibleItemData>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
+ tokenProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<UpDataStructsProperties>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
tokensBurnt: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+ /**
+ * Amount of tokens minted for collection
+ **/
tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+ /**
+ * Total amount of pieces for token
+ **/
totalSupply: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
/**
* Generic query
tests/src/interfaces/default/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -2461,12 +2461,14 @@
export interface UpDataStructsCreateReFungibleData extends Struct {
readonly constData: Bytes;
readonly pieces: u128;
+ readonly properties: Vec<UpDataStructsProperty>;
}
/** @name UpDataStructsCreateRefungibleExData */
export interface UpDataStructsCreateRefungibleExData extends Struct {
readonly constData: Bytes;
readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
+ readonly properties: Vec<UpDataStructsProperty>;
}
/** @name UpDataStructsNestingPermissions */
tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1502,7 +1502,8 @@
**/
UpDataStructsCreateReFungibleData: {
constData: 'Bytes',
- pieces: 'u128'
+ pieces: 'u128',
+ properties: 'Vec<UpDataStructsProperty>'
},
/**
* Lookup193: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
@@ -1527,7 +1528,8 @@
**/
UpDataStructsCreateRefungibleExData: {
constData: 'Bytes',
- users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'
+ users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',
+ properties: 'Vec<UpDataStructsProperty>'
},
/**
* Lookup204: pallet_unique_scheduler::pallet::Call<T>
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1629,6 +1629,7 @@
export interface UpDataStructsCreateReFungibleData extends Struct {
readonly constData: Bytes;
readonly pieces: u128;
+ readonly properties: Vec<UpDataStructsProperty>;
}
/** @name UpDataStructsCreateItemExData (193) */
@@ -1654,6 +1655,7 @@
export interface UpDataStructsCreateRefungibleExData extends Struct {
readonly constData: Bytes;
readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
+ readonly properties: Vec<UpDataStructsProperty>;
}
/** @name PalletUniqueSchedulerCall (204) */
tests/src/nesting/properties.test.tsdiffbeforeafterboth--- a/tests/src/nesting/properties.test.ts
+++ b/tests/src/nesting/properties.test.ts
@@ -2,6 +2,7 @@
import usingApi, {executeTransaction} from '../substrate/substrate-api';
import {
addCollectionAdminExpectSuccess,
+ CollectionMode,
createCollectionExpectSuccess,
setCollectionPermissionsExpectSuccess,
createItemExpectSuccess,
@@ -23,9 +24,9 @@
});
});
- it('Makes sure collectionById supplies required fields', async () => {
+ async function testMakeSureSuppliesRequired(mode: CollectionMode) {
await usingApi(async api => {
- const collectionId = await createCollectionExpectSuccess();
+ const collectionId = await createCollectionExpectSuccess({mode: mode});
const collectionOption = await api.rpc.unique.collectionById(collectionId);
expect(collectionOption.isSome).to.be.true;
@@ -57,7 +58,15 @@
expect(collection.tokenPropertyPermissions.toHuman()).to.be.deep.equal(propertyPermissions);
expect(collection.properties.toHuman()).to.be.deep.equal(collectionProperties);
});
+ }
+
+ it('Makes sure collectionById supplies required fields for NFT', async () => {
+ await testMakeSureSuppliesRequired({type: 'NFT'});
});
+
+ it('Makes sure collectionById supplies required fields for ReFungible', async () => {
+ await testMakeSureSuppliesRequired({type: 'ReFungible'});
+ });
});
// ---------- COLLECTION PROPERTIES
@@ -79,9 +88,10 @@
});
});
- it('Sets properties for a collection', async () => {
+
+ async function testSetsPropertiesForCollection(mode: string) {
await usingApi(async api => {
- const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: 'NFT'}));
+ const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: mode}));
const {collectionId} = getCreateCollectionResult(events);
// As owner
@@ -106,48 +116,54 @@
{key: 'black_hole', value: ''},
]);
});
+ }
+ it('Sets properties for a NFT collection', async () => {
+ await testSetsPropertiesForCollection('NFT');
});
+ it('Sets properties for a ReFungible collection', async () => {
+ await testSetsPropertiesForCollection('ReFungible');
+ });
- it('Check valid names for collection properties keys', async () => {
+ async function testCheckValidNames(mode: string) {
await usingApi(async api => {
- const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: 'NFT'}));
+ const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: mode}));
const {collectionId} = getCreateCollectionResult(events);
-
+
// alpha symbols
await expect(executeTransaction(
api,
bob,
api.tx.unique.setCollectionProperties(collectionId, [{key: 'alpha'}]),
)).to.not.be.rejected;
-
+
// numeric symbols
await expect(executeTransaction(
api,
bob,
api.tx.unique.setCollectionProperties(collectionId, [{key: '123'}]),
)).to.not.be.rejected;
-
+
// underscore symbol
await expect(executeTransaction(
api,
bob,
api.tx.unique.setCollectionProperties(collectionId, [{key: 'black_hole'}]),
)).to.not.be.rejected;
-
+
// dash symbol
await expect(executeTransaction(
api,
bob,
api.tx.unique.setCollectionProperties(collectionId, [{key: 'semi-automatic'}]),
)).to.not.be.rejected;
-
+
// underscore symbol
await expect(executeTransaction(
api,
bob,
api.tx.unique.setCollectionProperties(collectionId, [{key: 'build.rs'}]),
)).to.not.be.rejected;
-
+
const propertyKeys = ['alpha', '123', 'black_hole', 'semi-automatic', 'build.rs'];
const properties = (await api.rpc.unique.collectionProperties(collectionId, propertyKeys)).toHuman();
expect(properties).to.be.deep.equal([
@@ -158,54 +174,72 @@
{key: 'build.rs', value: ''},
]);
});
+ }
+ it('Check valid names for NFT collection properties keys', async () => {
+ await testCheckValidNames('NFT');
+ });
+ it('Check valid names for ReFungible collection properties keys', async () => {
+ await testCheckValidNames('ReFungible');
});
- it('Changes properties of a collection', async () => {
+ async function testChangesProperties(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'come bond'}, {key: 'black_hole'}]),
)).to.not.be.rejected;
-
+
// Mutate the properties
await expect(executeTransaction(
api,
alice,
api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'bonded'}, {key: 'black_hole', value: 'LIGO'}]),
)).to.not.be.rejected;
-
+
const properties = (await api.rpc.unique.collectionProperties(collection, ['electron', 'black_hole'])).toHuman();
expect(properties).to.be.deep.equal([
{key: 'electron', value: 'bonded'},
{key: 'black_hole', value: 'LIGO'},
]);
});
+ }
+ it('Changes properties of a NFT collection', async () => {
+ await testChangesProperties({type: 'NFT'});
+ });
+ it('Changes properties of a ReFungible collection', async () => {
+ await testChangesProperties({type: 'ReFungible'});
});
- it('Deletes properties of a collection', async () => {
+ async function testDeleteProperties(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'come bond'}, {key: 'black_hole', value: 'LIGO'}]),
)).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.deleteCollectionProperties(collection, ['electron']),
)).to.not.be.rejected;
-
+
const properties = (await api.rpc.unique.collectionProperties(collection, ['electron', 'black_hole'])).toHuman();
expect(properties).to.be.deep.equal([
{key: 'black_hole', value: 'LIGO'},
]);
- });
+ });
+ }
+ it('Deletes properties of a NFT collection', async () => {
+ await testDeleteProperties({type: 'NFT'});
+ });
+ it('Deletes properties of a ReFungible collection', async () => {
+ await testDeleteProperties({type: 'ReFungible'});
});
});
@@ -217,10 +251,10 @@
});
});
- it('Fails to set properties in a collection if not its onwer/administrator', async () => {
+ async function testFailsSetPropertiesIfNotOwnerOrAdmin(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
await expect(executeTransaction(
api,
bob,
@@ -230,14 +264,20 @@
const properties = (await api.query.common.collectionProperties(collection)).toJSON();
expect(properties.map).to.be.empty;
expect(properties.consumedSpace).to.equal(0);
- });
+ });
+ }
+ it('Fails to set properties in a NFT collection if not its onwer/administrator', async () => {
+ await testFailsSetPropertiesIfNotOwnerOrAdmin({type: 'NFT'});
});
+ it('Fails to set properties in a ReFungible collection if not its onwer/administrator', async () => {
+ await testFailsSetPropertiesIfNotOwnerOrAdmin({type: 'ReFungible'});
+ });
- it('Fails to set properties that exceed the limits', async () => {
+ async function testFailsSetPropertiesThatExeedLimits(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
+ const collection = await createCollectionExpectSuccess({mode: mode});
const spaceLimit = (await api.query.common.collectionProperties(collection)).toJSON().spaceLimit as number;
-
+
// Mute the general tx parsing error, too many bytes to process
{
console.error = () => {};
@@ -247,10 +287,10 @@
api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'low high '.repeat(Math.ceil(spaceLimit! / 9))}]),
)).to.be.rejected;
}
-
+
let properties = (await api.rpc.unique.collectionProperties(collection, ['electron'])).toJSON();
expect(properties).to.be.empty;
-
+
await expect(executeTransaction(
api,
alice,
@@ -259,16 +299,22 @@
{key: 'black_hole', value: '0'.repeat(Math.ceil(spaceLimit! / 2))},
]),
)).to.be.rejectedWith(/common\.NoSpaceForProperty/);
-
+
properties = (await api.rpc.unique.collectionProperties(collection, ['electron', 'black hole'])).toJSON();
expect(properties).to.be.empty;
- });
+ });
+ }
+ it('Fails to set properties that exceed the limits (NFT)', async () => {
+ await testFailsSetPropertiesThatExeedLimits({type: 'NFT'});
+ });
+ it('Fails to set properties that exceed the limits (ReFungible)', async () => {
+ await testFailsSetPropertiesThatExeedLimits({type: 'ReFungible'});
});
- it('Fails to set more properties than it is allowed', async () => {
+ async function testFailsSetMorePropertiesThanAllowed(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
const propertiesToBeSet = [];
for (let i = 0; i < 65; i++) {
propertiesToBeSet.push({
@@ -276,29 +322,35 @@
value: Math.random() > 0.5 ? 'high' : 'low',
});
}
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setCollectionProperties(collection, propertiesToBeSet),
)).to.be.rejectedWith(/common\.PropertyLimitReached/);
-
+
const properties = (await api.query.common.collectionProperties(collection)).toJSON();
expect(properties.map).to.be.empty;
expect(properties.consumedSpace).to.equal(0);
- });
+ });
+ }
+ it('Fails to set more properties than it is allowed (NFT)', async () => {
+ await testFailsSetMorePropertiesThanAllowed({type: 'NFT'});
});
-
- it('Fails to set properties with invalid names', async () => {
+ it('Fails to set more properties than it is allowed (ReFungible)', async () => {
+ await testFailsSetMorePropertiesThanAllowed({type: 'ReFungible'});
+ });
+
+ async function testFailsSetPropertiesWithInvalidNames(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
const invalidProperties = [
[{key: 'electron', value: 'negative'}, {key: 'string theory', value: 'understandable'}],
[{key: 'Mr/Sandman', value: 'Bring me a gene'}],
[{key: 'déjà vu', value: 'hmm...'}],
];
-
+
for (let i = 0; i < invalidProperties.length; i++) {
await expect(executeTransaction(
api,
@@ -306,13 +358,13 @@
api.tx.unique.setCollectionProperties(collection, invalidProperties[i]),
), `on rejecting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);
}
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setCollectionProperties(collection, [{key: '', value: 'nothing must not exist'}]),
), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);
-
+
await expect(executeTransaction(
api,
alice,
@@ -320,14 +372,14 @@
{key: 'CRISPR-Cas9', value: 'rewriting nature!'},
]),
), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;
-
+
const keys = invalidProperties.flatMap(propertySet => propertySet.map(property => property.key)).concat('CRISPR-Cas9').concat('');
-
+
const properties = (await api.rpc.unique.collectionProperties(collection, keys)).toHuman();
expect(properties).to.be.deep.equal([
{key: 'CRISPR-Cas9', value: 'rewriting nature!'},
]);
-
+
for (let i = 0; i < invalidProperties.length; i++) {
await expect(executeTransaction(
api,
@@ -336,7 +388,13 @@
), `on trying to delete the non-existent badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);
}
});
+ }
+ it('Fails to set properties with invalid names (NFT)', async () => {
+ await testFailsSetPropertiesWithInvalidNames({type: 'NFT'});
});
+ it('Fails to set properties with invalid names (ReFungible)', async () => {
+ await testFailsSetPropertiesWithInvalidNames({type: 'ReFungible'});
+ });
});
// ---------- ACCESS RIGHTS
@@ -357,54 +415,66 @@
});
});
- it('Sets access rights to properties of a collection', async () => {
+ async function testSetsAccessRightsToProperties(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]),
)).to.not.be.rejected;
-
+
await addCollectionAdminExpectSuccess(alice, collection, bob.address);
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]),
)).to.not.be.rejected;
-
+
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toHuman();
expect(propertyRights).to.be.deep.equal([
{key: 'skullduggery', permission: {'mutable': true, 'collectionAdmin': false, 'tokenOwner': false}},
{key: 'mindgame', permission: {'mutable': false, 'collectionAdmin': true, 'tokenOwner': false}},
]);
- });
+ });
+ }
+ it('Sets access rights to properties of a collection (NFT)', async () => {
+ await testSetsAccessRightsToProperties({type: 'NFT'});
});
+ it('Sets access rights to properties of a collection (ReFungible)', async () => {
+ await testSetsAccessRightsToProperties({type: 'ReFungible'});
+ });
- it('Changes access rights to properties of a collection', async () => {
+ async function testChangesAccessRightsToProperty(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]),
)).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
)).to.not.be.rejected;
-
+
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
expect(propertyRights).to.be.deep.equal([
{key: 'skullduggery', permission: {'mutable': false, 'collectionAdmin': false, 'tokenOwner': true}},
]);
});
+ }
+ it('Changes access rights to properties of a NFT collection', async () => {
+ await testChangesAccessRightsToProperty({type: 'NFT'});
});
+ it('Changes access rights to properties of a ReFungible collection', async () => {
+ await testChangesAccessRightsToProperty({type: 'ReFungible'});
+ });
});
describe('Negative Integration Test: Access Rights to Token Properties', () => {
@@ -415,25 +485,31 @@
});
});
- it('Prevents from setting access rights to properties of a collection if not an onwer/admin', async () => {
+ async function testPreventsFromSettingAccessRightsNotAdminOrOwner(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
await expect(executeTransaction(
api,
bob,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]),
)).to.be.rejectedWith(/common\.NoPermission/);
-
+
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();
expect(propertyRights).to.be.empty;
});
+ }
+ it('Prevents from setting access rights to properties of a NFT collection if not an onwer/admin', async () => {
+ await testPreventsFromSettingAccessRightsNotAdminOrOwner({type: 'NFT'});
});
+ it('Prevents from setting access rights to properties of a ReFungible collection if not an onwer/admin', async () => {
+ await testPreventsFromSettingAccessRightsNotAdminOrOwner({type: 'ReFungible'});
+ });
- it('Prevents from adding too many possible properties', async () => {
+ async function testPreventFromAddingTooManyPossibleProperties(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
const constitution = [];
for (let i = 0; i < 65; i++) {
constitution.push({
@@ -441,51 +517,63 @@
permission: Math.random() > 0.5 ? {mutable: true, collectionAdmin: true, tokenOwner: true} : {},
});
}
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, constitution),
)).to.be.rejectedWith(/common\.PropertyLimitReached/);
-
+
const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();
expect(propertyRights).to.be.empty;
- });
+ });
+ }
+ it('Prevents from adding too many possible properties (NFT)', async () => {
+ await testPreventFromAddingTooManyPossibleProperties({type: 'NFT'});
});
+ it('Prevents from adding too many possible properties (ReFungible)', async () => {
+ await testPreventFromAddingTooManyPossibleProperties({type: 'ReFungible'});
+ });
- it('Prevents access rights to be modified if constant', async () => {
+ async function testPreventAccessRightsModifiedIfConstant(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
)).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]),
)).to.be.rejectedWith(/common\.NoPermission/);
-
+
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
expect(propertyRights).to.deep.equal([
{key: 'skullduggery', permission: {'mutable': false, 'collectionAdmin': false, 'tokenOwner': true}},
]);
- });
+ });
+ }
+ it('Prevents access rights to be modified if constant (NFT)', async () => {
+ await testPreventAccessRightsModifiedIfConstant({type: 'NFT'});
+ });
+ it('Prevents access rights to be modified if constant (ReFungible)', async () => {
+ await testPreventAccessRightsModifiedIfConstant({type: 'ReFungible'});
});
- it('Prevents adding properties with invalid names', async () => {
+ async function testPreventsAddingPropertiesWithInvalidNames(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
-
+ const collection = await createCollectionExpectSuccess({mode: mode});
+
const invalidProperties = [
[{key: 'skullduggery', permission: {tokenOwner: true}}, {key: 'im possible', permission: {collectionAdmin: true}}],
[{key: 'G#4', permission: {tokenOwner: true}}],
[{key: 'HÆMILTON', permission: {mutable: false, collectionAdmin: true, tokenOwner: true}}],
];
-
+
for (let i = 0; i < invalidProperties.length; i++) {
await expect(executeTransaction(
api,
@@ -493,13 +581,13 @@
api.tx.unique.setTokenPropertyPermissions(collection, invalidProperties[i]),
), `on setting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);
}
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: '', permission: {}}]),
), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);
-
+
const correctKey = '--0x03116e387820CA05'; // PolkadotJS would parse this as an already encoded hex-string
await expect(executeTransaction(
api,
@@ -508,30 +596,33 @@
{key: correctKey, permission: {collectionAdmin: true}},
]),
), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;
-
+
const keys = invalidProperties.flatMap(propertySet => propertySet.map(property => property.key)).concat(correctKey).concat('');
-
+
const propertyRights = (await api.rpc.unique.propertyPermissions(collection, keys)).toHuman();
expect(propertyRights).to.be.deep.equal([
{key: correctKey, permission: {mutable: false, collectionAdmin: true, tokenOwner: false}},
]);
});
+ }
+ it('Prevents adding properties with invalid names (NFT)', async () => {
+ await testPreventsAddingPropertiesWithInvalidNames({type: 'NFT'});
+ });
+ it('Prevents adding properties with invalid names (ReFungible)', async () => {
+ await testPreventsAddingPropertiesWithInvalidNames({type: 'ReFungible'});
});
});
// ---------- TOKEN PROPERTIES
describe('Integration Test: Token Properties', () => {
- let collection: number;
- let token: number;
- let nestedToken: number;
let permissions: {permission: any, signers: IKeyringPair[]}[];
before(async () => {
await usingApi(async (api, privateKeyWrapper) => {
- alice = privateKeyWrapper('//Alice');
- bob = privateKeyWrapper('//Bob');
- charlie = privateKeyWrapper('//Charlie');
+ alice = privateKeyWrapper('//Alice'); // collection owner
+ bob = privateKeyWrapper('//Bob'); // collection admin
+ charlie = privateKeyWrapper('//Charlie'); // token owner
permissions = [
{permission: {mutable: true, collectionAdmin: true}, signers: [alice, bob]},
@@ -543,36 +634,34 @@
];
});
});
-
- beforeEach(async () => {
- await usingApi(async () => {
- collection = await createCollectionExpectSuccess();
- await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});
-
- token = await createItemExpectSuccess(alice, collection, 'NFT');
- nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, token)});
-
- await addCollectionAdminExpectSuccess(alice, collection, bob.address);
- await transferExpectSuccess(collection, token, alice, charlie);
- });
- });
- it('Reads yet empty properties of a token', async () => {
+ async function testReadsYetEmptyProperties(mode: CollectionMode) {
await usingApi(async api => {
- const collection = await createCollectionExpectSuccess();
- const token = await createItemExpectSuccess(alice, collection, 'NFT');
+ const collection = await createCollectionExpectSuccess({mode: mode});
+ const token = await createItemExpectSuccess(alice, collection, mode.type);
const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
expect(properties.map).to.be.empty;
expect(properties.consumedSpace).to.be.equal(0);
-
+
const tokenData = (await api.rpc.unique.tokenData(collection, token, ['anything'])).toJSON().properties;
expect(tokenData).to.be.empty;
});
+ }
+ it('Reads yet empty properties of a token (NFT)', async () => {
+ await testReadsYetEmptyProperties({type: 'NFT'});
});
+ it('Reads yet empty properties of a token (ReFungible)', async () => {
+ await testReadsYetEmptyProperties({type: 'ReFungible'});
+ });
- it('Assigns properties to a token according to permissions', async () => {
+ async function testAssignPropertiesAccordingToPermissions(mode: CollectionMode, pieces: number) {
await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: mode});
+ const token = await createItemExpectSuccess(alice, collection, mode.type);
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ await transferExpectSuccess(collection, token, alice, charlie, pieces, mode.type);
+
const propertyKeys: string[] = [];
let i = 0;
for (const permission of permissions) {
@@ -603,10 +692,21 @@
expect(tokensData[i].value).to.be.equal('Serotonin increase');
}
});
+ }
+ it('Assigns properties to a token according to permissions (NFT)', async () => {
+ await testAssignPropertiesAccordingToPermissions({type: 'NFT'}, 1);
+ });
+ it('Assigns properties to a token according to permissions (ReFungible)', async () => {
+ await testAssignPropertiesAccordingToPermissions({type: 'ReFungible'}, 100);
});
- it('Changes properties of a token according to permissions', async () => {
+ async function testChangesPropertiesAccordingPermission(mode: CollectionMode, pieces: number) {
await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: mode});
+ const token = await createItemExpectSuccess(alice, collection, mode.type);
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ await transferExpectSuccess(collection, token, alice, charlie, pieces, mode.type);
+
const propertyKeys: string[] = [];
let i = 0;
for (const permission of permissions) {
@@ -615,29 +715,29 @@
for (const signer of permission.signers) {
const key = i + '_' + signer.address;
propertyKeys.push(key);
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
signer,
api.tx.unique.setTokenProperties(collection, token, [{key: key, value: 'Serotonin increase'}]),
), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
signer,
api.tx.unique.setTokenProperties(collection, token, [{key: key, value: 'Serotonin stable'}]),
), `on changing property ${i} by ${signer.address}`).to.not.be.rejected;
}
-
+
i++;
}
-
+
const properties = (await api.rpc.unique.tokenProperties(collection, token, propertyKeys)).toHuman() as any[];
const tokensData = (await api.rpc.unique.tokenData(collection, token, propertyKeys)).toHuman().properties as any[];
for (let i = 0; i < properties.length; i++) {
@@ -645,32 +745,43 @@
expect(tokensData[i].value).to.be.equal('Serotonin stable');
}
});
+ }
+ it('Changes properties of a token according to permissions (NFT)', async () => {
+ await testChangesPropertiesAccordingPermission({type: 'NFT'}, 1);
});
+ it('Changes properties of a token according to permissions (ReFungible)', async () => {
+ await testChangesPropertiesAccordingPermission({type: 'ReFungible'}, 100);
+ });
- it('Deletes properties of a token according to permissions', async () => {
+ async function testDeletePropertiesAccordingPermission(mode: CollectionMode, pieces: number) {
await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: mode});
+ const token = await createItemExpectSuccess(alice, collection, mode.type);
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ await transferExpectSuccess(collection, token, alice, charlie, pieces, mode.type);
+
const propertyKeys: string[] = [];
let i = 0;
-
+
for (const permission of permissions) {
if (!permission.permission.mutable) continue;
for (const signer of permission.signers) {
const key = i + '_' + signer.address;
propertyKeys.push(key);
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
signer,
api.tx.unique.setTokenProperties(collection, token, [{key: key, value: 'Serotonin increase'}]),
), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
signer,
@@ -680,17 +791,30 @@
i++;
}
-
+
const properties = (await api.rpc.unique.tokenProperties(collection, token, propertyKeys)).toJSON() as any[];
expect(properties).to.be.empty;
const tokensData = (await api.rpc.unique.tokenData(collection, token, propertyKeys)).toJSON().properties as any[];
expect(tokensData).to.be.empty;
expect((await api.query.nonfungible.tokenProperties(collection, token)).toJSON().consumedSpace).to.be.equal(0);
});
+ }
+ it('Deletes properties of a token according to permissions (NFT)', async () => {
+ await testDeletePropertiesAccordingPermission({type: 'NFT'}, 1);
});
+ it('Deletes properties of a token according to permissions (ReFungible)', async () => {
+ await testDeletePropertiesAccordingPermission({type: 'ReFungible'}, 100);
+ });
it('Assigns properties to a nested token according to permissions', async () => {
await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});
+ const token = await createItemExpectSuccess(alice, collection, 'NFT');
+ const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, token)});
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ await transferExpectSuccess(collection, token, alice, charlie);
+
const propertyKeys: string[] = [];
let i = 0;
for (const permission of permissions) {
@@ -725,6 +849,13 @@
it('Changes properties of a nested token according to permissions', async () => {
await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});
+ const token = await createItemExpectSuccess(alice, collection, 'NFT');
+ const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, token)});
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ await transferExpectSuccess(collection, token, alice, charlie);
+
const propertyKeys: string[] = [];
let i = 0;
for (const permission of permissions) {
@@ -767,6 +898,13 @@
it('Deletes properties of a nested token according to permissions', async () => {
await usingApi(async api => {
+ const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});
+ const token = await createItemExpectSuccess(alice, collection, 'NFT');
+ const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, token)});
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+ await transferExpectSuccess(collection, token, alice, charlie);
+
const propertyKeys: string[] = [];
let i = 0;
@@ -832,11 +970,11 @@
});
});
- beforeEach(async () => {
- collection = await createCollectionExpectSuccess();
- token = await createItemExpectSuccess(alice, collection, 'NFT');
+ async function prepare(mode: CollectionMode, pieces: number) {
+ collection = await createCollectionExpectSuccess({mode: mode});
+ token = await createItemExpectSuccess(alice, collection, mode.type);
await addCollectionAdminExpectSuccess(alice, collection, bob.address);
- await transferExpectSuccess(collection, token, alice, charlie);
+ await transferExpectSuccess(collection, token, alice, charlie, pieces, mode.type);
await usingApi(async api => {
let i = 0;
@@ -848,71 +986,89 @@
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]),
), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
signer,
api.tx.unique.setTokenProperties(collection, token, [{key: `${i}`, value: 'Serotonin increase'}]),
), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;
-
+
i++;
}
-
+
originalSpace = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON().consumedSpace as number;
- });
- });
+ });
+ }
- it('Forbids changing/deleting properties of a token if the user is outside of permissions', async () => {
+ async function testForbidsChangingDeletingPropertiesUserOutsideOfPermissions(mode: CollectionMode, pieces: number) {
+ await prepare(mode, pieces);
+
await usingApi(async api => {
let i = -1;
for (const forbiddance of constitution) {
i++;
if (!forbiddance.permission.mutable) continue;
-
+
await expect(executeTransaction(
api,
forbiddance.sinner,
api.tx.unique.setTokenProperties(collection, token, [{key: `${i}`, value: 'Serotonin down'}]),
), `on failing to change property ${i} by ${forbiddance.sinner.address}`).to.be.rejectedWith(/common\.NoPermission/);
-
+
await expect(executeTransaction(
api,
forbiddance.sinner,
api.tx.unique.deleteTokenProperties(collection, token, [`${i}`]),
), `on failing to delete property ${i} by ${forbiddance.sinner.address}`).to.be.rejectedWith(/common\.NoPermission/);
}
-
+
const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
expect(properties.consumedSpace).to.be.equal(originalSpace);
});
+ }
+ it('Forbids changing/deleting properties of a token if the user is outside of permissions (NFT)', async () => {
+ await testForbidsChangingDeletingPropertiesUserOutsideOfPermissions({type: 'NFT'}, 1);
});
+ it('Forbids changing/deleting properties of a token if the user is outside of permissions (ReFungible)', async () => {
+ await testForbidsChangingDeletingPropertiesUserOutsideOfPermissions({type: 'ReFungible'}, 100);
+ });
- it('Forbids changing/deleting properties of a token if the property is permanent (immutable)', async () => {
+ async function testForbidsChangingDeletingPropertiesIfPropertyImmutable(mode: CollectionMode, pieces: number) {
+ await prepare(mode, pieces);
+
await usingApi(async api => {
let i = -1;
for (const permission of constitution) {
i++;
if (permission.permission.mutable) continue;
-
+
await expect(executeTransaction(
api,
permission.signers[0],
api.tx.unique.setTokenProperties(collection, token, [{key: `${i}`, value: 'Serotonin down'}]),
), `on failing to change property ${i} by ${permission.signers[0].address}`).to.be.rejectedWith(/common\.NoPermission/);
-
+
await expect(executeTransaction(
api,
permission.signers[0],
api.tx.unique.deleteTokenProperties(collection, token, [i.toString()]),
), `on failing to delete property ${i} by ${permission.signers[0].address}`).to.be.rejectedWith(/common\.NoPermission/);
}
-
+
const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
expect(properties.consumedSpace).to.be.equal(originalSpace);
- });
+ });
+ }
+ it('Forbids changing/deleting properties of a token if the property is permanent (immutable) (NFT)', async () => {
+ await testForbidsChangingDeletingPropertiesIfPropertyImmutable({type: 'NFT'}, 1);
});
+ it('Forbids changing/deleting properties of a token if the property is permanent (immutable) (ReFungible)', async () => {
+ await testForbidsChangingDeletingPropertiesIfPropertyImmutable({type: 'ReFungible'}, 100);
+ });
+
+ async function testForbidsAddingPropertiesIfPropertyNotDeclared(mode: CollectionMode, pieces: number) {
+ await prepare(mode, pieces);
- it('Forbids adding properties to a token if the property is not declared / forbidden with the \'None\' permission', async () => {
await usingApi(async api => {
await expect(executeTransaction(
api,
@@ -925,20 +1081,28 @@
alice,
api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]),
), 'on setting a new non-permitted property').to.not.be.rejected;
-
+
await expect(executeTransaction(
api,
alice,
api.tx.unique.setTokenProperties(collection, token, [{key: 'now-existent', value: 'I exist!'}]),
), 'on failing to add a property forbidden by the \'None\' permission').to.be.rejectedWith(/common\.NoPermission/);
-
+
expect((await api.rpc.unique.tokenProperties(collection, token, ['non-existent', 'now-existent'])).toJSON()).to.be.empty;
const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
expect(properties.consumedSpace).to.be.equal(originalSpace);
});
+ }
+ it('Forbids adding properties to a token if the property is not declared / forbidden with the \'None\' permission (NFT)', async () => {
+ await testForbidsAddingPropertiesIfPropertyNotDeclared({type: 'NFT'}, 1);
+ });
+ it('Forbids adding properties to a token if the property is not declared / forbidden with the \'None\' permission (ReFungible)', async () => {
+ await testForbidsAddingPropertiesIfPropertyNotDeclared({type: 'ReFungible'}, 100);
});
- it('Forbids adding too many properties to a token', async () => {
+ async function testForbidsAddingTooManyProperties(mode: CollectionMode, pieces: number) {
+ await prepare(mode, pieces);
+
await usingApi(async api => {
await expect(executeTransaction(
api,
@@ -948,7 +1112,7 @@
{key: 'young_years', permission: {collectionAdmin: true, tokenOwner: true}},
]),
), 'on setting a new non-permitted property').to.not.be.rejected;
-
+
// Mute the general tx parsing error
{
console.error = () => {};
@@ -958,7 +1122,7 @@
api.tx.unique.setCollectionProperties(collection, [{key: 'a_holy_book', value: 'word '.repeat(6554)}]),
)).to.be.rejected;
}
-
+
await expect(executeTransaction(
api,
alice,
@@ -967,10 +1131,107 @@
{key: 'young_years', value: 'neverending'.repeat(1490)},
]),
)).to.be.rejectedWith(/common\.NoSpaceForProperty/);
-
+
expect((await api.rpc.unique.tokenProperties(collection, token, ['a_holy_book', 'young_years'])).toJSON()).to.be.empty;
const propertiesMap = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
expect(propertiesMap.consumedSpace).to.be.equal(originalSpace);
});
+ }
+ it('Forbids adding too many properties to a token (NFT)', async () => {
+ await testForbidsAddingTooManyProperties({type: 'NFT'}, 1);
+ });
+ it('Forbids adding too many properties to a token (ReFungible)', async () => {
+ await testForbidsAddingTooManyProperties({type: 'ReFungible'}, 100);
+ });
+});
+
+describe('ReFungible token properties permissions tests', () => {
+ let collection: number;
+ let token: number;
+
+ before(async () => {
+ await usingApi(async (api, privateKeyWrapper) => {
+ alice = privateKeyWrapper('//Alice');
+ bob = privateKeyWrapper('//Bob');
+ charlie = privateKeyWrapper('//Charlie');
+ });
+ });
+
+ beforeEach(async () => {
+ await usingApi(async api => {
+ collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+ token = await createItemExpectSuccess(alice, collection, 'ReFungible');
+ await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'key', permission: {mutable:true, tokenOwner: true}}]),
+ )).to.not.be.rejected;
+ });
+ });
+
+ it('Forbids add token property with tokenOwher==true but signer have\'t all pieces', async () => {
+ await usingApi(async api => {
+ await transferExpectSuccess(collection, token, alice, charlie, 33, 'ReFungible');
+
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.setTokenProperties(collection, token, [
+ {key: 'key', value: 'word'},
+ ]),
+ )).to.be.rejectedWith(/common\.NoPermission/);
+ });
+ });
+
+ it('Forbids mutate token property with tokenOwher==true but signer have\'t all pieces', async () => {
+ await usingApi(async api => {
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'key', permission: {mutable:true, tokenOwner: true}}]),
+ )).to.not.be.rejected;
+
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.setTokenProperties(collection, token, [
+ {key: 'key', value: 'word'},
+ ]),
+ )).to.be.not.rejected;
+
+ await transferExpectSuccess(collection, token, alice, charlie, 33, 'ReFungible');
+
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.setTokenProperties(collection, token, [
+ {key: 'key', value: 'bad word'},
+ ]),
+ )).to.be.rejectedWith(/common\.NoPermission/);
+ });
+ });
+
+ it('Forbids delete token property with tokenOwher==true but signer have\'t all pieces', async () => {
+ await usingApi(async api => {
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.setTokenProperties(collection, token, [
+ {key: 'key', value: 'word'},
+ ]),
+ )).to.be.not.rejected;
+
+ await transferExpectSuccess(collection, token, alice, charlie, 33, 'ReFungible');
+
+ await expect(executeTransaction(
+ api,
+ alice,
+ api.tx.unique.deleteTokenProperties(collection, token, [
+ 'key',
+ ]),
+ )).to.be.rejectedWith(/common\.NoPermission/);
+ });
});
});
tests/src/refungible.test.tsdiffbeforeafterboth--- a/tests/src/refungible.test.ts
+++ b/tests/src/refungible.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {default as usingApi} from './substrate/substrate-api';
+import {default as usingApi, executeTransaction} from './substrate/substrate-api';
import {IKeyringPair} from '@polkadot/types/types';
import {
createCollectionExpectSuccess,
@@ -30,6 +30,8 @@
transfer,
burnItem,
repartitionRFT,
+ createCollectionWithPropsExpectSuccess,
+ getDetailedCollectionInfo,
} from './util/helpers';
import chai from 'chai';
@@ -187,3 +189,26 @@
});
});
});
+
+describe('Test Refungible properties:', () => {
+ before(async () => {
+ await usingApi(async (api, privateKeyWrapper) => {
+ alice = privateKeyWrapper('//Alice');
+ bob = privateKeyWrapper('//Bob');
+ });
+ });
+
+ it('Сreate new collection with properties', async () => {
+ await usingApi(async api => {
+ const properties = [{key: 'key1', value: 'val1'}];
+ const propertyPermissions = [{key: 'key1', permission: {tokenOwner: true, mutable: false, collectionAdmin: true}}];
+ const collectionId = await createCollectionWithPropsExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'ReFungible'},
+ properties: properties,
+ propPerm: propertyPermissions,
+ });
+ const collection = (await getDetailedCollectionInfo(api, collectionId))!;
+ expect(collection.properties.toHuman()).to.be.deep.equal(properties);
+ expect(collection.tokenPropertyPermissions.toHuman()).to.be.deep.equal(propertyPermissions);
+ });
+ });
+});
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -284,7 +284,7 @@
type: 'ReFungible';
}
-type CollectionMode = Nft | Fungible | ReFungible;
+export type CollectionMode = Nft | Fungible | ReFungible;
export type Property = {
key: any,
@@ -1414,7 +1414,7 @@
tx = api.tx.unique.createItem(collectionId, to, createData as any);
}
- const events = await submitTransactionAsync(sender, tx);
+ const events = await executeTransaction(api, sender, tx);
const result = getCreateItemResult(events);
const itemCountAfter = await getLastTokenId(api, collectionId);
tests/src/xcmTransfer.test.tsdiffbeforeafterboth--- a/tests/src/xcmTransfer.test.ts
+++ b/tests/src/xcmTransfer.test.ts
@@ -31,6 +31,7 @@
const UNIQUE_CHAIN = 1000;
const KARURA_CHAIN = 2000;
const KARURA_PORT = '9946';
+const TRANSFER_AMOUNT = 2000000000000000000000000n;
describe('Integration test: Exchanging QTZ with Karura', () => {
let alice: IKeyringPair;
@@ -113,7 +114,7 @@
},
},
fun: {
- Fungible: 5000000000,
+ Fungible: TRANSFER_AMOUNT,
},
},
],
@@ -148,19 +149,17 @@
await usingApi(async (api) => {
const destination = {
- V0: {
- X3: [
- 'Parent',
- {
- Parachain: UNIQUE_CHAIN,
- },
- {
- AccountId32: {
+ V1: {
+ parents: 1,
+ interior: {
+ X2: [
+ {Parachain: UNIQUE_CHAIN},
+ {AccountId32: {
network: 'Any',
id: alice.addressRaw,
- },
- },
- ],
+ }},
+ ],
+ },
},
};
@@ -168,7 +167,7 @@
ForeignAsset: 0,
};
- const amount = 5000000000;
+ const amount = TRANSFER_AMOUNT;
const destWeight = 50000000;
const tx = api.tx.xTokens.transfer(id, amount, destination, destWeight);