difftreelog
Merge commit '1f47f964a0fc5eaa160d9f6fc463551ad4dbd74e' into feature/NFTPAR-196_sponsor_setVariableMetadata
in: master
19 files changed
.gitignorediffbeforeafterboth--- a/.gitignore
+++ b/.gitignore
@@ -10,4 +10,6 @@
einstein_key_file
*store_key*.json
-/.idea/
\ No newline at end of file
+/.idea/
+
+tests/.vscode
\ No newline at end of file
Cargo.lockdiffbeforeafterboth706 packageslockfile v1
Might be heavy and slow!
addr2line
0.14.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7depends onused byadler
0.2.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7eused byaead
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331depends onaes
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd2bc6d3f370b5666245ff421e231cba4353df936e26986d2918e61a8fd6aef6depends onused byaes-gcm
0.7.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0301c9e9c443494d970a07885e8cf3e587bae8356a1d5abd0999068413f7205fused byaes-soft
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum63dd91889c49327ad7ef3b500fd1109dbd3c509a03db0d4a9ce413b79f575cb6used byaesni
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a6fe808308bb07d393e2ea47780043ec47683fcf19cf5efc8ca51c50cc8c68adepends onused byahash
0.4.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16eused byaho-corasick
0.7.15crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5depends onused byansi_term
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979bdepends onused byansi_term
0.12.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.38crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1approx
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3depends onused byarrayref
0.3.6crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544arrayvec
0.4.12crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9depends onused byarrayvec
0.5.2crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068basn1_der
0.6.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fce6b6a0ffdafebd82c87e79e3f40e8d2c523e5fea5566ff6b90509bf98d638depends onused byasn1_der_derive
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502depends onused byasync-channel
1.5.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9async-executor
1.4.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146depends onused byasync-global-executor
2.0.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6depends onused byasync-io
1.3.1crates.io↘ 12↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fddepends onasync-lock
2.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1996609732bde4a9988bc42125f55f2af5f3c36370e27c778d5191a4a1b63bfbdepends onused byasync-mutex
1.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156edepends onused byasync-process
1.0.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef37b86e2fa961bae5a4d212708ea0154f904ce31d1a4a7f47e1bbc33a0c040bdepends onused byasync-std
1.9.0crates.io↘ 20↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341depends on- async-channel
1.5.1 - async-global-executor
2.0.2 - async-io
1.3.1 - async-lock
2.3.0 - async-process
1.0.2 - crossbeam-utils
0.8.1 - futures-channel
0.3.12 - futures-core
0.3.12 - futures-io
0.3.12 - futures-lite
1.11.3 - gloo-timers
0.2.1 - kv-log-macro
1.0.7 - log
0.4.14 - memchr
2.3.4 - num_cpus
1.13.0 - once_cell
1.5.2 - pin-project-lite
0.2.4 - pin-utils
0.1.0 - slab
0.4.2 - wasm-bindgen-futures
0.4.20
- async-channel
async-task
4.0.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0async-trait
0.1.42crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13ddepends onasynchronous-codec
0.5.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6asynchronous-codec
0.6.0crates.io↘ 5↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690atomic
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281depends onused byatomic-waker
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2aused byatty
0.2.14crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onautocfg
1.0.1crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464abacktrace
0.3.56crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bcbase58
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83used bybase64
0.12.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ffbase64
0.13.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fdbincode
1.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896ddepends onused bybindgen
0.54.0crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66c0bb6167449588ff70803f4127f0684f9063097eca5016f37eb52b92c2cf36depends onused bybitflags
1.2.1crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693bitvec
0.17.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5cdepends onused byblake2
0.9.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10a5720225ef5daecf08657f23791354e1685a8c91a4c60c7f3d3b2892f978f4used byblake2-rfc
0.2.18crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400depends onblake2b_simd
0.5.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587used 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-cipher
0.8.0crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf337a3e6da609650eb74e02bc9fac7b735049f7623ab12f2e4c719316fcc7e80depends onblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused byblock-padding
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2caeused byblocking
1.0.2crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9depends onbs58
0.4.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
0.2.15crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3ddepends onused bybumpalo
3.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum099e596ef14349721d9016f6b80dd3419ea1bf289ab9b44df8e4dfd3a005d5d9used bybyte-slice-cast
0.3.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3used bybyte-tools
0.3.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7byteorder
1.4.2crates.io↘ 0↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306bused by- aes-soft
0.5.0 - bincode
1.3.1 - block-buffer
0.7.3 - bytes
0.4.12 - cranelift-codegen
0.66.0 - cuckoofilter
0.5.0 - curve25519-dalek
2.1.2 - curve25519-dalek
3.0.2 - dns-parser
0.8.0 - fixed-hash
0.7.0 - h2
0.1.26 - libp2p-gossipsub
0.27.0 - merlin
2.0.1 - parity-multiaddr
0.11.1 - parity-ws
0.10.0 - pbkdf2
0.3.0 - pwasm-utils
0.14.0 - pwasm-utils
0.16.0 - regex-automata
0.1.9 - sp-core
2.0.1 - uint
0.9.0
- aes-soft
bytes
0.4.12crates.io↘ 3↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81cdepends onbytes
0.5.6crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38bytes
1.0.1crates.io↘ 0↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040used by- asynchronous-codec
0.5.0 - asynchronous-codec
0.6.0 - http
0.2.3 - libp2p
0.34.0 - libp2p-gossipsub
0.27.0 - libp2p-kad
0.28.1 - libp2p-mplex
0.27.1 - libp2p-noise
0.29.0 - libp2p-plaintext
0.27.1 - libp2p-request-response
0.9.1 - multistream-select
0.10.1 - prost
0.7.0 - prost-build
0.7.0 - prost-types
0.7.0 - sc-network
0.8.1 - unsigned-varint
0.6.0 - unsigned-varint
0.7.0
- asynchronous-codec
cache-padded
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dbaused bycc
1.0.66crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48depends oncexpr
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27depends onused bycfg-if
0.1.10crates.io↘ 0↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822cfg-if
1.0.0crates.io↘ 0↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- async-process
1.0.2 - backtrace
0.3.56 - crc32fast
1.2.1 - crossbeam-channel
0.5.0 - crossbeam-deque
0.8.0 - crossbeam-epoch
0.9.1 - crossbeam-utils
0.8.1 - flate2
1.0.20 - getrandom
0.1.16 - getrandom
0.2.2 - instant
0.1.9 - log
0.4.14 - parity-util-mem
0.8.0 - parking_lot_core
0.8.3 - sha-1
0.9.3 - sha2
0.9.3 - socket2
0.3.19 - tempfile
3.2.0 - tracing
0.1.23 - wasm-bindgen
0.2.70 - wasm-bindgen-futures
0.4.20
- async-process
chacha20
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum244fbce0d47e97e8ef2f63b81d5e05882cb518c68531eb33194990d7b7e85845depends onused bychacha20poly1305
0.6.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bf18d374d66df0c05cdddd528a7db98f78c28e2519b120855c4f84c5027b1f5used bychrono
0.4.19crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73cipher
0.2.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801depends onused byclang-sys
0.29.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10adepends onused byclap
2.33.3crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002depends onused bycloudabi
0.0.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4fdepends onconcurrent-queue
1.2.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3depends onconst_fn
0.4.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6used byconstant_time_eq
0.1.5crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbccore-foundation
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171depends onused bycore-foundation-sys
0.7.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8accpuid-bool
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634used bycpuid-bool
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffbaused bycranelift-bforest
0.66.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8dcc286b052ee24a1e5a222e7c1125e6010ad35b0f248709b9b3737a8fedcfdfdepends onused bycranelift-codegen
0.66.0crates.io↘ 12↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d9badfe36176cb653506091693bc2bb1970c9bddfcd6ec7fac404f7eaec6f38depends oncranelift-codegen-meta
0.66.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c3f460031861e4f4ad510be62b2ae50bba6cc886b598a36f9c0a970feab9598used bycranelift-entity
0.66.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd97cdc58972ea065d107872cfb9079f4c92ade78a8af85aaff519a65b5d13f71depends oncranelift-frontend
0.66.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ef419efb4f94ecc02e5d9fbcc910d2bb7f0040e2de570e63a454f883bc891d6cranelift-native
0.66.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e69d44d59826eef6794066ac2c0f4ad3975f02d97030c60dbc04e3886adf36eused bycranelift-wasm
0.66.0crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum979df666b1304624abe99738e9e0e7c7479ee5523ba4b8b237df9ff49996acbbdepends oncrc32fast
1.2.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1adepends oncrossbeam-channel
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775depends onused bycrossbeam-deque
0.7.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285used bycrossbeam-deque
0.8.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9used bycrossbeam-epoch
0.8.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dacedepends onused bycrossbeam-epoch
0.9.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569dused bycrossbeam-queue
0.2.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570used bycrossbeam-utils
0.7.2crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8depends oncrossbeam-utils
0.8.1crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8ddepends oncrunchy
0.2.2crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-mac
0.7.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5depends onused bycrypto-mac
0.8.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onct-logs
0.7.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c8e13110a84b6315df212c045be706af261fd364791cad863285439ebba672edepends onused byctor
0.1.19crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8f45d9ad417bcef4817d614a501ab55cdd96a6fdb24f49aab89a54acfd66b19depends onused bycuckoofilter
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb810a8449931679f64cd7eef1bbd0fa315801b6d5d9cdc1ace2804d6529eee18depends onused bycurve25519-dalek
2.1.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum434e1720189a637d44fe464f4df1e6eb900b4835255b14354497c78af37d9bb8used bycurve25519-dalek
3.0.2crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf627126b946c25a4638eec0ea634fc52506dea98db118aae985118ce7c3d723fdata-encoding
2.3.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57derive_more
0.99.11crates.io↘ 3↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8cdepends ondigest
0.8.1crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondirectories
2.0.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371cdepends onused bydirectories
3.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8fed639d60b58d0f53498ab13d26f621fd77569cc6edb031f4cc36a2ad9da0fdepends onused bydirs-sys
0.3.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57adepends ondns-parser
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbeadepends onused bydyn-clonable
0.9.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4depends onused bydyn-clonable-impl
0.9.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5depends onused bydyn-clone
1.0.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcfused byed25519
1.0.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37c66a534cbb46ab4ea03477eae19d5c22c01da8258030280b7bd9d8433fb6efdepends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9deither
1.6.1crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457enumflags2
0.6.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0depends onused byenumflags2_derive
0.6.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46ccedepends onused byenv_logger
0.7.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36environmental
1.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6576a1755ddffd988788025e75bce9e74b018f7cc226198fe931d077911c6d7eused byerased-serde
0.3.13crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0465971a8cc1fa2455c8465aaa377131e1f1cf4983280f474a13e68793aa770cdepends onerrno
0.2.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46feused byerrno-dragonfly
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067depends onused byevent-listener
2.5.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59exit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byfailure
0.1.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86depends onfailure_derive
0.1.8crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4used byfake-simd
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deedused byfallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.4.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3depends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byfile-per-thread-logger
0.1.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126depends onused byfinality-grandpa
0.12.3crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8feb87a63249689640ac9c011742c33139204e3c134293d3054022276869133bdepends onfixed-hash
0.7.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493cused byfixedbitset
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04dused byflate2
1.0.20crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0flexi_logger
0.15.12crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaab3caedb4149800f91e8e4899f29cd9ddf3b569b04c365ca9334f92f7542bfdepends onused byfnv
1.0.7crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
2.0.1github.com/usetech-llc/substrate.git↘ 1↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onform_urlencoded
1.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00depends onused byframe-benchmarking
2.0.1github.com/usetech-llc/substrate.git↘ 11↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onframe-benchmarking-cli
2.0.1github.com/usetech-llc/substrate.git↘ 16↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused byframe-executive
2.0.1github.com/usetech-llc/substrate.git↘ 9↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused byframe-metadata
12.0.1github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused byframe-support
2.0.1github.com/usetech-llc/substrate.git↘ 18↖ 18sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused by- frame-benchmarking
2.0.1 - frame-executive
2.0.1 - frame-system
2.0.1 - frame-system-benchmarking
2.0.1 - nft-runtime
3.0.0 - pallet-aura
2.0.1 - pallet-authorship
2.0.1 - pallet-balances
2.0.1 - pallet-contracts
2.0.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-randomness-collective-flip
2.0.1 - pallet-session
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-treasury
2.0.1 - pallet-vesting
2.0.1
- frame-benchmarking
frame-support-procedural
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused byframe-support-procedural-tools
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onframe-support-procedural-tools-derive
2.0.1github.com/usetech-llc/substrate.git↘ 3↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onframe-system
2.0.1github.com/usetech-llc/substrate.git↘ 9↖ 17sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused by- frame-benchmarking
2.0.1 - frame-executive
2.0.1 - frame-system-benchmarking
2.0.1 - nft-runtime
3.0.0 - pallet-aura
2.0.1 - pallet-authorship
2.0.1 - pallet-balances
2.0.1 - pallet-contracts
2.0.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-randomness-collective-flip
2.0.1 - pallet-session
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-treasury
2.0.1 - pallet-vesting
2.0.1
- frame-benchmarking
frame-system-benchmarking
2.0.1github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused byframe-system-rpc-runtime-api
2.0.1github.com/usetech-llc/substrate.git↘ 2↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onfs-swap
0.2.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5839fda247e24ca4919c87c71dd5ca658f1f39e4f06829f80e3f15c3bafcfc2cused byfuchsia-cprng
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3baused byfuchsia-zircon
0.3.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82depends onused byfuchsia-zircon-sys
0.3.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7used byfutures
0.1.30crates.io↘ 0↖ 28sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eedused by- futures-cpupool
0.1.8 - futures-diagnose
1.0.1 - futures-util
0.3.12 - h2
0.1.26 - http-body
0.1.0 - hyper
0.12.35 - jsonrpc-client-transports
15.1.0 - jsonrpc-core
15.1.0 - parity-tokio-ipc
0.4.0 - sc-rpc-server
2.0.1 - sc-service
0.8.1 - tokio
0.1.22 - tokio-buf
0.1.1 - tokio-codec
0.1.2 - tokio-current-thread
0.1.7 - tokio-executor
0.1.10 - tokio-fs
0.1.7 - tokio-io
0.1.13 - tokio-named-pipes
0.1.0 - tokio-reactor
0.1.12 - tokio-service
0.1.0 - tokio-sync
0.1.8 - tokio-tcp
0.1.4 - tokio-threadpool
0.1.18 - tokio-timer
0.2.13 - tokio-udp
0.1.6 - tokio-uds
0.2.7 - want
0.2.0
- futures-cpupool
futures
0.3.12crates.io↘ 7↖ 59sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda9052a1a50244d8d5aa9bf55cbc2fb6f357c86cc52e46c62ed390a7180cf150depends onused by- exit-future
0.2.0 - finality-grandpa
0.12.3 - futures-diagnose
1.0.1 - if-watch
0.1.8 - intervalier
0.4.0 - libp2p
0.34.0 - libp2p-core
0.27.1 - libp2p-deflate
0.27.1 - libp2p-dns
0.27.0 - libp2p-floodsub
0.27.0 - libp2p-gossipsub
0.27.0 - libp2p-identify
0.27.0 - libp2p-kad
0.28.1 - libp2p-mdns
0.28.1 - libp2p-mplex
0.27.1 - libp2p-noise
0.29.0 - libp2p-ping
0.27.0 - libp2p-plaintext
0.27.1 - libp2p-pnet
0.20.0 - libp2p-request-response
0.9.1 - libp2p-swarm
0.27.2 - libp2p-tcp
0.27.1 - libp2p-uds
0.27.0 - libp2p-wasm-ext
0.27.0 - libp2p-websocket
0.28.0 - libp2p-yamux
0.30.0 - multistream-select
0.10.1 - nft
3.0.0 - rw-stream-sink
0.2.1 - sc-basic-authorship
0.8.1 - sc-cli
0.8.1 - sc-client-api
2.0.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-slots
0.8.1 - sc-finality-grandpa
0.8.1 - sc-informant
0.8.1 - sc-keystore
2.0.1 - sc-network
0.8.1 - sc-network-gossip
0.8.1 - sc-offchain
2.0.1 - sc-peerset
2.0.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-service
0.8.1 - sc-telemetry
2.0.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - soketto
0.4.2 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-io
2.0.1 - sp-keystore
0.8.0 - sp-transaction-pool
2.0.1 - sp-utils
2.0.1 - substrate-frame-rpc-system
2.0.1 - wasm-timer
0.2.5 - yamux
0.8.0
- exit-future
futures-channel
0.3.12crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2d31b7ec7efab6eefc7c57233bb10b847986139d88cc2f5a02a1ae6871a1846depends onfutures-core
0.3.12crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79e5145dde8da7d1b3892dad07a9c98fc04bc39892b1ecc9692cf53e2b780a65futures-cpupool
0.1.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4depends onused byfutures-diagnose
1.0.1crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9depends onused byfutures-executor
0.3.12crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume9e59fdc009a4b3096bf94f740a0f2424c082521f20a9b08c5c07c48d90fd9b9used byfutures-io
0.3.12crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28be053525281ad8259d47e4de5de657b25e7bac113458555bb4b70bc6870500futures-lite
1.11.3crates.io↘ 7↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb4481d0cd0de1d204a4fa55e7d45f07b1d958abcb06714b3446438e2eff695fbdepends onfutures-macro
0.3.12crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc287d25add322d9f9abdcdc5927ca398917996600182178774032e9f8258feddused byfutures-rustls
0.21.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8bdepends onused byfutures-sink
0.3.12crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcaf5c69029bda2e743fddd0582d1083951d65cc9539aebf8812f36c3491342d6futures-task
0.3.12crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum13de07eb8ea81ae445aca7b69f5f7bf15d7bf4912d8ca37d6645c77ae8a58d86depends onfutures-timer
2.0.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6futures-timer
3.0.2crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cfutures-util
0.3.12crates.io↘ 13↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum632a8cd0f2a4b3fdea1657f08bde063848c3bd00f9bbf6e256b8be78802e624bdepends ongcc
0.3.55crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2used bygeneric-array
0.12.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ecdepends ongeneric-array
0.13.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcddepends onused bygeneric-array
0.14.4crates.io↘ 2↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817depends ongetrandom
0.1.16crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8used byghash
0.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375depends onused bygimli
0.21.0crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65cgimli
0.23.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ceused byglob
0.3.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc152169ef1e421390738366d2f796655fec62621dabbd0fd476f905934061e4aused bygloo-timers
0.2.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891fused byh2
0.1.26crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462depends onused byh2
0.2.7crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535depends onused byhandlebars
3.5.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum964d0e99a61fe9b1b347389b77ebf8b7e1587b70293676aaca7d27e59b9073b2used byhash-db
0.15.2crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364ahash256-std-hasher
0.15.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2depends onused byhashbrown
0.9.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04depends onheck
0.3.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6acdepends onhermit-abi
0.1.18crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5cdepends onused byhex
0.4.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35hex_fmt
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336fused byhex-literal
0.3.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5af1f635ef1bc545d78392b136bfe1c9809e029023c84a3638a864a10b8819c8used byhmac
0.7.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695depends onhmac
0.8.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840depends onused byhmac-drbg
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7bdepends onused byhttp
0.1.21crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0depends onhttp
0.2.3crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747depends onhttp-body
0.1.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292dused byhttp-body
0.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111bdepends onused byhttparse
1.3.5crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691httpdate
0.3.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47used byhumantime
1.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4fdepends onused byhyper
0.12.35crates.io↘ 22↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6depends onused byhyper
0.13.10crates.io↘ 16↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bbdepends onhyper-rustls
0.21.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6depends onused byidna
0.1.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844eused byidna
0.2.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde910d521f7cc3135c4de8db1cb910e0b5ed1dc6f57c381cd07e8e661ce10094used byif-addrs
0.6.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48depends onused byif-addrs-sys
0.3.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79eadepends onused byif-watch
0.1.8crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97b8538953a3f0d0d3868f0a706eb4273535e10d72acb5c82c1c23ae48835c85depends onimpl-codec
0.4.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53depends onused byimpl-serde
0.3.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6fdepends onimpl-trait-for-tuples
0.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9ddepends onused byimpl-trait-for-tuples
0.2.1crates.io↘ 3↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031eedepends onindexmap
1.6.1crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313bdepends onInflector
0.11.4crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.9crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ecdepends oninteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byintervalier
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275depends onused byiovec
0.1.4crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075edepends onip_network
0.3.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ee15951c035f79eddbef745611ec962f63f4558f1dadf98ab723cc603487c6fused byipnet
2.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135itertools
0.9.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54bdepends onitoa
0.4.7crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736jobserver
0.1.21crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2depends onused byjs-sys
0.3.47crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65depends onjsonrpc-client-transports
15.1.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum489b9c612e60c766f751ab40fcb43cbb55a1e10bb44a9b4307ed510ca598cbd7depends onused byjsonrpc-core
15.1.0crates.io↘ 5↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991faused by- jsonrpc-client-transports
15.1.0 - jsonrpc-http-server
15.1.0 - jsonrpc-ipc-server
15.1.0 - jsonrpc-pubsub
15.1.0 - jsonrpc-server-utils
15.1.0 - jsonrpc-ws-server
15.1.0 - nft
3.0.0 - pallet-contracts-rpc
0.8.1 - pallet-transaction-payment-rpc
2.0.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-rpc-server
2.0.1 - sc-service
0.8.1 - substrate-frame-rpc-system
2.0.1
- jsonrpc-client-transports
jsonrpc-core-client
15.1.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f764902d7b891344a0acb65625f32f6f7c6db006952143bd650209fbe7d94dbdepends onjsonrpc-derive
15.1.0crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99a847f9ec7bb52149b2786a17c9cb260d6effc6b8eeb8c16b343a487a7563a3jsonrpc-http-server
15.1.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb5c4513b7b542f42da107942b7b759f27120b5cc894729f88254b28dff44b7depends onused byjsonrpc-ipc-server
15.1.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf50e53e4eea8f421a7316c5f63e395f7bc7c4e786a6dc54d76fab6ff7aa7ce7depends onused byjsonrpc-pubsub
15.1.0crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum639558e0604013be9787ae52f798506ae42bf4220fe587bdc5625871cc8b9c77jsonrpc-server-utils
15.1.0crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72f1f3990650c033bd8f6bd46deac76d990f9bbfb5f8dc8c4767bf0a00392176depends onjsonrpc-ws-server
15.1.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6596fe75209b73a2a75ebe1dce4e60e03b88a2b25e8807b667597f6315150d22depends onused bykeccak
0.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7used bykernel32-sys
0.2.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098ddepends onkv-log-macro
1.0.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977fdepends onused bykvdb
0.8.0crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92312348daade49976a6dc59263ad39ed54f840aacb5664874f7c9aa16e5f848depends onkvdb-memorydb
0.8.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum986052a8d16c692eaebe775391f9a3ac26714f3907132658500b601dec94c8c2used bykvdb-rocksdb
0.10.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d92c36be64baba5ea549116ff0d7ffd445456a7be8aaee21ec05882b980cd11depends onused bylazy_static
1.4.0crates.io↘ 0↖ 37sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.54.0 - crossbeam-epoch
0.8.2 - crossbeam-epoch
0.9.1 - crossbeam-utils
0.7.2 - crossbeam-utils
0.8.1 - flexi_logger
0.15.12 - fs-swap
0.2.5 - futures-diagnose
1.0.1 - jsonrpc-server-utils
15.1.0 - libp2p
0.34.0 - libp2p-core
0.27.1 - libp2p-mdns
0.28.1 - libp2p-noise
0.29.0 - prometheus
0.10.0 - rayon-core
1.9.0 - sc-client-api
2.0.1 - sc-executor
0.8.1 - sc-light
2.0.1 - sc-service
0.8.1 - sc-tracing
2.0.1 - schannel
0.1.19 - sharded-slab
0.1.1 - sp-core
2.0.1 - sp-keyring
2.0.1 - sp-utils
2.0.1 - structopt
0.3.21 - tokio
0.2.25 - tokio-reactor
0.1.12 - tokio-threadpool
0.1.18 - tracing-core
0.1.17 - tracing-log
0.1.1 - tracing-subscriber
0.2.15 - wasm-bindgen-backend
0.2.70 - wasmtime
0.19.0 - wasmtime-profiling
0.19.0 - wasmtime-runtime
0.19.0
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used byleb128
0.2.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2aused bylibc
0.2.86crates.io↘ 0↖ 61sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1cused by- async-io
1.3.1 - atty
0.2.14 - backtrace
0.3.56 - chrono
0.4.19 - clang-sys
0.29.3 - core-foundation
0.7.0 - dirs-sys
0.3.5 - errno
0.2.7 - errno-dragonfly
0.1.1 - fdlimit
0.2.1 - flate2
1.0.20 - fs-swap
0.2.5 - getrandom
0.1.16 - getrandom
0.2.2 - hermit-abi
0.1.18 - if-addrs
0.6.5 - if-addrs-sys
0.3.2 - if-watch
0.1.8 - iovec
0.1.4 - jobserver
0.1.21 - libp2p-tcp
0.27.1 - librocksdb-sys
6.11.4 - mach
0.3.2 - memmap
0.7.0 - mio
0.6.23 - mio-uds
0.6.8 - nb-connect
1.0.3 - net2
0.2.37 - num_cpus
1.13.0 - parity-db
0.1.2 - parity-tokio-ipc
0.4.0 - parking_lot_core
0.6.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.3 - polling
2.0.2 - rand
0.3.23 - rand
0.4.6 - rand
0.7.3 - rand
0.8.3 - region
2.2.0 - ring
0.16.20 - rocksdb
0.15.0 - rpassword
5.0.1 - security-framework
1.0.0 - security-framework-sys
1.0.0 - signal-hook
0.3.4 - signal-hook-registry
1.3.0 - socket2
0.3.19 - tempfile
3.2.0 - time
0.1.44 - tokio
0.2.25 - tokio-uds
0.2.7 - wasmi
0.6.2 - wasmtime
0.19.0 - wasmtime-environ
0.19.0 - wasmtime-profiling
0.19.0 - wasmtime-runtime
0.19.0 - which
3.1.1 - which
4.0.2 - zstd-safe
2.0.6+zstd.1.4.7 - zstd-sys
1.4.18+zstd.1.4.7
- async-io
libloading
0.5.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753depends onused bylibm
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702aused bylibp2p
0.34.0crates.io↘ 30↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5133112ce42be9482f6a87be92a605dd6bbc9e93c297aee77d172ff06908f3adepends on- atomic
0.5.0 - bytes
1.0.1 - futures
0.3.12 - lazy_static
1.4.0 - libp2p-core
0.27.1 - libp2p-core-derive
0.21.0 - libp2p-deflate
0.27.1 - libp2p-dns
0.27.0 - libp2p-floodsub
0.27.0 - libp2p-gossipsub
0.27.0 - libp2p-identify
0.27.0 - libp2p-kad
0.28.1 - libp2p-mdns
0.28.1 - libp2p-mplex
0.27.1 - libp2p-noise
0.29.0 - libp2p-ping
0.27.0 - libp2p-plaintext
0.27.1 - libp2p-pnet
0.20.0 - libp2p-request-response
0.9.1 - libp2p-swarm
0.27.2 - libp2p-tcp
0.27.1 - libp2p-uds
0.27.0 - libp2p-wasm-ext
0.27.0 - libp2p-websocket
0.28.0 - libp2p-yamux
0.30.0 - parity-multiaddr
0.11.1 - parking_lot
0.11.1 - pin-project
1.0.5 - smallvec
1.6.1 - wasm-timer
0.2.5
- atomic
libp2p-core
0.27.1crates.io↘ 26↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a2d56aadc2c2bf22cd7797f86e56a65b5b3994a0136b65be3106938acae7a26depends on- asn1_der
0.6.3 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.6.1 - fnv
1.0.7 - futures
0.3.12 - futures-timer
3.0.2 - lazy_static
1.4.0 - libsecp256k1
0.3.5 - log
0.4.14 - multihash
0.13.2 - multistream-select
0.10.1 - parity-multiaddr
0.11.1 - parking_lot
0.11.1 - pin-project
1.0.5 - prost
0.7.0 - prost-build
0.7.0 - rand
0.7.3 - ring
0.16.20 - rw-stream-sink
0.2.1 - sha2
0.9.3 - smallvec
1.6.1 - thiserror
1.0.23 - unsigned-varint
0.7.0 - void
1.0.2 - zeroize
1.2.0
used by- libp2p
0.34.0 - libp2p-deflate
0.27.1 - libp2p-dns
0.27.0 - libp2p-floodsub
0.27.0 - libp2p-gossipsub
0.27.0 - libp2p-identify
0.27.0 - libp2p-kad
0.28.1 - libp2p-mdns
0.28.1 - libp2p-mplex
0.27.1 - libp2p-noise
0.29.0 - libp2p-ping
0.27.0 - libp2p-plaintext
0.27.1 - libp2p-request-response
0.9.1 - libp2p-swarm
0.27.2 - libp2p-tcp
0.27.1 - libp2p-uds
0.27.0 - libp2p-wasm-ext
0.27.0 - libp2p-websocket
0.28.0 - libp2p-yamux
0.30.0
- asn1_der
libp2p-core-derive
0.21.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4bc40943156e42138d22ed3c57ff0e1a147237742715937622a99b10fbe0156depends onused bylibp2p-deflate
0.27.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d42eed63305f0420736fa487f9acef720c4528bd7852a6a760f5ccde4813345used bylibp2p-dns
0.27.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5153b6db68fd4baa3b304e377db744dd8fea8ff4e4504509ee636abcde88d3e3depends onused bylibp2p-floodsub
0.27.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb3c63dfa06581b24b1d12bf9815b43689a784424be217d6545c800c7c75a207fdepends onused bylibp2p-gossipsub
0.27.0crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12451ba9493e87c91baf2a6dffce9ddf1fbc807a0861532d7cf477954f8ebbeedepends onused bylibp2p-identify
0.27.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb40fb36a059b7a8cce1514bd8b546fa612e006c9937caa7f5950cb20021fe91edepends onused bylibp2p-kad
0.28.1crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf3da6c9acbcc05f93235d201d7d45ef4e8b88a45d8836f98becd8b4d443f066depends onused bylibp2p-mdns
0.28.1crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e9e6374814d1b118d97ccabdfc975c8910bd16dc38a8bc058eeb08bf2080fe1depends onused bylibp2p-mplex
0.27.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum350ce8b3923594aedabd5d6e3f875d058435052a29c3f32df378bc70d10be464depends onused bylibp2p-noise
0.29.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4aca322b52a0c5136142a7c3971446fb1e9964923a526c9cc6ef3b7c94e57778depends onused bylibp2p-ping
0.27.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f3813276d0708c8db0f500d8beda1bda9ad955723b9cb272c41f4727256f73cdepends onused bylibp2p-plaintext
0.27.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d58defcadb646ae4b033e130b48d87410bf76394dc3335496cae99dac803e61depends onused bylibp2p-pnet
0.20.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ce3374f3b28162db9d3442c9347c4f14cb01e8290052615c7d341d40eae0599used bylibp2p-request-response
0.9.1crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10e5552827c33d8326502682da73a0ba4bfa40c1b55b216af3c303f32169dd89depends onused bylibp2p-swarm
0.27.2crates.io↘ 8↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7955b973e1fd2bd61ffd43ce261c1223f61f4aacd5bae362a924993f9a25fd98depends onlibp2p-tcp
0.27.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88a5aef80e519a6cb8e2663605142f97baaaea1a252eecbf8756184765f7471bdepends onused bylibp2p-uds
0.27.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80ac51ce419f60be966e02103c17f67ff5dc4422ba83ba54d251d6c62a4ed487used bylibp2p-wasm-ext
0.27.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6149c46cb76935c80bc8be6ec6e3ebd5f5e1679765a255fb34331d54610f15dddepends onused bylibp2p-websocket
0.28.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3b1c6a3431045da8b925ed83384e4c5163e14b990572307fca9c507435d4d22depends onused bylibp2p-yamux
0.30.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum490b8b27fc40fe35212df1b6a3d14bffaa4117cbff956fdc2892168a371102adused bylibrocksdb-sys
6.11.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb5b56f651c204634b936be2f92dbb42c36867e00ff7fe2405591f3b9fa66f09depends onused bylibsecp256k1
0.3.5crates.io↘ 8↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962depends onlibz-sys
1.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655depends onused bylinked_hash_set
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onused bylinked-hash-map
0.5.4crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3linregress
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d0ad4b5cc8385a881c561fac3501353d63d2a2b7a357b5064d71815c9a92724depends onused bylock_api
0.3.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75depends onlock_api
0.4.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312depends onused bylog
0.4.14crates.io↘ 2↖ 118sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710depends onused by- async-io
1.3.1 - async-std
1.9.0 - bindgen
0.54.0 - cranelift-codegen
0.66.0 - cranelift-frontend
0.66.0 - cranelift-wasm
0.66.0 - env_logger
0.7.1 - file-per-thread-logger
0.1.4 - finality-grandpa
0.12.3 - flexi_logger
0.15.12 - frame-support
2.0.1 - futures-diagnose
1.0.1 - globset
0.4.6 - h2
0.1.26 - handlebars
3.5.2 - hyper
0.12.35 - hyper-rustls
0.21.0 - if-watch
0.1.8 - jsonrpc-client-transports
15.1.0 - jsonrpc-core
15.1.0 - jsonrpc-http-server
15.1.0 - jsonrpc-ipc-server
15.1.0 - jsonrpc-pubsub
15.1.0 - jsonrpc-server-utils
15.1.0 - jsonrpc-ws-server
15.1.0 - kv-log-macro
1.0.7 - kvdb-rocksdb
0.10.0 - libp2p-core
0.27.1 - libp2p-dns
0.27.0 - libp2p-floodsub
0.27.0 - libp2p-gossipsub
0.27.0 - libp2p-identify
0.27.0 - libp2p-kad
0.28.1 - libp2p-mdns
0.28.1 - libp2p-mplex
0.27.1 - libp2p-noise
0.29.0 - libp2p-ping
0.27.0 - libp2p-plaintext
0.27.1 - libp2p-pnet
0.20.0 - libp2p-request-response
0.9.1 - libp2p-swarm
0.27.2 - libp2p-tcp
0.27.1 - libp2p-uds
0.27.0 - libp2p-websocket
0.28.0 - mio
0.6.23 - mio-extras
2.0.6 - mio-named-pipes
0.1.7 - multistream-select
0.10.1 - nft
3.0.0 - pallet-nft
3.0.0 - parity-db
0.1.2 - parity-tokio-ipc
0.4.0 - parity-ws
0.10.0 - polling
2.0.2 - prost-build
0.7.0 - pwasm-utils
0.14.0 - pwasm-utils
0.16.0 - regalloc
0.0.27 - rustls
0.18.1 - rustls
0.19.0 - sc-basic-authorship
0.8.1 - sc-cli
0.8.1 - sc-client-api
2.0.1 - sc-client-db
0.8.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-slots
0.8.1 - sc-consensus-uncles
0.8.1 - sc-executor
0.8.1 - sc-executor-wasmi
0.8.1 - sc-executor-wasmtime
0.8.1 - sc-finality-grandpa
0.8.1 - sc-informant
0.8.1 - sc-network
0.8.1 - sc-network-gossip
0.8.1 - sc-offchain
2.0.1 - sc-peerset
2.0.1 - sc-proposer-metrics
0.8.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-rpc-server
2.0.1 - sc-service
0.8.1 - sc-state-db
0.8.1 - sc-telemetry
2.0.1 - sc-tracing
2.0.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - soketto
0.4.2 - sp-allocator
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-finality-grandpa
2.0.1 - sp-io
2.0.1 - sp-runtime
2.0.1 - sp-state-machine
0.8.1 - sp-tasks
2.0.0 - sp-tracing
2.0.1 - sp-transaction-pool
2.0.1 - substrate-frame-rpc-system
2.0.1 - substrate-prometheus-endpoint
0.8.1 - tokio-io
0.1.13 - tokio-reactor
0.1.12 - tokio-threadpool
0.1.18 - tokio-udp
0.1.6 - tokio-uds
0.2.7 - tokio-util
0.3.1 - tracing
0.1.23 - tracing-log
0.1.1 - trie-db
0.22.3 - want
0.2.0 - want
0.3.0 - wasm-bindgen-backend
0.2.70 - wasmtime
0.19.0 - wasmtime-environ
0.19.0 - wasmtime-jit
0.19.0 - wasmtime-runtime
0.19.0 - yamux
0.8.0
- async-io
lru
0.6.5crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f374d42cdfc1d7dbf3d3dec28afab2eb97ffbf43a3234d795b5986dbf4b90badepends onmach
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onused bymaplit
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651dused bymatchers
0.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1depends onused bymatches
0.1.8crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08matrixmultiply
0.2.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum916806ba0031cd542105d916a97c8572e1fa6dd79c9c51e7eb43a09ec2dd84c1depends onused bymaybe-uninit
2.0.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00memchr
2.3.4crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525memmap
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475bdepends onused bymemoffset
0.5.6crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aadepends onmemoffset
0.6.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87depends onused bymemory_units
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882used bymemory-db
0.25.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6cbd2a22f201c03cc1706a727842490abfea17b7b53260358239828208daba3cused bymerlin
2.0.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42minicbor
0.7.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3265a9f5210bb726f81ef9c456ae0aff5321cd95748c0e71889b0e19d8f0332bdepends onused byminicbor-derive
0.6.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum130b9455e28a3f308f6579671816a6f2621e2e0cbf55dc2f886345bef699481edepends onused byminiz_oxide
0.4.3crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19ddepends onused bymio
0.6.23crates.io↘ 11↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4depends onmio-extras
2.0.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19depends onused bymio-named-pipes
0.1.7crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656depends onmio-uds
0.6.8crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0depends onused bymiow
0.2.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944dused bymiow
0.3.6crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897depends onmore-asserts
0.2.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238multihash
0.13.2crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cabmultihash-derive
0.7.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85ee3c48cb9d9b275ad967a0e96715badc13c6029adb92f34fa17b9ff28fd81fdepends onused bymultimap
0.8.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1255076139a83bb467426e7f8d0134968a8118844faa755985e077cf31850333used bymultistream-select
0.10.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5df70763c86c98487451f307e1b68b4100da9076f4c12146905fc2054277f4e8used bynalgebra
0.21.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6b6147c3d50b4f3cdabfe2ecc94a0191fd3d6ad58aefd9664cf396285883486depends onused bynames
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2dadepends onused bynb-connect
1.0.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum670361df1bc2399ee1ff50406a0d422587dd3bb0da596e1978fe8e05dabddf4fdepends onused bynet2
0.2.37crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568aedepends onnft
3.0.0workspace↘ 39↖ 0depends on- flexi_logger
0.15.12 - frame-benchmarking
2.0.1 - frame-benchmarking-cli
2.0.1 - futures
0.3.12 - jsonrpc-core
15.1.0 - log
0.4.14 - nft-runtime
3.0.0 - pallet-contracts-rpc
0.8.1 - pallet-transaction-payment-rpc
2.0.1 - parking_lot
0.10.2 - sc-basic-authorship
0.8.1 - sc-cli
0.8.1 - sc-client-api
2.0.1 - sc-consensus
0.8.1 - sc-consensus-aura
0.8.1 - sc-executor
0.8.1 - sc-finality-grandpa
0.8.1 - sc-keystore
2.0.1 - sc-network
0.8.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-service
0.8.1 - sc-telemetry
2.0.1 - sc-transaction-pool
2.0.1 - serde
1.0.123 - serde_json
1.0.62 - sp-api
2.0.1 - sp-block-builder
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-consensus-aura
0.8.1 - sp-core
2.0.1 - sp-finality-grandpa
2.0.1 - sp-inherents
2.0.1 - sp-runtime
2.0.1 - sp-transaction-pool
2.0.1 - structopt
0.3.21 - substrate-build-script-utils
2.0.1 - substrate-frame-rpc-system
2.0.1
- flexi_logger
nft-runtime
3.0.0workspace↘ 37↖ 1depends on- frame-benchmarking
2.0.1 - frame-executive
2.0.1 - frame-support
2.0.1 - frame-system
2.0.1 - frame-system-benchmarking
2.0.1 - frame-system-rpc-runtime-api
2.0.1 - hex-literal
0.3.1 - pallet-aura
2.0.1 - pallet-balances
2.0.1 - pallet-contracts
2.0.1 - pallet-contracts-primitives
2.0.1 - pallet-contracts-rpc-runtime-api
0.8.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-randomness-collective-flip
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-transaction-payment-rpc-runtime-api
2.0.1 - pallet-treasury
2.0.1 - pallet-vesting
2.0.1 - parity-scale-codec
1.3.6 - serde
1.0.123 - smallvec
1.6.1 - sp-api
2.0.1 - sp-arithmetic
2.0.1 - sp-block-builder
2.0.1 - sp-consensus-aura
0.8.1 - sp-core
2.0.1 - sp-inherents
2.0.1 - sp-offchain
2.0.1 - sp-runtime
2.0.1 - sp-session
2.0.1 - sp-std
2.0.1 - sp-transaction-pool
2.0.1 - sp-version
2.0.1 - substrate-wasm-builder-runner
1.0.6
used by- frame-benchmarking
nodrop
0.1.14crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bbused bynohash-hasher
0.2.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451nom
5.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627afdepends onused bynum_cpus
1.13.0crates.io↘ 2↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3depends onnum-bigint
0.2.6crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304num-complex
0.2.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95depends onused bynum-integer
0.1.44crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801dbdepends onnum-rational
0.2.4crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aefnum-traits
0.2.14crates.io↘ 2↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290depends onobject
0.19.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cbca9424c482ee628fa549d9c812e2cd22f1180b9222c9200fdfa6eb31aecb2used byobject
0.20.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5object
0.23.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4used byonce_cell
1.5.2crates.io↘ 1↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0depends onopaque-debug
0.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529cused byopaque-debug
0.3.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssl-probe
0.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32deused byowning_ref
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52cedepends onused bypallet-aura
2.0.1github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-authorship
2.0.1github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-balances
2.0.1github.com/usetech-llc/substrate.git↘ 7↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onpallet-contracts
2.0.1github.com/usetech-llc/substrate.git↘ 14↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onpallet-contracts-primitives
2.0.1github.com/usetech-llc/substrate.git↘ 4↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fpallet-contracts-proc-macro
0.1.0github.com/usetech-llc/substrate.git↘ 3↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-contracts-rpc
0.8.1github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-contracts-rpc-runtime-api
0.8.1github.com/usetech-llc/substrate.git↘ 5↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onpallet-grandpa
2.0.1github.com/usetech-llc/substrate.git↘ 14↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-nft
3.0.0workspace↘ 15↖ 1depends onused bypallet-randomness-collective-flip
2.0.1github.com/usetech-llc/substrate.git↘ 6↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onpallet-session
2.0.1github.com/usetech-llc/substrate.git↘ 13↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onpallet-sudo
2.0.1github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-timestamp
2.0.1github.com/usetech-llc/substrate.git↘ 11↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onpallet-transaction-payment
2.0.1github.com/usetech-llc/substrate.git↘ 9↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onpallet-transaction-payment-rpc
2.0.1github.com/usetech-llc/substrate.git↘ 10↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-transaction-payment-rpc-runtime-api
2.0.1github.com/usetech-llc/substrate.git↘ 4↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fpallet-treasury
2.0.1github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bypallet-vesting
2.0.1github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused byparity-db
0.1.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00d595e372d119261593297debbe4193811a4dc811d2a1ccbb8caaa6666ad7abused byparity-multiaddr
0.11.1crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2c6805f98667a3828afb2ec2c396a8d610497e8d546f5447188aae47c5a79ecdepends onparity-scale-codec
1.3.6crates.io↘ 5↖ 84sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79602888a81ace83e3d1d4b2873286c1f5f906c84db667594e8db8da3506c383used by- finality-grandpa
0.12.3 - fork-tree
2.0.1 - frame-benchmarking
2.0.1 - frame-benchmarking-cli
2.0.1 - frame-executive
2.0.1 - frame-metadata
12.0.1 - frame-support
2.0.1 - frame-system
2.0.1 - frame-system-benchmarking
2.0.1 - frame-system-rpc-runtime-api
2.0.1 - impl-codec
0.4.2 - nft-runtime
3.0.0 - pallet-aura
2.0.1 - pallet-authorship
2.0.1 - pallet-balances
2.0.1 - pallet-contracts
2.0.1 - pallet-contracts-primitives
2.0.1 - pallet-contracts-rpc
0.8.1 - pallet-contracts-rpc-runtime-api
0.8.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-randomness-collective-flip
2.0.1 - pallet-session
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-transaction-payment-rpc
2.0.1 - pallet-transaction-payment-rpc-runtime-api
2.0.1 - pallet-treasury
2.0.1 - pallet-vesting
2.0.1 - sc-basic-authorship
0.8.1 - sc-block-builder
0.8.1 - sc-chain-spec
2.0.1 - sc-cli
0.8.1 - sc-client-api
2.0.1 - sc-client-db
0.8.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-epochs
0.8.1 - sc-consensus-slots
0.8.1 - sc-executor
0.8.1 - sc-executor-common
0.8.1 - sc-executor-wasmi
0.8.1 - sc-executor-wasmtime
0.8.1 - sc-finality-grandpa
0.8.1 - sc-light
2.0.1 - sc-network
0.8.1 - sc-offchain
2.0.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-service
0.8.1 - sc-state-db
0.8.1 - sc-transaction-pool
2.0.1 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-arithmetic
2.0.1 - sp-authorship
2.0.1 - sp-block-builder
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-consensus-aura
0.8.1 - sp-consensus-babe
0.8.1 - sp-consensus-slots
0.8.1 - sp-consensus-vrf
0.8.1 - sp-core
2.0.1 - sp-externalities
0.8.1 - sp-finality-grandpa
2.0.1 - sp-inherents
2.0.1 - sp-io
2.0.1 - sp-keystore
0.8.0 - sp-runtime
2.0.1 - sp-runtime-interface
2.0.1 - sp-sandbox
0.8.1 - sp-session
2.0.1 - sp-staking
2.0.1 - sp-state-machine
0.8.1 - sp-storage
2.0.1 - sp-timestamp
2.0.1 - sp-tracing
2.0.1 - sp-transaction-pool
2.0.1 - sp-trie
2.0.1 - sp-version
2.0.1 - sp-wasm-interface
2.0.1 - substrate-frame-rpc-system
2.0.1
- finality-grandpa
parity-scale-codec-derive
1.2.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum198db82bb1c18fc00176004462dd809b2a6d851669550aa17af6dacd21ae0c14used byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-tokio-ipc
0.4.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e57fea504fea33f9fbb5f49f378359030e7e026a6ab849bb9e8f0787376f1bfdepends onused byparity-util-mem
0.8.0crates.io↘ 8↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f17f15cb05897127bf36a240085a1f0bbef7bce3024849eccf7f93f6171bc27depends onparity-util-mem-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2parity-wasm
0.41.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865parity-ws
0.10.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e02a625dd75084c2a7024f07c575b61b782f729d18702dabb3cdbf31911dc61depends onused byparking
2.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72parking_lot
0.9.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252parking_lot
0.10.2crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505edepends onparking_lot
0.11.1crates.io↘ 3↖ 39sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15ebused by- kvdb-memorydb
0.8.0 - kvdb-rocksdb
0.10.0 - libp2p
0.34.0 - libp2p-core
0.27.1 - libp2p-mplex
0.27.1 - libp2p-yamux
0.30.0 - once_cell
1.5.2 - parity-util-mem
0.8.0 - prometheus
0.10.0 - sc-client-api
2.0.1 - sc-client-db
0.8.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-epochs
0.8.1 - sc-consensus-slots
0.8.1 - sc-executor
0.8.1 - sc-finality-grandpa
0.8.1 - sc-keystore
2.0.1 - sc-light
2.0.1 - sc-network
0.8.1 - sc-offchain
2.0.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-service
0.8.1 - sc-state-db
0.8.1 - sc-telemetry
2.0.1 - sc-tracing
2.0.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-database
2.0.1 - sp-inherents
2.0.1 - sp-io
2.0.1 - sp-keystore
0.8.0 - sp-state-machine
0.8.1 - wasm-timer
0.2.5 - yamux
0.8.0
- kvdb-memorydb
parking_lot_core
0.6.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62bdepends onused byparking_lot_core
0.7.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3used byparking_lot_core
0.8.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018used bypaste
0.1.18crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880depends onpaste-impl
0.1.18crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6depends onused bypbkdf2
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9depends onused bypbkdf2
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbddepends onused bypdqselect
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27used bypeeking_take_while
0.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099used bypercent-encoding
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831used bypercent-encoding
2.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32epest
2.1.3crates.io↘ 1↖ 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.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7depends onused bypin-project
0.4.27crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15depends onpin-project
1.0.5crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96fa8ebb90271c4477f144354485b8068bd8f6b78b428b01ba892ca26caf0b63depends onpin-project-internal
0.4.27crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895depends onused bypin-project-internal
1.0.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum758669ae3558c6f74bd2a18b41f7ac0b5a195aea6639d6a9b5e5d1ad5ba24c0bdepends onused bypin-project-lite
0.1.11crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6bpin-project-lite
0.2.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827pin-utils
0.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkg-config
0.3.19crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884cused byplatforms
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfeb3b2b1033b8a60b4da6ee470325f887758c95d5320f52f9ce0df055a55940epolling
2.0.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4used bypoly1305
0.6.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b7456bc1ad2d4cf82b3a016be4c2ac48daf11bf990c1603ebd447fe6f30fca8depends onused bypolyval
0.4.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cdused byppv-lite86
0.2.10crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857primitive-types
0.8.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb3824ae2c5e27160113b9e029a10ec9e3f0237bad8029f69c7724393c9fdefd8proc-macro-crate
0.1.5crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785depends onproc-macro-error
1.0.4crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro-hack
0.5.19crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5proc-macro-nested
0.1.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086used byproc-macro2
1.0.24crates.io↘ 1↖ 42sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71depends onused by- async-trait
0.1.42 - bindgen
0.54.0 - derive_more
0.99.11 - dyn-clonable-impl
0.9.0 - enumflags2_derive
0.6.4 - failure_derive
0.1.8 - frame-support-procedural
2.0.1 - frame-support-procedural-tools
2.0.1 - frame-support-procedural-tools-derive
2.0.1 - futures-macro
0.3.12 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
15.1.0 - minicbor-derive
0.6.1 - multihash-derive
0.7.1 - pallet-contracts-proc-macro
0.1.0 - parity-scale-codec-derive
1.2.2 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.27 - pin-project-internal
1.0.5 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prost-derive
0.7.0 - quote
1.0.9 - ref-cast-impl
1.0.6 - sc-chain-spec-derive
2.0.1 - sc-tracing-proc-macro
2.0.0 - scroll_derive
0.10.5 - serde_derive
1.0.123 - sp-api-proc-macro
2.0.1 - sp-debug-derive
2.0.1 - sp-runtime-interface-proc-macro
2.0.1 - structopt-derive
0.4.14 - strum_macros
0.16.0 - syn
1.0.60 - synstructure
0.12.4 - thiserror-impl
1.0.23 - tracing-attributes
0.1.12 - wasm-bindgen-backend
0.2.70 - wasm-bindgen-macro-support
0.2.70 - zeroize_derive
1.0.1
- async-trait
prometheus
0.10.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30d70cf4412832bcac9cffe27906f4a66e450d323525e977168c70d1b36120aeprost
0.7.0crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2depends onprost-build
0.7.0crates.io↘ 10↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3depends onprost-derive
0.7.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4used byprost-types
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bbdepends onused bypwasm-utils
0.14.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f53bc2558e8376358ebdc28301546471d67336584f6438ed4b7c7457a055fd7depends onused bypwasm-utils
0.16.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c8ac87af529432d3a4f0e2b3bbf08af49f28f09cc73ed7e551161bdaef5f78ddepends onused byquick-error
1.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quick-error
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ac73b1112776fc109b2e61909bc46c7e1bf0d7f690ffb1676553acce16d5cdaused byquicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
1.0.9crates.io↘ 1↖ 44sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7depends onused by- asn1_der_derive
0.1.2 - async-trait
0.1.42 - bindgen
0.54.0 - ctor
0.1.19 - derive_more
0.99.11 - dyn-clonable-impl
0.9.0 - enumflags2_derive
0.6.4 - failure_derive
0.1.8 - frame-support-procedural
2.0.1 - frame-support-procedural-tools
2.0.1 - frame-support-procedural-tools-derive
2.0.1 - futures-macro
0.3.12 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
15.1.0 - libp2p-core-derive
0.21.0 - minicbor-derive
0.6.1 - multihash-derive
0.7.1 - pallet-contracts-proc-macro
0.1.0 - parity-scale-codec-derive
1.2.2 - pest_generator
2.1.3 - pin-project-internal
0.4.27 - pin-project-internal
1.0.5 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prost-derive
0.7.0 - ref-cast-impl
1.0.6 - sc-chain-spec-derive
2.0.1 - sc-tracing-proc-macro
2.0.0 - scroll_derive
0.10.5 - serde_derive
1.0.123 - sp-api-proc-macro
2.0.1 - sp-debug-derive
2.0.1 - sp-runtime-interface-proc-macro
2.0.1 - structopt-derive
0.4.14 - strum_macros
0.16.0 - syn
1.0.60 - synstructure
0.12.4 - thiserror-impl
1.0.23 - tracing-attributes
0.1.12 - wasm-bindgen-backend
0.2.70 - wasm-bindgen-macro
0.2.70 - wasm-bindgen-macro-support
0.2.70 - zeroize_derive
1.0.1
- asn1_der_derive
radium
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdef50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47acused byrand
0.3.23crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76cdepends onused byrand
0.4.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293used byrand
0.7.3crates.io↘ 6↖ 37sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- cuckoofilter
0.5.0 - ed25519-dalek
1.0.1 - jsonrpc-pubsub
15.1.0 - libp2p-core
0.27.1 - libp2p-floodsub
0.27.0 - libp2p-gossipsub
0.27.0 - libp2p-kad
0.28.1 - libp2p-mdns
0.28.1 - libp2p-mplex
0.27.1 - libp2p-noise
0.29.0 - libp2p-ping
0.27.0 - libp2p-pnet
0.20.0 - libp2p-request-response
0.9.1 - libp2p-swarm
0.27.2 - libsecp256k1
0.3.5 - nalgebra
0.21.1 - parity-tokio-ipc
0.4.0 - parity-ws
0.10.0 - rand_distr
0.2.2 - sc-cli
0.8.1 - sc-consensus-babe
0.8.1 - sc-finality-grandpa
0.8.1 - sc-keystore
2.0.1 - sc-network
0.8.1 - sc-offchain
2.0.1 - sc-service
0.8.1 - sc-telemetry
2.0.1 - schnorrkel
0.9.1 - snow
0.7.2 - soketto
0.4.2 - sp-core
2.0.1 - sp-runtime
2.0.1 - sp-state-machine
0.8.1 - statrs
0.12.0 - tiny-bip39
0.8.0 - twox-hash
1.6.0 - yamux
0.8.0
- cuckoofilter
rand
0.8.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7eused byrand_chacha
0.2.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onused byrand_chacha
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0ddepends onused byrand_core
0.3.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4bdepends onused byrand_core
0.4.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dcused byrand_core
0.5.1crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7depends onrand_distr
0.2.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2depends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_hc
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73depends onused byrand_pcg
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byraw-cpuid
7.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbeb71f708fe39b2c5e98076204c3cc094ee5a4c12c4cdb119a2b72dc34164f41depends onused byrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.5.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674used byrayon-core
1.9.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4adepends onused byrdrand
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2depends onused byredox_syscall
0.1.57crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ceredox_syscall
0.2.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9depends onredox_users
0.3.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9dused byref-cast
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541dadepends onused byref-cast-impl
1.0.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2depends onused byregalloc
0.0.27crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ba8aaf5fe7cf307c6dbdaeed85478961d29e25e3bee5169e11b92fa9f027a8depends onused byregex
1.4.3crates.io↘ 4↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948aregex-automata
0.1.9crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4depends onused byregex-syntax
0.6.22crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581region
2.2.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0remove_dir_all
0.5.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7depends onused byretain_mut
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum53552c6c49e1e13f1a203ef0080ab3bbef0beb570a528993e83df057a9d9bba1ring
0.16.20crates.io↘ 7↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcrocksdb
0.15.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23d83c02c429044d58474eaf5ae31e062d0de894e21125b47437ec0edc1397e6depends onused byrpassword
5.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efbdepends onused byrust-argon2
0.8.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fbused byrustc_version
0.2.3crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onrustc-demangle
0.1.18crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232rustc-hash
1.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustc-hex
2.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6used byrustls
0.18.1crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81rustls
0.19.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980bused byrustls-native-certs
0.4.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8used byrw-stream-sink
0.2.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020ryu
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86eused bysafe-mix
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215cdepends onsalsa20
0.7.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15depends onused bysc-basic-authorship
0.8.1github.com/usetech-llc/substrate.git↘ 16↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-block-builder
0.8.1github.com/usetech-llc/substrate.git↘ 10↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsc-chain-spec
2.0.1github.com/usetech-llc/substrate.git↘ 14↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-chain-spec-derive
2.0.1github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysc-cli
0.8.1github.com/usetech-llc/substrate.git↘ 31↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- chrono
0.4.19 - fdlimit
0.2.1 - futures
0.3.12 - hex
0.4.2 - libp2p
0.34.0 - log
0.4.14 - names
0.11.0 - parity-scale-codec
1.3.6 - rand
0.7.3 - regex
1.4.3 - rpassword
5.0.1 - sc-client-api
2.0.1 - sc-keystore
2.0.1 - sc-network
0.8.1 - sc-service
0.8.1 - sc-telemetry
2.0.1 - sc-tracing
2.0.1 - serde
1.0.123 - serde_json
1.0.62 - sp-blockchain
2.0.1 - sp-core
2.0.1 - sp-keyring
2.0.1 - sp-keystore
0.8.0 - sp-panic-handler
2.0.1 - sp-runtime
2.0.1 - sp-utils
2.0.1 - sp-version
2.0.1 - structopt
0.3.21 - thiserror
1.0.23 - tiny-bip39
0.8.0 - tokio
0.2.25
- chrono
sc-client-api
2.0.1github.com/usetech-llc/substrate.git↘ 27↖ 21sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- derive_more
0.99.11 - fnv
1.0.7 - futures
0.3.12 - hash-db
0.15.2 - kvdb
0.8.0 - lazy_static
1.4.0 - log
0.4.14 - parity-scale-codec
1.3.6 - parking_lot
0.11.1 - sc-executor
0.8.1 - sp-api
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-database
2.0.1 - sp-externalities
0.8.1 - sp-inherents
2.0.1 - sp-keystore
0.8.0 - sp-runtime
2.0.1 - sp-state-machine
0.8.1 - sp-std
2.0.1 - sp-storage
2.0.1 - sp-transaction-pool
2.0.1 - sp-trie
2.0.1 - sp-utils
2.0.1 - sp-version
2.0.1 - substrate-prometheus-endpoint
0.8.1
used by- nft
3.0.0 - sc-basic-authorship
0.8.1 - sc-block-builder
0.8.1 - sc-cli
0.8.1 - sc-client-db
0.8.1 - sc-consensus
0.8.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-epochs
0.8.1 - sc-consensus-slots
0.8.1 - sc-consensus-uncles
0.8.1 - sc-finality-grandpa
0.8.1 - sc-informant
0.8.1 - sc-light
2.0.1 - sc-network
0.8.1 - sc-offchain
2.0.1 - sc-rpc
2.0.1 - sc-service
0.8.1 - sc-state-db
0.8.1 - sc-transaction-pool
2.0.1 - substrate-frame-rpc-system
2.0.1
- derive_more
sc-client-db
0.8.1github.com/usetech-llc/substrate.git↘ 23↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- blake2-rfc
0.2.18 - hash-db
0.15.2 - kvdb
0.8.0 - kvdb-memorydb
0.8.0 - kvdb-rocksdb
0.10.0 - linked-hash-map
0.5.4 - log
0.4.14 - parity-db
0.1.2 - parity-scale-codec
1.3.6 - parity-util-mem
0.8.0 - parking_lot
0.11.1 - sc-client-api
2.0.1 - sc-executor
0.8.1 - sc-state-db
0.8.1 - sp-arithmetic
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-database
2.0.1 - sp-runtime
2.0.1 - sp-state-machine
0.8.1 - sp-trie
2.0.1 - substrate-prometheus-endpoint
0.8.1
- blake2-rfc
sc-consensus
0.8.1github.com/usetech-llc/substrate.git↘ 4↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsc-consensus-aura
0.8.1github.com/usetech-llc/substrate.git↘ 24↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- derive_more
0.99.11 - futures
0.3.12 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
1.3.6 - parking_lot
0.11.1 - sc-block-builder
0.8.1 - sc-client-api
2.0.1 - sc-consensus-slots
0.8.1 - sc-telemetry
2.0.1 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-block-builder
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-consensus-aura
0.8.1 - sp-core
2.0.1 - sp-inherents
2.0.1 - sp-io
2.0.1 - sp-keystore
0.8.0 - sp-runtime
2.0.1 - sp-timestamp
2.0.1 - sp-version
2.0.1 - substrate-prometheus-endpoint
0.8.1
used by- derive_more
sc-consensus-babe
0.8.1github.com/usetech-llc/substrate.git↘ 38↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- derive_more
0.99.11 - fork-tree
2.0.1 - futures
0.3.12 - futures-timer
3.0.2 - log
0.4.14 - merlin
2.0.1 - num-bigint
0.2.6 - num-rational
0.2.4 - num-traits
0.2.14 - parity-scale-codec
1.3.6 - parking_lot
0.11.1 - pdqselect
0.1.0 - rand
0.7.3 - retain_mut
0.1.2 - sc-client-api
2.0.1 - sc-consensus-epochs
0.8.1 - sc-consensus-slots
0.8.1 - sc-consensus-uncles
0.8.1 - sc-keystore
2.0.1 - sc-telemetry
2.0.1 - schnorrkel
0.9.1 - serde
1.0.123 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-block-builder
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-consensus-babe
0.8.1 - sp-consensus-vrf
0.8.1 - sp-core
2.0.1 - sp-inherents
2.0.1 - sp-io
2.0.1 - sp-keystore
0.8.0 - sp-runtime
2.0.1 - sp-timestamp
2.0.1 - sp-utils
2.0.1 - sp-version
2.0.1 - substrate-prometheus-endpoint
0.8.1
used by- derive_more
sc-consensus-epochs
0.8.1github.com/usetech-llc/substrate.git↘ 6↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsc-consensus-slots
0.8.1github.com/usetech-llc/substrate.git↘ 19↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- futures
0.3.12 - futures-timer
3.0.2 - log
0.4.14 - parity-scale-codec
1.3.6 - parking_lot
0.11.1 - sc-client-api
2.0.1 - sc-telemetry
2.0.1 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-arithmetic
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-consensus-slots
0.8.1 - sp-core
2.0.1 - sp-inherents
2.0.1 - sp-runtime
2.0.1 - sp-state-machine
0.8.1 - sp-trie
2.0.1 - thiserror
1.0.23
- futures
sc-consensus-uncles
0.8.1github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-executor
0.8.1github.com/usetech-llc/substrate.git↘ 22↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- derive_more
0.99.11 - lazy_static
1.4.0 - libsecp256k1
0.3.5 - log
0.4.14 - parity-scale-codec
1.3.6 - parity-wasm
0.41.0 - parking_lot
0.11.1 - sc-executor-common
0.8.1 - sc-executor-wasmi
0.8.1 - sc-executor-wasmtime
0.8.1 - sp-api
2.0.1 - sp-core
2.0.1 - sp-externalities
0.8.1 - sp-io
2.0.1 - sp-panic-handler
2.0.1 - sp-runtime-interface
2.0.1 - sp-serializer
2.0.1 - sp-tasks
2.0.0 - sp-trie
2.0.1 - sp-version
2.0.1 - sp-wasm-interface
2.0.1 - wasmi
0.6.2
- derive_more
sc-executor-common
0.8.1github.com/usetech-llc/substrate.git↘ 9↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsc-executor-wasmi
0.8.1github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-executor-wasmtime
0.8.1github.com/usetech-llc/substrate.git↘ 11↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-finality-grandpa
0.8.1github.com/usetech-llc/substrate.git↘ 31↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- derive_more
0.99.11 - finality-grandpa
0.12.3 - fork-tree
2.0.1 - futures
0.3.12 - futures-timer
3.0.2 - linked-hash-map
0.5.4 - log
0.4.14 - parity-scale-codec
1.3.6 - parking_lot
0.11.1 - pin-project
0.4.27 - rand
0.7.3 - sc-block-builder
0.8.1 - sc-client-api
2.0.1 - sc-consensus
0.8.1 - sc-keystore
2.0.1 - sc-network
0.8.1 - sc-network-gossip
0.8.1 - sc-telemetry
2.0.1 - serde_json
1.0.62 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-arithmetic
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-finality-grandpa
2.0.1 - sp-inherents
2.0.1 - sp-keystore
0.8.0 - sp-runtime
2.0.1 - sp-utils
2.0.1 - substrate-prometheus-endpoint
0.8.1
used by- derive_more
sc-informant
0.8.1github.com/usetech-llc/substrate.git↘ 11↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-keystore
2.0.1github.com/usetech-llc/substrate.git↘ 13↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsc-light
2.0.1github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-network
0.8.1github.com/usetech-llc/substrate.git↘ 45↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- async-std
1.9.0 - async-trait
0.1.42 - asynchronous-codec
0.5.0 - bitflags
1.2.1 - bs58
0.4.0 - bytes
1.0.1 - derive_more
0.99.11 - either
1.6.1 - erased-serde
0.3.13 - fnv
1.0.7 - fork-tree
2.0.1 - futures
0.3.12 - futures-timer
3.0.2 - hex
0.4.2 - ip_network
0.3.4 - libp2p
0.34.0 - linked-hash-map
0.5.4 - linked_hash_set
0.1.4 - log
0.4.14 - lru
0.6.5 - nohash-hasher
0.2.0 - parity-scale-codec
1.3.6 - parking_lot
0.11.1 - pin-project
0.4.27 - prost
0.7.0 - prost-build
0.7.0 - rand
0.7.3 - sc-block-builder
0.8.1 - sc-client-api
2.0.1 - sc-peerset
2.0.1 - serde
1.0.123 - serde_json
1.0.62 - smallvec
1.6.1 - sp-arithmetic
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-runtime
2.0.1 - sp-utils
2.0.1 - substrate-prometheus-endpoint
0.8.1 - thiserror
1.0.23 - unsigned-varint
0.6.0 - void
1.0.2 - wasm-timer
0.2.5 - zeroize
1.2.0
- async-std
sc-network-gossip
0.8.1github.com/usetech-llc/substrate.git↘ 9↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-offchain
2.0.1github.com/usetech-llc/substrate.git↘ 20↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-peerset
2.0.1github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysc-proposer-metrics
0.8.1github.com/usetech-llc/substrate.git↘ 2↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysc-rpc
2.0.1github.com/usetech-llc/substrate.git↘ 27↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- futures
0.3.12 - hash-db
0.15.2 - jsonrpc-core
15.1.0 - jsonrpc-pubsub
15.1.0 - log
0.4.14 - parity-scale-codec
1.3.6 - parking_lot
0.11.1 - sc-block-builder
0.8.1 - sc-client-api
2.0.1 - sc-executor
0.8.1 - sc-keystore
2.0.1 - sc-rpc-api
0.8.1 - sc-tracing
2.0.1 - serde_json
1.0.62 - sp-api
2.0.1 - sp-blockchain
2.0.1 - sp-chain-spec
2.0.1 - sp-core
2.0.1 - sp-keystore
0.8.0 - sp-offchain
2.0.1 - sp-rpc
2.0.1 - sp-runtime
2.0.1 - sp-session
2.0.1 - sp-state-machine
0.8.1 - sp-transaction-pool
2.0.1 - sp-utils
2.0.1 - sp-version
2.0.1
used by- futures
sc-rpc-api
0.8.1github.com/usetech-llc/substrate.git↘ 17↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsc-rpc-server
2.0.1github.com/usetech-llc/substrate.git↘ 11↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-service
0.8.1github.com/usetech-llc/substrate.git↘ 56↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- directories
3.0.1 - exit-future
0.2.0 - futures
0.1.30 - futures
0.3.12 - futures-timer
3.0.2 - hash-db
0.15.2 - jsonrpc-core
15.1.0 - jsonrpc-pubsub
15.1.0 - lazy_static
1.4.0 - log
0.4.14 - parity-scale-codec
1.3.6 - parity-util-mem
0.8.0 - parking_lot
0.11.1 - pin-project
0.4.27 - rand
0.7.3 - sc-block-builder
0.8.1 - sc-chain-spec
2.0.1 - sc-client-api
2.0.1 - sc-client-db
0.8.1 - sc-executor
0.8.1 - sc-informant
0.8.1 - sc-keystore
2.0.1 - sc-light
2.0.1 - sc-network
0.8.1 - sc-offchain
2.0.1 - sc-rpc
2.0.1 - sc-rpc-server
2.0.1 - sc-telemetry
2.0.1 - sc-tracing
2.0.1 - sc-transaction-pool
2.0.1 - serde
1.0.123 - serde_json
1.0.62 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-block-builder
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-externalities
0.8.1 - sp-inherents
2.0.1 - sp-io
2.0.1 - sp-keystore
0.8.0 - sp-runtime
2.0.1 - sp-session
2.0.1 - sp-state-machine
0.8.1 - sp-tracing
2.0.1 - sp-transaction-pool
2.0.1 - sp-trie
2.0.1 - sp-utils
2.0.1 - sp-version
2.0.1 - substrate-prometheus-endpoint
0.8.1 - tempfile
3.2.0 - thiserror
1.0.23 - tracing
0.1.23 - tracing-futures
0.2.4 - wasm-timer
0.2.5
- directories
sc-state-db
0.8.1github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-telemetry
2.0.1github.com/usetech-llc/substrate.git↘ 15↖ 10sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsc-tracing
2.0.1github.com/usetech-llc/substrate.git↘ 21↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- ansi_term
0.12.1 - atty
0.2.14 - erased-serde
0.3.13 - lazy_static
1.4.0 - log
0.4.14 - once_cell
1.5.2 - parking_lot
0.11.1 - regex
1.4.3 - rustc-hash
1.1.0 - sc-telemetry
2.0.1 - sc-tracing-proc-macro
2.0.0 - serde
1.0.123 - serde_json
1.0.62 - sp-tracing
2.0.1 - thiserror
1.0.23 - tracing
0.1.23 - tracing-core
0.1.17 - tracing-log
0.1.1 - tracing-subscriber
0.2.15 - wasm-bindgen
0.2.70 - web-sys
0.3.47
- ansi_term
sc-tracing-proc-macro
2.0.0github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysc-transaction-graph
2.0.1github.com/usetech-llc/substrate.git↘ 15↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysc-transaction-pool
2.0.1github.com/usetech-llc/substrate.git↘ 19↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- futures
0.3.12 - futures-diagnose
1.0.1 - intervalier
0.4.0 - log
0.4.14 - parity-scale-codec
1.3.6 - parity-util-mem
0.8.0 - parking_lot
0.11.1 - sc-client-api
2.0.1 - sc-transaction-graph
2.0.1 - sp-api
2.0.1 - sp-blockchain
2.0.1 - sp-core
2.0.1 - sp-runtime
2.0.1 - sp-tracing
2.0.1 - sp-transaction-pool
2.0.1 - sp-utils
2.0.1 - substrate-prometheus-endpoint
0.8.1 - thiserror
1.0.23 - wasm-timer
0.2.5
used by- futures
schannel
0.1.19crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75depends onused byschnorrkel
0.9.1crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscoped-tls
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2used byscopeguard
1.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdscroll
0.10.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ecdepends onused byscroll_derive
0.10.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0depends onused bysct
0.6.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3cdepends onsecrecy
0.7.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0depends onused bysecurity-framework
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad502866817f0575705bd7be36e2b2535cc33262d493aa733a2ec862baa2bc2bdepends onused bysecurity-framework-sys
1.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51ceb04988b17b6d1dcd555390fa822ca5637b4a14e1f5099f13d351bed4d6c7depends onused bysemver
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403depends onused bysemver-parser
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used byserde
1.0.123crates.io↘ 1↖ 65sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869aedepends onused by- bincode
1.3.1 - cranelift-codegen
0.66.0 - cranelift-entity
0.66.0 - cranelift-wasm
0.66.0 - ed25519-dalek
1.0.1 - erased-serde
0.3.13 - frame-benchmarking-cli
2.0.1 - frame-executive
2.0.1 - frame-metadata
12.0.1 - frame-support
2.0.1 - frame-system
2.0.1 - futures-diagnose
1.0.1 - handlebars
3.5.2 - impl-serde
0.3.1 - indexmap
1.6.1 - jsonrpc-client-transports
15.1.0 - jsonrpc-core
15.1.0 - jsonrpc-pubsub
15.1.0 - nft
3.0.0 - nft-runtime
3.0.0 - pallet-aura
2.0.1 - pallet-balances
2.0.1 - pallet-contracts
2.0.1 - pallet-contracts-rpc
0.8.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-session
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-treasury
2.0.1 - pallet-vesting
2.0.1 - parity-multiaddr
0.11.1 - parity-scale-codec
1.3.6 - sc-chain-spec
2.0.1 - sc-cli
0.8.1 - sc-consensus-babe
0.8.1 - sc-network
0.8.1 - sc-rpc-api
0.8.1 - sc-rpc-server
2.0.1 - sc-service
0.8.1 - sc-telemetry
2.0.1 - sc-tracing
2.0.1 - sc-transaction-graph
2.0.1 - schnorrkel
0.9.1 - serde_json
1.0.62 - sp-application-crypto
2.0.1 - sp-arithmetic
2.0.1 - sp-chain-spec
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-finality-grandpa
2.0.1 - sp-keystore
0.8.0 - sp-rpc
2.0.1 - sp-runtime
2.0.1 - sp-serializer
2.0.1 - sp-storage
2.0.1 - sp-transaction-pool
2.0.1 - sp-version
2.0.1 - substrate-frame-rpc-system
2.0.1 - toml
0.5.8 - tracing-serde
0.1.2 - tracing-subscriber
0.2.15 - wasmtime-environ
0.19.0 - wasmtime-profiling
0.19.0
- bincode
serde_derive
1.0.123crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31depends onserde_json
1.0.62crates.io↘ 3↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486depends onused by- futures-diagnose
1.0.1 - handlebars
3.5.2 - jsonrpc-client-transports
15.1.0 - jsonrpc-core
15.1.0 - nft
3.0.0 - sc-chain-spec
2.0.1 - sc-cli
0.8.1 - sc-finality-grandpa
0.8.1 - sc-keystore
2.0.1 - sc-network
0.8.1 - sc-peerset
2.0.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-rpc-server
2.0.1 - sc-service
0.8.1 - sc-telemetry
2.0.1 - sc-tracing
2.0.1 - sp-chain-spec
2.0.1 - sp-serializer
2.0.1 - tracing-subscriber
0.2.15
- futures-diagnose
sha-1
0.8.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163dfsha-1
0.9.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4b312c3731e3fe78a185e6b9b911a7aa715b8e31cce117975219aab2acf285dused bysha2
0.8.2crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69sha2
0.9.3crates.io↘ 5↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12desha3
0.9.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809used bysharded-slab
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3depends onused byshlex
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2used bysignal-hook
0.3.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum780f5e3fe0c66f67197236097d89de1e86216f1f6fdeaf47c442f854ab46c240depends onused bysignal-hook-registry
1.3.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6depends onused bysignature
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f0242b8e50dd9accdd56170e94ca1ebd223b098eb9c83539a6e367d0f36ae68used bysimba
0.1.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb931b1367faadea6b1ab1c306a860ec17aaa5fa39f367d0c744e69d971a1fb2used byslab
0.4.2crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8smallvec
0.6.14crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0depends onused bysmallvec
1.6.1crates.io↘ 0↖ 27sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604eused by- cranelift-codegen
0.66.0 - cranelift-frontend
0.66.0 - frame-support
2.0.1 - kvdb
0.8.0 - kvdb-rocksdb
0.10.0 - libp2p
0.34.0 - libp2p-core
0.27.1 - libp2p-floodsub
0.27.0 - libp2p-gossipsub
0.27.0 - libp2p-identify
0.27.0 - libp2p-kad
0.28.1 - libp2p-mdns
0.28.1 - libp2p-mplex
0.27.1 - libp2p-request-response
0.9.1 - libp2p-swarm
0.27.2 - multistream-select
0.10.1 - nft-runtime
3.0.0 - pallet-transaction-payment
2.0.1 - parity-util-mem
0.8.0 - parking_lot_core
0.7.2 - parking_lot_core
0.8.3 - regalloc
0.0.27 - sc-network
0.8.1 - sp-state-machine
0.8.1 - tracing-subscriber
0.2.15 - trie-db
0.22.3 - wasmtime
0.19.0
- cranelift-codegen
snow
0.7.2crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum795dd7aeeee24468e5a32661f6d27f7b5cbed802031b2d7640c7b10f8fb2dd50depends onused bysocket2
0.3.19crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6edepends onsoketto
0.4.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88used bysp-allocator
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-api
2.0.1github.com/usetech-llc/substrate.git↘ 9↖ 32sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused by- frame-benchmarking
2.0.1 - frame-system-rpc-runtime-api
2.0.1 - nft
3.0.0 - nft-runtime
3.0.0 - pallet-contracts-rpc
0.8.1 - pallet-contracts-rpc-runtime-api
0.8.1 - pallet-transaction-payment-rpc
2.0.1 - pallet-transaction-payment-rpc-runtime-api
2.0.1 - sc-basic-authorship
0.8.1 - sc-block-builder
0.8.1 - sc-client-api
2.0.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-slots
0.8.1 - sc-executor
0.8.1 - sc-finality-grandpa
0.8.1 - sc-light
2.0.1 - sc-offchain
2.0.1 - sc-rpc
2.0.1 - sc-service
0.8.1 - sc-transaction-pool
2.0.1 - sp-block-builder
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-consensus-aura
0.8.1 - sp-consensus-babe
0.8.1 - sp-finality-grandpa
2.0.1 - sp-offchain
2.0.1 - sp-session
2.0.1 - sp-timestamp
2.0.1 - sp-transaction-pool
2.0.1 - substrate-frame-rpc-system
2.0.1
- frame-benchmarking
sp-api-proc-macro
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysp-application-crypto
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 12sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-arithmetic
2.0.1github.com/usetech-llc/substrate.git↘ 6↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-authorship
2.0.1github.com/usetech-llc/substrate.git↘ 4↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-block-builder
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-blockchain
2.0.1github.com/usetech-llc/substrate.git↘ 11↖ 23sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused by- nft
3.0.0 - pallet-contracts-rpc
0.8.1 - pallet-transaction-payment-rpc
2.0.1 - sc-basic-authorship
0.8.1 - sc-block-builder
0.8.1 - sc-cli
0.8.1 - sc-client-api
2.0.1 - sc-client-db
0.8.1 - sc-consensus
0.8.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-epochs
0.8.1 - sc-consensus-slots
0.8.1 - sc-finality-grandpa
0.8.1 - sc-informant
0.8.1 - sc-light
2.0.1 - sc-network
0.8.1 - sc-rpc
2.0.1 - sc-service
0.8.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - sp-transaction-pool
2.0.1 - substrate-frame-rpc-system
2.0.1
- nft
sp-chain-spec
2.0.1github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-consensus
0.8.1github.com/usetech-llc/substrate.git↘ 19↖ 15sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-consensus-aura
0.8.1github.com/usetech-llc/substrate.git↘ 7↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-consensus-babe
0.8.1github.com/usetech-llc/substrate.git↘ 13↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-consensus-slots
0.8.1github.com/usetech-llc/substrate.git↘ 2↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-consensus-vrf
0.8.1github.com/usetech-llc/substrate.git↘ 5↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-core
2.0.1github.com/usetech-llc/substrate.git↘ 37↖ 60sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends on- base58
0.1.0 - blake2-rfc
0.2.18 - byteorder
1.4.2 - dyn-clonable
0.9.0 - ed25519-dalek
1.0.1 - futures
0.3.12 - hash-db
0.15.2 - hash256-std-hasher
0.15.2 - hex
0.4.2 - impl-serde
0.3.1 - lazy_static
1.4.0 - libsecp256k1
0.3.5 - log
0.4.14 - merlin
2.0.1 - num-traits
0.2.14 - parity-scale-codec
1.3.6 - parity-util-mem
0.8.0 - parking_lot
0.11.1 - primitive-types
0.8.0 - rand
0.7.3 - regex
1.4.3 - schnorrkel
0.9.1 - secrecy
0.7.0 - serde
1.0.123 - sha2
0.9.3 - sp-debug-derive
2.0.1 - sp-externalities
0.8.1 - sp-runtime-interface
2.0.1 - sp-std
2.0.1 - sp-storage
2.0.1 - substrate-bip39
0.4.2 - thiserror
1.0.23 - tiny-bip39
0.8.0 - tiny-keccak
2.0.2 - twox-hash
1.6.0 - wasmi
0.6.2 - zeroize
1.2.0
used by- frame-benchmarking-cli
2.0.1 - frame-executive
2.0.1 - frame-metadata
12.0.1 - frame-support
2.0.1 - frame-system
2.0.1 - frame-system-benchmarking
2.0.1 - nft
3.0.0 - nft-runtime
3.0.0 - pallet-contracts
2.0.1 - pallet-contracts-rpc
0.8.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-session
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-transaction-payment-rpc
2.0.1 - sc-basic-authorship
0.8.1 - sc-block-builder
0.8.1 - sc-chain-spec
2.0.1 - sc-cli
0.8.1 - sc-client-api
2.0.1 - sc-client-db
0.8.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-slots
0.8.1 - sc-consensus-uncles
0.8.1 - sc-executor
0.8.1 - sc-executor-common
0.8.1 - sc-executor-wasmi
0.8.1 - sc-executor-wasmtime
0.8.1 - sc-finality-grandpa
0.8.1 - sc-keystore
2.0.1 - sc-light
2.0.1 - sc-network
0.8.1 - sc-offchain
2.0.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-service
0.8.1 - sc-state-db
0.8.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - sp-allocator
2.0.1 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-consensus
0.8.1 - sp-consensus-babe
0.8.1 - sp-consensus-vrf
0.8.1 - sp-finality-grandpa
2.0.1 - sp-inherents
2.0.1 - sp-io
2.0.1 - sp-keyring
2.0.1 - sp-keystore
0.8.0 - sp-offchain
2.0.1 - sp-rpc
2.0.1 - sp-runtime
2.0.1 - sp-sandbox
0.8.1 - sp-session
2.0.1 - sp-state-machine
0.8.1 - sp-tasks
2.0.0 - sp-trie
2.0.1 - substrate-frame-rpc-system
2.0.1
- base58
sp-database
2.0.1github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-debug-derive
2.0.1github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-externalities
0.8.1github.com/usetech-llc/substrate.git↘ 4↖ 11sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-finality-grandpa
2.0.1github.com/usetech-llc/substrate.git↘ 10↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-inherents
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 21sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused by- frame-support
2.0.1 - nft
3.0.0 - nft-runtime
3.0.0 - pallet-aura
2.0.1 - pallet-authorship
2.0.1 - pallet-timestamp
2.0.1 - sc-basic-authorship
0.8.1 - sc-block-builder
0.8.1 - sc-client-api
2.0.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-slots
0.8.1 - sc-consensus-uncles
0.8.1 - sc-finality-grandpa
0.8.1 - sc-service
0.8.1 - sp-authorship
2.0.1 - sp-block-builder
2.0.1 - sp-consensus
0.8.1 - sp-consensus-aura
0.8.1 - sp-consensus-babe
0.8.1 - sp-timestamp
2.0.1
- frame-support
sp-io
2.0.1github.com/usetech-llc/substrate.git↘ 17↖ 18sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused by- frame-benchmarking
2.0.1 - frame-executive
2.0.1 - frame-support
2.0.1 - frame-system
2.0.1 - pallet-contracts
2.0.1 - pallet-nft
3.0.0 - pallet-session
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-executor
0.8.1 - sc-service
0.8.1 - sp-application-crypto
2.0.1 - sp-runtime
2.0.1 - sp-sandbox
0.8.1 - sp-tasks
2.0.0
- frame-benchmarking
sp-keyring
2.0.1github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysp-keystore
0.8.0github.com/usetech-llc/substrate.git↘ 10↖ 12sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-offchain
2.0.1github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-panic-handler
2.0.1github.com/usetech-llc/substrate.git↘ 1↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-rpc
2.0.1github.com/usetech-llc/substrate.git↘ 2↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-runtime
2.0.1github.com/usetech-llc/substrate.git↘ 14↖ 68sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused by- frame-benchmarking
2.0.1 - frame-benchmarking-cli
2.0.1 - frame-executive
2.0.1 - frame-support
2.0.1 - frame-system
2.0.1 - frame-system-benchmarking
2.0.1 - nft
3.0.0 - nft-runtime
3.0.0 - pallet-aura
2.0.1 - pallet-authorship
2.0.1 - pallet-balances
2.0.1 - pallet-contracts
2.0.1 - pallet-contracts-primitives
2.0.1 - pallet-contracts-rpc
0.8.1 - pallet-contracts-rpc-runtime-api
0.8.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-randomness-collective-flip
2.0.1 - pallet-session
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-transaction-payment-rpc
2.0.1 - pallet-transaction-payment-rpc-runtime-api
2.0.1 - pallet-treasury
2.0.1 - pallet-vesting
2.0.1 - sc-basic-authorship
0.8.1 - sc-block-builder
0.8.1 - sc-chain-spec
2.0.1 - sc-cli
0.8.1 - sc-client-api
2.0.1 - sc-client-db
0.8.1 - sc-consensus
0.8.1 - sc-consensus-aura
0.8.1 - sc-consensus-babe
0.8.1 - sc-consensus-epochs
0.8.1 - sc-consensus-slots
0.8.1 - sc-consensus-uncles
0.8.1 - sc-finality-grandpa
0.8.1 - sc-informant
0.8.1 - sc-light
2.0.1 - sc-network
0.8.1 - sc-network-gossip
0.8.1 - sc-offchain
2.0.1 - sc-rpc
2.0.1 - sc-rpc-api
0.8.1 - sc-rpc-server
2.0.1 - sc-service
0.8.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - sp-api
2.0.1 - sp-authorship
2.0.1 - sp-block-builder
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-consensus-aura
0.8.1 - sp-consensus-babe
0.8.1 - sp-consensus-slots
0.8.1 - sp-consensus-vrf
0.8.1 - sp-finality-grandpa
2.0.1 - sp-keyring
2.0.1 - sp-offchain
2.0.1 - sp-session
2.0.1 - sp-staking
2.0.1 - sp-timestamp
2.0.1 - sp-transaction-pool
2.0.1 - sp-version
2.0.1 - substrate-frame-rpc-system
2.0.1
- frame-benchmarking
sp-runtime-interface
2.0.1github.com/usetech-llc/substrate.git↘ 10↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-runtime-interface-proc-macro
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysp-sandbox
0.8.1github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysp-serializer
2.0.1github.com/usetech-llc/substrate.git↘ 2↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-session
2.0.1github.com/usetech-llc/substrate.git↘ 6↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-staking
2.0.1github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-state-machine
0.8.1github.com/usetech-llc/substrate.git↘ 15↖ 13sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-std
2.0.1github.com/usetech-llc/substrate.git↘ 0↖ 51sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused by- frame-benchmarking
2.0.1 - frame-executive
2.0.1 - frame-metadata
12.0.1 - frame-support
2.0.1 - frame-system
2.0.1 - frame-system-benchmarking
2.0.1 - nft-runtime
3.0.0 - pallet-aura
2.0.1 - pallet-authorship
2.0.1 - pallet-balances
2.0.1 - pallet-contracts
2.0.1 - pallet-contracts-primitives
2.0.1 - pallet-contracts-rpc-runtime-api
0.8.1 - pallet-grandpa
2.0.1 - pallet-nft
3.0.0 - pallet-randomness-collective-flip
2.0.1 - pallet-session
2.0.1 - pallet-sudo
2.0.1 - pallet-timestamp
2.0.1 - pallet-transaction-payment
2.0.1 - pallet-treasury
2.0.1 - pallet-vesting
2.0.1 - sc-client-api
2.0.1 - sp-allocator
2.0.1 - sp-api
2.0.1 - sp-application-crypto
2.0.1 - sp-arithmetic
2.0.1 - sp-authorship
2.0.1 - sp-block-builder
2.0.1 - sp-consensus
0.8.1 - sp-consensus-aura
0.8.1 - sp-consensus-babe
0.8.1 - sp-consensus-vrf
0.8.1 - sp-core
2.0.1 - sp-externalities
0.8.1 - sp-finality-grandpa
2.0.1 - sp-inherents
2.0.1 - sp-io
2.0.1 - sp-runtime
2.0.1 - sp-runtime-interface
2.0.1 - sp-sandbox
0.8.1 - sp-session
2.0.1 - sp-staking
2.0.1 - sp-state-machine
0.8.1 - sp-storage
2.0.1 - sp-tasks
2.0.0 - sp-timestamp
2.0.1 - sp-tracing
2.0.1 - sp-trie
2.0.1 - sp-version
2.0.1 - sp-wasm-interface
2.0.1
- frame-benchmarking
sp-storage
2.0.1github.com/usetech-llc/substrate.git↘ 6↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-tasks
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fused bysp-timestamp
2.0.1github.com/usetech-llc/substrate.git↘ 7↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-tracing
2.0.1github.com/usetech-llc/substrate.git↘ 6↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-transaction-pool
2.0.1github.com/usetech-llc/substrate.git↘ 9↖ 11sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-trie
2.0.1github.com/usetech-llc/substrate.git↘ 7↖ 9sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsp-utils
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 14sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-version
2.0.1github.com/usetech-llc/substrate.git↘ 5↖ 12sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fsp-wasm-interface
2.0.1github.com/usetech-llc/substrate.git↘ 4↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fspin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused bystable_deref_trait
1.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fstatrs
0.12.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcce16f6de653e88beca7bd13780d08e09d4489dbca1f9210e041bc4852481382depends onused bystream-cipher
0.7.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc80e15f898d8d8f25db24c253ea615cc14acf418ff307822995814e7d42cfa89depends onstring
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6ddepends onused bystrsim
0.8.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6aused bystructopt
0.3.21crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28cstructopt-derive
0.4.14crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90used bystrum
0.16.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6138f8f88a16d90134763314e3fc76fa3ed6a7db4725d6acf9a3ef95a3188d22depends onused bystrum_macros
0.16.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81used bysubstrate-bip39
0.4.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236used bysubstrate-build-script-utils
2.0.1github.com/usetech-llc/substrate.git↘ 1↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysubstrate-frame-rpc-system
2.0.1github.com/usetech-llc/substrate.git↘ 16↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onused bysubstrate-prometheus-endpoint
0.8.1github.com/usetech-llc/substrate.git↘ 7↖ 13sourcegit+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440fdepends onsubstrate-wasm-builder-runner
1.0.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2a965994514ab35d3893e9260245f2947fd1981cdd4fffd2c6e6d1a9ce02e6aused bysubtle
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8eeused bysubtle
2.4.0crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2syn
1.0.60crates.io↘ 3↖ 41sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081used by- asn1_der_derive
0.1.2 - async-trait
0.1.42 - ctor
0.1.19 - derive_more
0.99.11 - dyn-clonable-impl
0.9.0 - enumflags2_derive
0.6.4 - failure_derive
0.1.8 - frame-support-procedural
2.0.1 - frame-support-procedural-tools
2.0.1 - frame-support-procedural-tools-derive
2.0.1 - futures-macro
0.3.12 - impl-trait-for-tuples
0.1.3 - impl-trait-for-tuples
0.2.1 - jsonrpc-derive
15.1.0 - libp2p-core-derive
0.21.0 - minicbor-derive
0.6.1 - multihash-derive
0.7.1 - pallet-contracts-proc-macro
0.1.0 - parity-scale-codec-derive
1.2.2 - parity-util-mem-derive
0.1.0 - pest_generator
2.1.3 - pin-project-internal
0.4.27 - pin-project-internal
1.0.5 - proc-macro-error
1.0.4 - prost-derive
0.7.0 - ref-cast-impl
1.0.6 - sc-chain-spec-derive
2.0.1 - sc-tracing-proc-macro
2.0.0 - scroll_derive
0.10.5 - serde_derive
1.0.123 - sp-api-proc-macro
2.0.1 - sp-debug-derive
2.0.1 - sp-runtime-interface-proc-macro
2.0.1 - structopt-derive
0.4.14 - strum_macros
0.16.0 - synstructure
0.12.4 - thiserror-impl
1.0.23 - tracing-attributes
0.1.12 - wasm-bindgen-backend
0.2.70 - wasm-bindgen-macro-support
0.2.70 - zeroize_derive
1.0.1
- asn1_der_derive
synstructure
0.12.4crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701take_mut
0.2.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60used bytarget-lexicon
0.10.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19dtempfile
3.2.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22termcolor
1.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4depends onused bytextwrap
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060depends onused bythiserror
1.0.23crates.io↘ 1↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146depends onused by- cranelift-codegen
0.66.0 - cranelift-wasm
0.66.0 - flexi_logger
0.15.12 - libp2p-core
0.27.1 - libp2p-yamux
0.30.0 - prometheus
0.10.0 - sc-cli
0.8.1 - sc-consensus-slots
0.8.1 - sc-executor-common
0.8.1 - sc-network
0.8.1 - sc-service
0.8.1 - sc-state-db
0.8.1 - sc-tracing
2.0.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - sp-allocator
2.0.1 - sp-api
2.0.1 - sp-blockchain
2.0.1 - sp-consensus
0.8.1 - sp-core
2.0.1 - sp-inherents
2.0.1 - sp-state-machine
0.8.1 - sp-transaction-pool
2.0.1 - tiny-bip39
0.8.0 - wasmtime-debug
0.19.0 - wasmtime-environ
0.19.0 - wasmtime-jit
0.19.0 - wasmtime-runtime
0.19.0 - which
4.0.2
- cranelift-codegen
thiserror-impl
1.0.23crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1depends onused bythread_local
1.1.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbddepends onthreadpool
1.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onused bytime
0.1.44crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255used bytiny-bip39
0.8.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9e44c4759bae7f1032e286a7ef990bd9ed23fe831b7eeba0beb97484c2e59b8depends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinyvec
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023depends onused bytinyvec_macros
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5cused bytokio
0.1.22crates.io↘ 16↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6depends ontokio
0.2.25crates.io↘ 14↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092depends ontokio-buf
0.1.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46depends onused bytokio-codec
0.1.2crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976bdepends ontokio-current-thread
0.1.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20edepends onused bytokio-executor
0.1.10crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671depends ontokio-fs
0.1.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4used bytokio-io
0.1.13crates.io↘ 3↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674depends ontokio-named-pipes
0.1.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d282d483052288b2308ba5ee795f5673b159c9bdf63c385a05609da782a5eaeused bytokio-reactor
0.1.12crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351depends ontokio-rustls
0.14.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889aused bytokio-service
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162depends onused bytokio-sync
0.1.8crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumedfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87deedepends ontokio-tcp
0.1.4crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72used bytokio-threadpool
0.1.18crates.io↘ 9↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89depends ontokio-timer
0.2.13crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296used bytokio-udp
0.1.6crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82depends onused bytokio-uds
0.2.7crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0depends ontokio-util
0.3.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499used bytoml
0.5.8crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaadepends ontower-service
0.3.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6used bytracing
0.1.23crates.io↘ 5↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d40a22fd029e33300d8d89a5cc8ffce18bb7c587662f54629e94c9de5487f3tracing-attributes
0.1.12crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43f080ea7e4107844ef4766459426fa2d5c1ada2e47edba05dc7fa99d9629f47depends onused bytracing-core
0.1.17crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5fdepends ontracing-futures
0.2.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4cdepends onused bytracing-log
0.1.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e0f8c7178e13481ff6765bd169b33e8d554c5d2bbede5e32c356194be02b9b9tracing-serde
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28bdepends onused bytracing-subscriber
0.2.15crates.io↘ 14↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1fa8f0c8f4c594e4fc9debc1990deab13238077271ba84dd853d54902ee3401depends ontrie-db
0.22.3crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec051edf7f0fc9499a2cb0947652cab2148b9d7f61cee7605e312e9f970dacaftrie-root
0.16.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cddepends ontwox-hash
1.6.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59used bytypenum
1.12.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33uint
0.9.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume11fe9a9348741cf134085ad57c249508345fe16411b3d7fb4ff2da2f1d6382eunicase
2.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6depends onunicode-bidi
0.3.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5depends onunicode-normalization
0.1.17crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaefdepends onunicode-segmentation
1.7.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796used byunicode-width
0.1.8crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3used byunicode-xid
0.2.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564universal-hash
0.4.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402depends onused byunsigned-varint
0.5.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35used byunsigned-varint
0.6.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2unsigned-varint
0.7.0crates.io↘ 4↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7funtrusted
0.7.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aurl
1.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355aurl
2.2.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976evalue-bag
1.0.0-alpha.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6b676010e055c99033117c2343b33a40a30b91fecd6c49055ac9cd2d6c305ab1depends onused byvcpkg
0.2.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fbused byvec_map
0.8.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191used byvec-arena
1.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061dversion_check
0.9.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aedvoid
1.0.2crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887dwaker-fn
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceecawant
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230depends onused bywant
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0depends onused bywasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.10.0+wasi-snapshot-preview1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasm-bindgen
0.2.70crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433bedepends onwasm-bindgen-backend
0.2.70crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7depends onwasm-bindgen-futures
0.4.20crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3de431a2910c86679c34283a33f66f4e4abd7e0aec27b6669060148872aadf94wasm-bindgen-macro
0.2.70crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2cused bywasm-bindgen-macro-support
0.2.70crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385used bywasm-timer
0.2.5crates.io↘ 7↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onused by- libp2p
0.34.0 - libp2p-gossipsub
0.27.0 - libp2p-identify
0.27.0 - libp2p-kad
0.28.1 - libp2p-ping
0.27.0 - libp2p-request-response
0.9.1 - libp2p-swarm
0.27.2 - sc-informant
0.8.1 - sc-network
0.8.1 - sc-network-gossip
0.8.1 - sc-peerset
2.0.1 - sc-service
0.8.1 - sc-telemetry
2.0.1 - sc-transaction-graph
2.0.1 - sc-transaction-pool
2.0.1 - sp-consensus
0.8.1 - sp-timestamp
2.0.1
- libp2p
wasmi
0.6.2crates.io↘ 6↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf617d864d25af3587aa745529f7aaa541066c876d57e050c0d0c85c61c92affdepends onwasmi-validation
0.3.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea78c597064ba73596099281e2f4cfc019075122a65cdda3205af94f0b264d93depends onwasmparser
0.57.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6used bywasmparser
0.59.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma950e6a618f62147fd514ff445b2a0b53120d382751960797f85f058c7eda9b9wasmtime
0.19.0crates.io↘ 17↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cd3c4f449382779ef6e0a7c3ec6752ae614e20a42e4100000c3efdc973100e2depends onused bywasmtime-debug
0.19.0crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e634af9067a3af6cf2c7d33dc3b84767ddaf5d010ba68e80eecbcea73d4a349depends onwasmtime-environ
0.19.0crates.io↘ 23↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08f85619a94ee4034bd5bb87fc3dcf71fd2237b81c840809da1201061eec9ab3depends on- anyhow
1.0.38 - base64
0.12.3 - bincode
1.3.1 - cfg-if
0.1.10 - cranelift-codegen
0.66.0 - cranelift-entity
0.66.0 - cranelift-frontend
0.66.0 - cranelift-wasm
0.66.0 - directories
2.0.2 - errno
0.2.7 - file-per-thread-logger
0.1.4 - indexmap
1.6.1 - libc
0.2.86 - log
0.4.14 - more-asserts
0.2.1 - rayon
1.5.0 - serde
1.0.123 - sha2
0.8.2 - thiserror
1.0.23 - toml
0.5.8 - wasmparser
0.59.0 - winapi
0.3.9 - zstd
0.5.4+zstd.1.4.7
- anyhow
wasmtime-jit
0.19.0crates.io↘ 21↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume914c013c7a9f15f4e429d5431f2830fb8adb56e40567661b69c5ec1d645be23depends on- anyhow
1.0.38 - cfg-if
0.1.10 - cranelift-codegen
0.66.0 - cranelift-entity
0.66.0 - cranelift-frontend
0.66.0 - cranelift-native
0.66.0 - cranelift-wasm
0.66.0 - gimli
0.21.0 - log
0.4.14 - more-asserts
0.2.1 - object
0.20.0 - region
2.2.0 - target-lexicon
0.10.0 - thiserror
1.0.23 - wasmparser
0.59.0 - wasmtime-debug
0.19.0 - wasmtime-environ
0.19.0 - wasmtime-obj
0.19.0 - wasmtime-profiling
0.19.0 - wasmtime-runtime
0.19.0 - winapi
0.3.9
used by- anyhow
wasmtime-obj
0.19.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume81d8e02e9bc9fe2da9b6d48bbc217f96e089f7df613f11a28a3958abc44641edepends onused bywasmtime-profiling
0.19.0crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e8d4d1af8dd5f7096cfcc89dd668d358e52980c38cce199643372ffd6590e27depends onwasmtime-runtime
0.19.0crates.io↘ 13↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a25f140bbbaadb07c531cba99ce1a966dba216138dc1b2a0ddecec851a01a93depends onwast
33.0.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d04fe175c7f78214971293e7d8875673804e736092206a3a4544dbc12811c1bdepends onused bywat
1.0.34crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ec9c6ee01ae07a26adadcdfed22c7a97e0b8cbee9c06e0e96076ece5aeb5cfedepends onused byweb-sys
0.3.47crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3depends onwebpki
0.21.4crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4eadepends onwebpki-roots
0.21.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376depends onused bywepoll-sys
3.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ffdepends onused bywhich
3.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724depends onused bywhich
4.0.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87c14ef7e1b8b8ecfc75d5eca37949410046e66f15d185c01d70824f1f8111efdepends onused bywinapi
0.2.8crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087awinapi
0.3.9crates.io↘ 2↖ 37sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.11.0 - ansi_term
0.12.1 - async-io
1.3.1 - async-process
1.0.2 - atty
0.2.14 - chrono
0.4.19 - dirs-sys
0.3.5 - errno
0.2.7 - fs-swap
0.2.5 - if-addrs
0.6.5 - if-watch
0.1.8 - libloading
0.5.2 - memmap
0.7.0 - mio-named-pipes
0.1.7 - miow
0.3.6 - net2
0.2.37 - parity-tokio-ipc
0.4.0 - parity-util-mem
0.8.0 - parking_lot_core
0.6.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.3 - polling
2.0.2 - rand
0.4.6 - region
2.2.0 - remove_dir_all
0.5.3 - ring
0.16.20 - rpassword
5.0.1 - schannel
0.1.19 - socket2
0.3.19 - tempfile
3.2.0 - time
0.1.44 - tokio
0.2.25 - wasmtime
0.19.0 - wasmtime-environ
0.19.0 - wasmtime-jit
0.19.0 - wasmtime-runtime
0.19.0 - winapi-util
0.1.5
- ansi_term
winapi-build
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bcwinapi-i686-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6used bywinapi-util
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178depends onused bywinapi-x86_64-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183fused byws2_32-sys
0.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5edepends onused byx25519-dalek
1.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc614d95359fd7afc321b66d2107ede58b246b844cf5d8a0adcca413e439f088used byyamux
0.8.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9aeb8c4043cac71c3c299dff107171c220d179492350ea198e109a414981b83cused byyansi
0.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71used byzeroize
1.2.0crates.io↘ 1↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36depends onzeroize_derive
1.0.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16used byzstd
0.5.4+zstd.1.4.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910depends onused byzstd-safe
2.0.6+zstd.1.4.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49edepends onused byzstd-sys
1.4.18+zstd.1.4.7crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81used by
README.mddiffbeforeafterboth--- a/README.md
+++ b/README.md
@@ -4,44 +4,55 @@
## Project Description
-The NFT Pallet is the core of NFT functionality. Like ERC-721 standard in Ethereum ecosystem, this pallet provides the basement for creating collections of unique non-divisible things, also called Non Fungible Tokens (NFTs), minting NFT of a given Collection, and managing their ownership.
+The NFT Pallet is the core of NFT functionality. Like ERC-721 standard in Ethereum ecosystem, this pallet provides the
+basement for creating collections of unique non-divisible things, also called Non Fungible Tokens (NFTs), minting NFT of
+a given Collection, and managing their ownership.
-The pallet also enables storing NFT properties. Though (according to ERC-721) NFT properties belong to logic of a concrete application that operates a Collection, so purposefully the NFT Tracking Module does not have any knowledge about properties except their byte size leaving application logic out to be controlled by Smart Contracts.
+The pallet also enables storing NFT properties. Though (according to ERC-721) NFT properties belong to logic of a
+concrete application that operates a Collection, so purposefully the NFT Tracking Module does not have any knowledge
+about properties except their byte size leaving application logic out to be controlled by Smart Contracts.
The NFT Chain also provides:
-* Smart Contracts Pallet and example smart contract that interacts with NFT Runtime
-* ERC-1155 Functionality (currently PoC as Re-Fungible tokens, i.e. items that are still unique, but that can be split between multiple users)
-* Variety of economic options for dapp producers to choose from to create freemium games and other ways to attract users. As a step one, we implemented an economic model when a collection sponsor can be set to pay for collection Transfer transactions.
+- Smart Contracts Pallet and example smart contract that interacts with NFT Runtime
+- ERC-1155 Functionality (currently PoC as Re-Fungible tokens, i.e. items that are still unique, but that can be split
+ between multiple users)
+- Variety of economic options for dapp producers to choose from to create freemium games and other ways to attract
+ users. As a step one, we implemented an economic model when a collection sponsor can be set to pay for collection
+ Transfer transactions.
Wider NFT Ecosystem (most of it was developed during Hackusama):
-* [SubstraPunks Game hosted on IPFS](https://github.com/usetech-llc/substrapunks)
-* [NFT Wallet and UI](https://uniqueapps.usetech.com/#/nft)
-* [NFT Asset for Unity Framework](https://github.com/usetech-llc/nft_unity)
+- [SubstraPunks Game hosted on IPFS](https://github.com/usetech-llc/substrapunks)
+- [NFT Wallet and UI](https://uniqueapps.usetech.com/#/nft)
+- [NFT Asset for Unity Framework](https://github.com/usetech-llc/nft_unity)
+
Please see our [walk-thorugh instructions](doc/hackusama_walk_through.md) to try everything out!
## Hackusama Update
During the Kusama Hackaphon the following changes were made:
-* Enabled Smart Contracts Pallet
-* Enabled integration between Smart Contracts and NFT Pallet (required special edition of RC4 Substrate version)
-* Fixed misc. bugs in NFT Pallet
-* Deployed NFT TestNet. Public node available at wss://unique.usetech.com, custom UI types - see below in this README.
-* New Features:
- * Re-Fungible Token Mode
- * Off-Chain Schema to store token image URLs
- * Alternative economic model
- * White Lists and Public Mint Permission
-* Use example: [SubstraPunks Game](https://github.com/usetech-llc/substrapunks), fully hosted on IPFS and NFT Testnet Blockchain.
+- Enabled Smart Contracts Pallet
+- Enabled integration between Smart Contracts and NFT Pallet (required special edition of RC4 Substrate version)
+- Fixed misc. bugs in NFT Pallet
+- Deployed NFT TestNet. Public node available at wss://unique.usetech.com, custom UI types - see below in this README.
+- New Features:
+ - Re-Fungible Token Mode
+ - Off-Chain Schema to store token image URLs
+ - Alternative economic model
+ - White Lists and Public Mint Permission
+- Use example: [SubstraPunks Game](https://github.com/usetech-llc/substrapunks), fully hosted on IPFS and NFT Testnet
+ Blockchain.
+
## Application Development
If you are building an application that operates NFT tokens, use [this document](doc/application_development.md).
## Building
-Building NFT chain requires special versions of Rust and toolchain. We don't use the most recent versions of everything so that we can keep the builds stable.
+Building NFT chain requires special versions of Rust and toolchain. We don't use the most recent versions of everything
+so that we can keep the builds stable.
1. Install Rust:
@@ -60,7 +71,7 @@
rustup default nightly-2021-01-27
```
-4. Add wasm target for default toolchain:
+4. Add wasm target for nightly toolchain:
```bash
rustup target add wasm32-unknown-unknown --toolchain nightly-2021-01-27
@@ -84,11 +95,17 @@
cargo run -- --dev
```
-Detailed logs may be shown by running the node with the following environment variables set: `RUST_LOG=debug RUST_BACKTRACE=1 cargo run -- --dev`.
+Detailed logs may be shown by running the node with the following environment variables set:
+`RUST_LOG=debug RUST_BACKTRACE=1 cargo run -- --dev`.
-If you want to see the multi-node consensus algorithm in action locally, then you can create a local testnet with two validator nodes for Alice and Bob, who are the initial authorities of the genesis chain that have been endowed with testnet units. Give each node a name and expose them so they are listed on the Polkadot [telemetry site](https://telemetry.polkadot.io/#/Local%20Testnet). You'll need two terminal windows open.
+If you want to see the multi-node consensus algorithm in action locally, then you can create a local testnet with two
+validator nodes for Alice and Bob, who are the initial authorities of the genesis chain that have been endowed with
+testnet units. Give each node a name and expose them so they are listed on the Polkadot
+[telemetry site](https://telemetry.polkadot.io/#/Local%20Testnet). You'll need two terminal windows open.
-We'll start Alice's substrate node first on default TCP port 30333 with her chain database stored locally at `/tmp/alice`. The bootnode ID of her node is `QmQZ8TjTqeDj3ciwr93EJ95hxfDsb9pEYDizUAbWpigtQN`, which is generated from the `--node-key` value that we specify below:
+We'll start Alice's substrate node first on default TCP port 30333 with her chain database stored locally at
+`/tmp/alice`. The bootnode ID of her node is `QmQZ8TjTqeDj3ciwr93EJ95hxfDsb9pEYDizUAbWpigtQN`, which is generated from
+the `--node-key` value that we specify below:
```bash
cargo run -- \
@@ -100,7 +117,9 @@
--validator
```
-In the second terminal, we'll start Bob's substrate node on a different TCP port of 30334, and with his chain database stored locally at `/tmp/bob`. We'll specify a value for the `--bootnodes` option that will connect his node to Alice's bootnode ID on TCP port 30333:
+In the second terminal, we'll start Bob's substrate node on a different TCP port of 30334, and with his chain database
+stored locally at `/tmp/bob`. We'll specify a value for the `--bootnodes` option that will connect his node to Alice's
+bootnode ID on TCP port 30333:
```bash
cargo run -- \
@@ -152,4 +171,4 @@
## Running Integration Tests
-See [tests/README.md](./tests/README.md).
\ No newline at end of file
+See [tests/README.md](./tests/README.md).
doc/application_development.mddiffbeforeafterboth--- a/doc/application_development.md
+++ b/doc/application_development.md
@@ -2,17 +2,23 @@
## Architecture
-Both centralized and serverless architectures are supported and application creator can decide which one to use depending on how much logic and data they intend to manage off-chain and off-line.
+Both centralized and serverless architectures are supported and application creator can decide which one to use
+depending on how much logic and data they intend to manage off-chain and off-line.
### Server-based architecture
-In server-based architecture the application creator manually creates NFT collections and authorizes server to perform operations on each collection. See NFT palette methods that have admin permission level to understand better what server (or administrators) can do.
+In server-based architecture the application creator manually creates NFT collections and authorizes server to perform
+operations on each collection. See NFT palette methods that have admin permission level to understand better what server
+(or administrators) can do.

### Serverless architecture
-In serverless architecture the application creator does all initialization and token distribution manually. Alternatively, smart contracts may be used in order to implement some distribution mechanics such as token sales or claiming. The dApp has access to all properties of an NFT token, but it does not have any elevated permissions, since it resides on user site. All operations happen on user's behalf signed by user's private key.
+In serverless architecture the application creator does all initialization and token distribution manually.
+Alternatively, smart contracts may be used in order to implement some distribution mechanics such as token sales or
+claiming. The dApp has access to all properties of an NFT token, but it does not have any elevated permissions, since it
+resides on user site. All operations happen on user's behalf signed by user's private key.

@@ -27,199 +33,252 @@
#### CreateCollection
##### Description
-This method creates a Collection of NFTs. Each Token may have multiple properties encoded as an array of bytes of certain length. The initial owner and admin of the collection are set to the address that signed the transaction. Both addresses can be changed later.
+This method creates a Collection of NFTs. Each Token may have multiple properties encoded as an array of bytes of
+certain length. The initial owner and admin of the collection are set to the address that signed the transaction. Both
+addresses can be changed later.
+
##### Permissions
-Anyone
+- Anyone
+
##### Parameters
-customDataSz: Size of NFT properties data.
+- customDataSz: Size of NFT properties data.
+
##### Events
-CollectionCreated
-CollectionID: Globally unique identifier of newly created collection.
-Owner: Collection owner
+- CollectionCreated
+ - CollectionID: Globally unique identifier of newly created collection.
+ - Mode: Collection mode
+ - Owner: Collection owner
+
#### ChangeCollectionOwner
##### Description
+
Change the owner of the collection
##### Permissions
-Collection Owner
+- Collection Owner
+
##### Parameters
-CollectionId
+- CollectionId
+
#### DestroyCollection
##### Description
-DANGEROUS: Destroys collection and all NFTs within this collection. Users irrecoverably lose their assets and may lose real money.
+DANGEROUS: Destroys collection and all NFTs within this collection. Users irrecoverably lose their assets and may lose
+real money.
+
##### Permissions
-Collection Owner
+- Collection Owner
+
##### Parameters
-CollectionId
+- CollectionId
+
#### CreateItem
##### Description
+
This method creates a concrete instance of NFT Collection created with CreateCollection method.
##### Permissions
-Collection Owner
-Collection Admin
+- Collection Owner
+- Collection Admin
+
##### Parameters
-CollectionID: ID of the collection
-Properties: Array of bytes that contains NFT properties. Since NFT Module is agnostic of properties’ meaning, it is treated purely as an array of bytes
-Owner: Address, initial owner of the NFT
+- CollectionID: ID of the collection
+- Properties: Array of bytes that contains NFT properties. Since NFT Module is agnostic of properties’ meaning, it is
+ treated purely as an array of bytes
+- Owner: Address, initial owner of the NFT
+
##### Events
ItemCreated
ItemId: Identifier of newly created NFT, which is unique within the Collection, so the NFT is uniquely identified with a pair of values: CollectionId and ItemId.
+Recipient: Address, owner of newly created item
#### BurnItem
##### Description
+
This method destroys a concrete instance of NFT.
##### Permissions
-Collection Owner
-Collection Admin
-Current NFT Owner
+- Collection Owner
+- Collection Admin
+- Current NFT Owner
+
##### Parameters
-CollectionID: ID of the collection
-ItemID: ID of NFT to burn
+- CollectionID: ID of the collection
+- ItemID: ID of NFT to burn
+
##### Events
-ItemDestroyed
-CollectionID
-ItemId: Identifier of burned NFT
+- ItemDestroyed
+ - CollectionID
+ - ItemId: Identifier of burned NFT
#### AddCollectionAdmin
##### Description
-NFT Collection can be controlled by multiple admin addresses (some which can also be servers, for example). Admins can issue and burn NFTs, as well as add and remove other admins, but cannot change NFT or Collection ownership.
+NFT Collection can be controlled by multiple admin addresses (some which can also be servers, for example). Admins can
+issue and burn NFTs, as well as add and remove other admins, but cannot change NFT or Collection ownership.
+
This method adds an admin of the Collection.
##### Permissions
-Collection Owner
-Collection Admin
+- Collection Owner
+- Collection Admin
+
##### Parameters
-CollectionID: ID of the Collection to add admin for
-Admin: Address of new admin to add
+- CollectionID: ID of the Collection to add admin for
+- Admin: Address of new admin to add
+
#### RemoveCollectionAdmin
##### Description
-Remove admin address of the Collection. An admin address can remove itself. List of admins may become empty, in which case only Collection Owner will be able to add an Admin.
+Remove admin address of the Collection. An admin address can remove itself. List of admins may become empty, in which
+case only Collection Owner will be able to add an Admin.
+
##### Permissions
-Collection Owner
-Collection Admin
+- Collection Owner
+- Collection Admin
+
##### Parameters
-CollectionID: ID of the Collection to remove admin for
-Admin: Address of admin to remove
+- CollectionID: ID of the Collection to remove admin for
+- Admin: Address of admin to remove
+
### Item Ownership and Transfers
+
This group of methods allows managing NFT ownership.
#### GetOwner
##### Description
-Return the address of the NFT owner.
+Return the address of the NFT owner.
+
##### Permissions
-Anyone
+- Anyone
+
##### Parameters
-CollectionId
-ItemId: ID of the NFT
+- CollectionId
+- ItemId: ID of the NFT
+
##### Returns
+
Owner address
#### BalanceOf
##### Description
-This method is included for compatibility with ERC-721. Return the total count of NFTs of a given Collection that belong to a given address.
+This method is included for compatibility with ERC-721. Return the total count of NFTs of a given Collection that belong
+to a given address.
+
##### Permissions
-Anyone
+- Anyone
+
##### Parameters
-CollectionId
-Address to count NFTs for
+- CollectionId
+- Address to count NFTs for
+
##### Returns
+
Total count of NFTs for Address
-
#### Transfer
##### Description
+
Change ownership of the NFT.
##### Permissions
-Collection Owner
-Collection Admin
-Current NFT owner
+- Collection Owner
+- Collection Admin
+- Current NFT owner
+
##### Parameters
-Recipient: Address of token recipient
-ClassId: ID of item class
-ItemId: ID of the item
+- Recipient: Address of token recipient
+- ClassId: ID of item class
+- ItemId: ID of the item
+
#### TransferFrom
##### Description
-Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.
+Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method
+executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this
+owner.
+
##### Permissions
-Collection Owner
-Collection Admin
-Current NFT owner
-Address approved by current NFT owner
+- Collection Owner
+- Collection Admin
+- Current NFT owner
+- Address approved by current NFT owner
+
##### Parameters
-Recipient: Address of token recipient
-ClassId: ID of item class
-ItemId: ID of the item
+- Recipient: Address of token recipient
+- ClassId: ID of item class
+- ItemId: ID of the item
#### Approve
##### Description
+
Set, change, or remove approved address to transfer the ownership of the NFT.
##### Permissions
-Collection Owner
-Collection Admin
-Current NFT owner
+- Collection Owner
+- Collection Admin
+- Current NFT owner
+
##### Parameters
-Approved: Address that is approved to transfer this NFT or zero (if needed to remove approval)
-ClassId: ID of item class
-ItemId: ID of the item
+- Approved: Address that is approved to transfer this NFT or zero (if needed to remove approval)
+- ClassId: ID of item class
+- ItemId: ID of the item
+
#### GetApproved
##### Description
+
Get the approved address for a single NFT.
##### Permissions
-Anyone
+- Anyone
+
##### Parameters
-ClassId: ID of item class
-ItemId: ID of the item
+- ClassId: ID of item class
+- ItemId: ID of the item
+
##### Returns
+
Approved address
doc/demo_milestone1-2.mddiffbeforeafterboth--- a/doc/demo_milestone1-2.md
+++ b/doc/demo_milestone1-2.md
@@ -6,28 +6,41 @@
### A running chain
-**Substrate based blockchain node to host NFT Tracking Module created with substrate-up scripts (currently substrate-up only support Substrate 1.0)**
+**Substrate based blockchain node to host NFT Tracking Module created with substrate-up scripts (currently substrate-up
+only support Substrate 1.0)**
-We have created chain based on both versions of substrate: 1 and 2. Nonetheless, the substrate 1 is not being widely used and we decided to obsolete this branch of code. The code still exists in [substrate1](https://github.com/usetech-llc/nft_parachain/tree/substrate1) branch, but this delivery document is based on substrate 2 version.
+We have created chain based on both versions of substrate: 1 and 2. Nonetheless, the substrate 1 is not being widely
+used and we decided to obsolete this branch of code. The code still exists in
+[substrate1](https://github.com/usetech-llc/nft_parachain/tree/substrate1) branch, but this delivery document is based
+on substrate 2 version.
The node can be run using docker container:
+
```
docker-compose up -d
```
#### NFT Tracking Module
-Open extrinsics tab of the [standard UI](https://polkadot.js.org/apps/#/extrinsics) and find "nft" in the module list. This proves that NFT module is deployed.
-#### Balances Module, Other modules included by default
-The [same UI](https://polkadot.js.org/apps/#/extrinsics) allows verification that all other modules are also installed as needed.
+Open extrinsics tab of the [standard UI](https://polkadot.js.org/apps/#/extrinsics) and find "nft" in the module list.
+This proves that NFT module is deployed.
+
+#### Balances Module, Other modules included by default
+
+The [same UI](https://polkadot.js.org/apps/#/extrinsics) allows verification that all other modules are also installed
+as needed.
#### Configuration of runtime as needed (e.g. for hot module updates)
-The `set_code` method worked out of the box and we did not need to perform any additional customizations to upload an updated WASM version of NFT palette.
+The `set_code` method worked out of the box and we did not need to perform any additional customizations to upload an
+updated WASM version of NFT palette.
### NFT Tracking Module
-Before we continue, we need to do some preparations in the UI: Add NFT Data types so that the UI knows how to decode them. Go to [Settings-Developer Tab](https://polkadot.js.org/apps/#/settings/developer) and add following types to the JSON object in there:
+Before we continue, we need to do some preparations in the UI: Add NFT Data types so that the UI knows how to decode
+them. Go to [Settings-Developer Tab](https://polkadot.js.org/apps/#/settings/developer) and add following types to the
+JSON object in there:
+
```
{
"NftItemType": {
@@ -50,11 +63,16 @@
#### CreateCollection
-Before running test, open [chain state tab](https://polkadot.js.org/apps/#/chainstate) and read `nft`.`nextCollectionId` state variable, which shows how many collections were created so far. If you just started the chain, this should equal 0.
+Before running test, open [chain state tab](https://polkadot.js.org/apps/#/chainstate) and read `nft`.`nextCollectionId`
+state variable, which shows how many collections were created so far. If you just started the chain, this should
+equal 0.
-Open extrinsics tab of the [standard UI](https://polkadot.js.org/apps/#/extrinsics) and select ALICE account. Select `nft` module and `createCollection` method. Put 1 in `custom_data_size` and run the transaction. After it is finalized, read the `nft`.`nextCollectionId` state variable. It will be equal 1.
+Open extrinsics tab of the [standard UI](https://polkadot.js.org/apps/#/extrinsics) and select ALICE account. Select
+`nft` module and `createCollection` method. Put 1 in `custom_data_size` and run the transaction. After it is finalized,
+read the `nft`.`nextCollectionId` state variable. It will be equal 1.
-Also, read the state variable `nft`.`collection` with ID = 1 (Because everything in NFT Palette is numbered from 1, not from 0). You will see something like this:
+Also, read the state variable `nft`.`collection` with ID = 1 (Because everything in NFT Palette is numbered from 1, not
+from 0). You will see something like this:
```
nft.collection: CollectionType
@@ -67,7 +85,11 @@
### ChangeCollectionOwner
-Open extrinsics tab of the [standard UI](https://polkadot.js.org/apps/#/extrinsics). Select `nft` module and `changeCollectionOwner` method. First, try to execute it to change owner to BOB for collection 1 from some different account than ALICE - FERDIE to see that it is not possible because ALICE owns collection 1 and FERDIE is not allowed to give it to BOB. Second, select ALICE as transaction signer and run it again. This time the collection owner changes, which will be reflected if you read the state variable `nft`.`collection` with ID = 1:
+Open extrinsics tab of the [standard UI](https://polkadot.js.org/apps/#/extrinsics). Select `nft` module and
+`changeCollectionOwner` method. First, try to execute it to change owner to BOB for collection 1 from some different
+account than ALICE - FERDIE to see that it is not possible because ALICE owns collection 1 and FERDIE is not allowed to
+give it to BOB. Second, select ALICE as transaction signer and run it again. This time the collection owner changes,
+which will be reflected if you read the state variable `nft`.`collection` with ID = 1:
```
nft.collection: CollectionType
@@ -84,7 +106,9 @@
**Note: Before destroying collection, you can see Milestone 2 deliverables to avoid creating collection again**
-Run `nft`.`destroyCollection` with collection ID = 1, and then read collection from state. The returned fields will have default values, which indicates that collection does not exsit anymore:
+Run `nft`.`destroyCollection` with collection ID = 1, and then read collection from state. The returned fields will have
+default values, which indicates that collection does not exsit anymore:
+
```
nft.collection: CollectionType
{
@@ -108,20 +132,29 @@
**using Polkadot UI from https://substrate-ui.parity.io/**
-This document, except we are using Substrate v2, so we can use the newer version of the UI: https://polkadot.js.org/apps/#
+This document, except we are using Substrate v2, so we can use the newer version of the UI:
+https://polkadot.js.org/apps/#
## Milestone 2
+
### NFT Tracking Module
+
**Note:** If you have destroyed collection, create it again using `nft`.`createCollection` method.
-**Note 2:** The order of items in this section is different from the original spec to make the acceptance workflow more natural.
+**Note 2:** The order of items in this section is different from the original spec to make the acceptance workflow more
+natural.
-If you did not destroy collection while looking at Milestone 1 deliverables, use collection ID 1 in the further examples, otherwise use collection ID = 2.
+If you did not destroy collection while looking at Milestone 1 deliverables, use collection ID 1 in the further
+examples, otherwise use collection ID = 2.
#### CreateItem
-Before creating an NFT item, let's read ALICE balance for your collection, which indicates how many NFT tokens ALICE owns in this collection. Read the chain state `nft`.`balance(<Collection ID>, ALICE)`, and it will be 0.
-Execute extrinsic `nft`.`createItem` from ALICE account. Set properties to `0x01`. Now if you read the chain state `nft`.`balance(<Collection ID>, ALICE)`, it will be equal to 1. Also, you can read chain state `nft`.`itemList(<Collection ID>, 1)`, and it will return data for the token 1:
+Before creating an NFT item, let's read ALICE balance for your collection, which indicates how many NFT tokens ALICE
+owns in this collection. Read the chain state `nft`.`balance(<Collection ID>, ALICE)`, and it will be 0.
+
+Execute extrinsic `nft`.`createItem` from ALICE account. Set properties to `0x01`. Now if you read the chain state
+`nft`.`balance(<Collection ID>, ALICE)`, it will be equal to 1. Also, you can read chain state
+`nft`.`itemList(<Collection ID>, 1)`, and it will return data for the token 1:
```
nft.itemList: NftItemType
@@ -133,7 +166,10 @@
```
#### GetOwner
-Reading the ownership is done by reading chainstate `nft`.`itemList(<Collection ID>, 1)`. One of the returned fields is Owner:
+
+Reading the ownership is done by reading chainstate `nft`.`itemList(<Collection ID>, 1)`. One of the returned fields is
+Owner:
+
```
nft.itemList: NftItemType
{
@@ -144,7 +180,9 @@
```
#### Transfer
+
Execute `nft`.`transfer` from ALICE address to transfer token 1 to BOB and check the ownership again:
+
```
nft.itemList: NftItemType
{
@@ -159,14 +197,18 @@
#### BalanceOf
Read the chain state `nft`.`balance` for ALICE address and see that she owns 1 token:
+
```
nft.balance: u64
1
```
#### AddCollectionAdmin
-Execute `nft`.`AddCollectionAdmin` from ALICE account and let CHARLIE be an admin. Now you can see that CHARLIE can transfer ALICE's token from ALICE's account to EVE and back. Also, you can read admin list from chain state and see that it is not empty:
+Execute `nft`.`AddCollectionAdmin` from ALICE account and let CHARLIE be an admin. Now you can see that CHARLIE can
+transfer ALICE's token from ALICE's account to EVE and back. Also, you can read admin list from chain state and see that
+it is not empty:
+
```
nft.adminList: Vec<AccountId>
[
@@ -175,15 +217,21 @@
```
#### RemoveCollectionAdmin
-Execute `nft`.`RemoveCollectionAdmin` from ALICE account to remove CHARLIE from admins. Now you can see that CHARLIE cannot transfer ALICE's tokens anymore. If you read the chan state `nft`.`adminList`, the response will be empty:
+Execute `nft`.`RemoveCollectionAdmin` from ALICE account to remove CHARLIE from admins. Now you can see that CHARLIE
+cannot transfer ALICE's tokens anymore. If you read the chan state `nft`.`adminList`, the response will be empty:
+
```
nft.adminList: Vec<AccountId>
[]
```
#### BurnItem
-Execute `nft`.`burnItem` from ALICE account to burn token 1, and then read the chain state `nft`.`itemList(<Collection ID>, 1)`. This time the chain state returns default values in fields because token does not exist anymore. You can also check ALICE balance in chain state, now it is equal 0 again.
+
+Execute `nft`.`burnItem` from ALICE account to burn token 1, and then read the chain state
+`nft`.`itemList(<Collection ID>, 1)`. This time the chain state returns default values in fields because token does not
+exist anymore. You can also check ALICE balance in chain state, now it is equal 0 again.
+
```
nft.itemList: NftItemType
{
@@ -194,14 +242,15 @@
```
### Economic Model Specification
+
[Economic Model Specification](economic_model.md)
### Contracts Module Specification
+
https://docs.google.com/document/d/1gDtYjPR9C1VZChxEA-xAdQWQyEvMg245XrZR_MpE3cg/edit?usp=sharing
### Bonus goal
**Basic demo - Cryptopunks representation on the Substrate Chain.**
-See this repo, it has running and playing instructions:
-https://github.com/usetech-llc/substrapunks
+See this repo, it has running and playing instructions: https://github.com/usetech-llc/substrapunks
doc/economic_model.mddiffbeforeafterboth--- a/doc/economic_model.md
+++ b/doc/economic_model.md
@@ -2,26 +2,33 @@
## Economy Goals
-One of the goals of this specification is to find means to provide for network infrastructure (incentivisation of validators) and development support for NFT Parachain. Transaction fees will be used as the main source of funds. Fees will be distributed among network participants. The distribution of fees will depend on validator contribution to the network (similarly to Polkadot network) and the chosen fee structure (model).
+One of the goals of this specification is to find means to provide for network infrastructure (incentivisation of
+validators) and development support for NFT Parachain. Transaction fees will be used as the main source of funds. Fees
+will be distributed among network participants. The distribution of fees will depend on validator contribution to the
+network (similarly to Polkadot network) and the chosen fee structure (model).
## Summary
-We are going to offer several fee models for our users. Some models will be implemented immediately, some will wait until there is a demand.
+We are going to offer several fee models for our users. Some models will be implemented immediately, some will wait
+until there is a demand.
-The fee models can be setup by Collection and by Smart Contract address. Every Collection or Smart Contract has a fee model associated with it, which determines how transactions are paid. Network users can choose the fee model that better suits their application. The fee model can be changed later as well.
+The fee models can be setup by Collection and by Smart Contract address. Every Collection or Smart Contract has a fee
+model associated with it, which determines how transactions are paid. Network users can choose the fee model that better
+suits their application. The fee model can be changed later as well.
Initially we offer 4 models for consideration:
-* User paid fees (conventional blockchain method)
-* Sponsored (same as above, but paid by sponsor)
-* Prepaid plan
-* Resource purchase
+- User paid fees (conventional blockchain method)
+- Sponsored (same as above, but paid by sponsor)
+- Prepaid plan
+- Resource purchase
## Token and Accounts
Network Tokens are tracked via standard Balances module, which is included in NFT Parachain.
-User Account matches to user address in the network. Among other properties user Account has Balance, which will be used later on.
+User Account matches to user address in the network. Among other properties user Account has Balance, which will be used
+later on.
## Settings Economic Model
@@ -31,171 +38,234 @@
#### Description
-Set the collection sponsor address. The sponsorship needs to be confirmed by sending a ConfirmSponsorship transaction from that address. Also, the protection measures need to be in place so that sponsor account cannot be depleted by malicious users. White listing is one of the measured. It can be enabled with SetPublicAccessMode method.
+Set the collection sponsor address. The sponsorship needs to be confirmed by sending a ConfirmSponsorship transaction
+from that address. Also, the protection measures need to be in place so that sponsor account cannot be depleted by
+malicious users. White listing is one of the measured. It can be enabled with SetPublicAccessMode method.
##### List of transactions
+
Transactions that can be sponsored:
-* Transfer
-* Approve
-* TransferFrom
-* TransferWithData
-* TransferFromWithData
-* BurnItem
+- Transfer
+- Approve
+- TransferFrom
+- TransferWithData
+- TransferFromWithData
+- BurnItem
+
##### Rate Limiting
This is a design proposal, actual implementation may change.
Features:
-* Token transactions per day: The timestamp of last transaction performed on a token (NFT only) is associated with token ID in a dictionary. When a next transaction is run, the time is checked against this timestamp and, if less than allowed by rate limit, the fee is paid by caller account instead of the sponsor.
-* Address transactions per day: The timestamp of last transaction performed by an address (only if transaction is in the [list of affected transactions](#list-of-transactions)) is associated with caller address in a dictionary. Further, the logic is similar to limiting by token as above. If only one of the limits (by token or by address) indicates that fee should be paid by the user, the fee is paid by the user.
-* A pallet method (SetCollectionRateLimits) will be added to set these parameters and enable rate limiting.
-* One idea to consider is deposits that must be made by an address in order to become white listed (instead of admin review).
+- Token transactions per day: The timestamp of last transaction performed on a token (NFT only) is associated with
+ token ID in a dictionary. When a next transaction is run, the time is checked against this timestamp and, if less
+ than allowed by rate limit, the fee is paid by caller account instead of the sponsor.
+- Address transactions per day: The timestamp of last transaction performed by an address (only if transaction is in
+ the [list of affected transactions](#list-of-transactions)) is associated with caller address in a dictionary.
+ Further, the logic is similar to limiting by token as above. If only one of the limits (by token or by address)
+ indicates that fee should be paid by the user, the fee is paid by the user.
+- A pallet method (SetCollectionRateLimits) will be added to set these parameters and enable rate limiting.
+- One idea to consider is deposits that must be made by an address in order to become white listed (instead of admin
+ review).
+
#### Permissions
-* Collection Owner
+- Collection Owner
#### Parameters
-* CollectionId: ID of the collection
-* Sponsor: Sponsor address
-* Fee Model ID: ID of selected economic model. Currently, only "Sponsored" mode is supported, which will be ID = 1.
+- CollectionId: ID of the collection
+- Sponsor: Sponsor address
+- Fee Model ID: ID of selected economic model. Currently, only "Sponsored" mode is supported, which will be ID = 1.
### ConfirmSponsorship
+
#### Description
+
Confirm sponsorship of a collection. This call is needed to protect sponsor address from malicious collection creators.
#### Permissions
-* Collection Sponsor only
+- Collection Sponsor only
+
#### Parameters
-* CollectionId: ID of the collection
+- CollectionId: ID of the collection
+
### RemoveCollectionSponsor
+
#### Description
+
Switch back to pay-per-own-transaction model.
#### Permissions
-* Collection owner
+- Collection owner
+
#### Parameters
-* collectionId: ID of the collection
+- collectionId: ID of the collection
+
### ClaimContract
+
#### Description
-Claim the contract ownership for the purpose of sponsoring. Once the contract is claimed, only the contract owner can manage the contract sponsorship. Also, the contract may be claimed only once.
+Claim the contract ownership for the purpose of sponsoring. Once the contract is claimed, only the contract owner can
+manage the contract sponsorship. Also, the contract may be claimed only once.
+
#### Permissions
-* Anyone
+- Anyone
+
#### Parameters
-* ContractAddress: Address of the contract
-* Sponsor: Sponsor address
+- ContractAddress: Address of the contract
+- Sponsor: Sponsor address
+
### SetContractSponsor
+
#### Description
-Set the contract sponsor address. The sponsorship needs to be confirmed by sending a ConfirmContractSponsorship transaction from that address. The spam protection measures are similar to collection sponsorship.
+Set the contract sponsor address. The sponsorship needs to be confirmed by sending a ConfirmContractSponsorship
+transaction from that address. The spam protection measures are similar to collection sponsorship.
+
#### Permissions
-* Contract Owner
+- Contract Owner
+
#### Parameters
-* ContractAddress: Address of the contract
-* Sponsor: Sponsor address
-* Fee Model ID: ID of selected economic model. Currently, only "Sponsored" mode is supported, which will be ID = 1.
+- ContractAddress: Address of the contract
+- Sponsor: Sponsor address
+- Fee Model ID: ID of selected economic model. Currently, only "Sponsored" mode is supported, which will be ID = 1.
+
### ConfirmContractSponsorship
+
#### Description
+
Confirm sponsorship of a contract. This call is needed to protect sponsor address from malicious sponsorship requests.
#### Permissions
-* Contract Sponsor only
+- Contract Sponsor only
+
#### Parameters
-* ContractAddress: Address of the contract
+- ContractAddress: Address of the contract
+
### RemoveContractSponsor
+
#### Description
+
Switch back to pay-per-own-transaction model.
#### Permissions
-* Contract owner
+- Contract owner
+
#### Parameters
-* contractAddress: Address of the contract
+- contractAddress: Address of the contract
+
### SetPublicAccessMode
+
#### Description
-Toggle between normal and white list access for the methods with access for “Anyone”. If White List mode is enabled, AddToWhiteList and RemoveFromWhiteList methods can be called to add to and remove addresses from the white list.
-White list mode is the property of collection. If it is turned on, all public operations such as token transfers, for example, which normally have “Anyone” permission, become white listed, i.e. are only available to collection owner, admins, and addresses from the white list. White lists can be helpful for rate limiting of transfers when collection sponsoring is enabled.
+Toggle between normal and white list access for the methods with access for “Anyone”. If White List mode is enabled,
+AddToWhiteList and RemoveFromWhiteList methods can be called to add to and remove addresses from the white list.
+
+White list mode is the property of collection. If it is turned on, all public operations such as token transfers, for
+example, which normally have “Anyone” permission, become white listed, i.e. are only available to collection owner,
+admins, and addresses from the white list. White lists can be helpful for rate limiting of transfers when collection
+sponsoring is enabled.
#### Permissions
-* Collection Owner
+- Collection Owner
+
#### Parameters
-* CollectionID: ID of the Collection to set access mode for
-* Mode
- * 0 = Normal
- * 1 = White list
+- CollectionID: ID of the Collection to set access mode for
+- Mode
+ - 0 = Normal
+ - 1 = White list
+
### AddToWhiteList
+
#### Description
+
Add an address to white list.
#### Permissions
-* Collection Owner
-* Collection Admin
+- Collection Owner
+- Collection Admin
+
#### Parameters
-* CollectionID: ID of the Collection
-* Address
+- CollectionID: ID of the Collection
+- Address
+
### RemoveFromWhiteList
+
#### Description
+
Remove an address from white list.
#### Permissions
-* Collection Owner
-* Collection Admin
+- Collection Owner
+- Collection Admin
+
#### Parameters
-* CollectionID: ID of the Collection
-* Address
+- CollectionID: ID of the Collection
+- Address
+
### SetCollectionRateLimits
+
#### Description
+
Enable or disable rate limits for a collection
#### Permissions
-* Collection Owner
-* Collection Admin
+- Collection Owner
+- Collection Admin
+
#### Parameters
-* CollectionID: ID of the Collection
-* TokenInterval: Number of seconds allowed between sponsored token trasnsactions. 0 means there is no limit.
-* AddressInterval: Number of seconds allowed between sponsored address trasnsactions. 0 means there is no limit.
+- CollectionID: ID of the Collection
+- TokenInterval: Number of seconds allowed between sponsored token trasnsactions. 0 means there is no limit.
+- AddressInterval: Number of seconds allowed between sponsored address trasnsactions. 0 means there is no limit.
## User Paid Fees
-This is conventional fee model, when every Account pais for the transactions they sign and send. Transaction fee will gradually increase if the network load is higher to prevent denial of service. The same type of transaction (with the same transaction weight) will result in higher fee if previous block's weight gets close to maximum block weight. The ratio for multiplying fees will be determined empirically. The multiplication will take place until the blocks stop overpopulating, but with certain saturation. If blocks underfill, i.e. block weight is under the certain threshold, then the next block will have lower fees. The lowering will continue until blocks stop underpopulating, with some saturation.
+This is conventional fee model, when every Account pais for the transactions they sign and send. Transaction fee will
+gradually increase if the network load is higher to prevent denial of service. The same type of transaction (with the
+same transaction weight) will result in higher fee if previous block's weight gets close to maximum block weight. The
+ratio for multiplying fees will be determined empirically. The multiplication will take place until the blocks stop
+overpopulating, but with certain saturation. If blocks underfill, i.e. block weight is under the certain threshold, then
+the next block will have lower fees. The lowering will continue until blocks stop underpopulating, with some saturation.
Each module call will have weight annotation that will determine the weight calculation for this call:
-* CreateCollection: Fixed
-* ChangeCollectionOwner: Fixed
-* DestroyCollection: Linear of number of items (or owner addresses, depending on the collection type) multiplied by Collection Data Size
-* CreateItem: Linear of Collection Data Size
-* BurnItem: Linear of Collection Data Size
-* AddCollectionAdmin: Fixed
-* RemoveCollectionAdmin: Fixed
-* Transfers and approvals: Fixed
-* Transfers with data: Fixed + linear of data size
-* All other: Fixed
+- CreateCollection: Fixed
+- ChangeCollectionOwner: Fixed
+- DestroyCollection: Linear of number of items (or owner addresses, depending on the collection type) multiplied by
+ Collection Data Size
+- CreateItem: Linear of Collection Data Size
+- BurnItem: Linear of Collection Data Size
+- AddCollectionAdmin: Fixed
+- RemoveCollectionAdmin: Fixed
+- Transfers and approvals: Fixed
+- Transfers with data: Fixed + linear of data size
+- All other: Fixed
-This model is default and will be set for each collection until collection owner decides to change it to some other model.
+This model is default and will be set for each collection until collection owner decides to change it to some other
+model.
### Fee Distribution
@@ -203,30 +273,32 @@
## Sponsored
-The only difference from User Paid Fees model is that collection owner will be paying for their users. The collection owner must have enough balance on his account in order to pay for user transactions.
+The only difference from User Paid Fees model is that collection owner will be paying for their users. The collection
+owner must have enough balance on his account in order to pay for user transactions.
### Fee Distribution
Same as in User Paid Fees.
-
## Prepaid Plan
-
-Collection Owner makes regular payments to prepay for some planned network load, i.e. some fixed number of transactions, created items, etc.
+Collection Owner makes regular payments to prepay for some planned network load, i.e. some fixed number of transactions,
+created items, etc.
### Fee Distribution
Same as in User Paid Fees.
-
## Resource Purchase
-Collection Owner purchases some fixed amount of network resource, which can be measured in number of users and their monthly transactions, for example. This is a one time payment. If Collection Owner decides to switch to a different fee model, the resources may be sold back to the system (with some commission).
+Collection Owner purchases some fixed amount of network resource, which can be measured in number of users and their
+monthly transactions, for example. This is a one time payment. If Collection Owner decides to switch to a different fee
+model, the resources may be sold back to the system (with some commission).
-Received funds will be converted to DOTs and used in staking (nomination or validation), which will allow to receive the income that will pay for infrastructure and development support.
+Received funds will be converted to DOTs and used in staking (nomination or validation), which will allow to receive the
+income that will pay for infrastructure and development support.
### Fee Distribution
-Fixed percentage of staking income is distributed between validators proportionally to their contribution to the network. The rest is credited to the network owner.
-
+Fixed percentage of staking income is distributed between validators proportionally to their contribution to the
+network. The rest is credited to the network owner.
doc/hackusama_walk_through.mddiffbeforeafterboth--- a/doc/hackusama_walk_through.md
+++ b/doc/hackusama_walk_through.md
@@ -8,46 +8,70 @@
### Deployed NFT TestNet
-The TestNet public node is avaiable at wss://unique.usetech.com. It is easy to verify that it functions with the standard AppsUI:
+The TestNet public node is avaiable at wss://unique.usetech.com. It is easy to verify that it functions with the
+standard AppsUI:
1. Open the [Apps UI](https://polkadot.js.org/apps/#)
2. Click on the network icon in the top left corner
3. Scroll down the list and input `wss://unique.usetech.com` under "custom endpoint"
-4. After connection is established, copy these [UI Custom Types](https://github.com/usetech-llc/nft_parachain#ui-custom-types) and paste them in [Developer Settings](https://polkadot.js.org/apps/#/settings/developer). Hit "Save" button.
-5. Now the NFT node is connected with AppsUI.
-6. Go to [Chain State](https://polkadot.js.org/apps/#/chainstate) and verify that NFT pallet is visible and you can read information from it.
-7. For example, select nft -> collection, and enter collection ID 4 (for SubstraPunks) and click "+" button. You will see the collection properties such as UTF-16 encoded collection name and description, UTF-8 encoded token prefix, the size of custom data, etc.
+4. After connection is established, copy these
+ [UI Custom Types](https://github.com/usetech-llc/nft_parachain#ui-custom-types) and paste them in
+ [Developer Settings](https://polkadot.js.org/apps/#/settings/developer). Hit "Save" button.
+5. Now the NFT node is connected with AppsUI.
+6. Go to [Chain State](https://polkadot.js.org/apps/#/chainstate) and verify that NFT pallet is visible and you can read
+ information from it.
+7. For example, select nft -> collection, and enter collection ID 4 (for SubstraPunks) and click "+" button. You will
+ see the collection properties such as UTF-16 encoded collection name and description, UTF-8 encoded token prefix, the
+ size of custom data, etc.
#### Getting some Unique Tokens
-1. Install Polkadot{.js} extension if you don't have it already installed. Here are the links for [Chrome](https://chrome.google.com/webstore/detail/polkadot%7Bjs%7D-extension/mopnmbcafieddcagagdcbnhejhlodfdd) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/polkadot-js-extension/) extensions.
+1. Install Polkadot{.js} extension if you don't have it already installed. Here are the links for
+ [Chrome](https://chrome.google.com/webstore/detail/polkadot%7Bjs%7D-extension/mopnmbcafieddcagagdcbnhejhlodfdd) and
+ [Firefox](https://addons.mozilla.org/en-US/firefox/addon/polkadot-js-extension/) extensions.
2. Create an address
-3. Contact us at [Unique Network Telegram channel](https://t.me/joinchat/DPVt1RwN50Uic_Q9lFcg9A) in order to get some Unique token and some Re-Fungible tokens. Faucet is comming soon, we will update this instructions when it goes live.
+3. Contact us at [Unique Network Telegram channel](https://t.me/joinchat/DPVt1RwN50Uic_Q9lFcg9A) in order to get some
+ Unique token and some Re-Fungible tokens. Faucet is comming soon, we will update this instructions when it goes live.
### Smart Contracts Pallet
-1. Open [Contracts](https://polkadot.js.org/apps/#/contracts) tab. It only appears in the UI when Smart Contracts pallet is included in the runtime.
+1. Open [Contracts](https://polkadot.js.org/apps/#/contracts) tab. It only appears in the UI when Smart Contracts pallet
+ is included in the runtime.
2. Additionally, we can find an existing smart contract. Click on "Add an existing contract" link.
3. Input this contract address: `5GdNqKMv4Sszq3SRd3TkXNa6a9ct4D3nXvtTWTFR7rTyccVJ`
4. Input any contract name, for example `Claim Substrapunks`
-5. Download and drag-and-drop this [metadata.json](https://github.com/usetech-llc/substrapunks/releases/download/v1.0.2/metadata.json) file into contract ABI field.
-6. Click Save. The contract appears in the page. If the contract did not exist at that address, the UI would display an error message: "Unable to find deployed contract code at the specified address".
+5. Download and drag-and-drop this
+ [metadata.json](https://github.com/usetech-llc/substrapunks/releases/download/v1.0.2/metadata.json) file into
+ contract ABI field.
+6. Click Save. The contract appears in the page. If the contract did not exist at that address, the UI would display an
+ error message: "Unable to find deployed contract code at the specified address".
### Integration Between Smart Contracts and NFT Pallet
-This was one of the most challenging parts of the Hackusama for us. The pre-RC4 versions of Substrate did not function properly when we tried to use `ext_dispatch_call` to dispatch a runtime call to NFT pallet from Contracts pallet, and RC4 had the `ext_dispatch_call` already removed to "free space" for some friendlier way of interaction between pallets, that was not yet implemented. Thanks to Alexander Theißen who reverted the removal of `ext_dispatch_call` and created a special branch based on RC4 for us!
+This was one of the most challenging parts of the Hackusama for us. The pre-RC4 versions of Substrate did not function
+properly when we tried to use `ext_dispatch_call` to dispatch a runtime call to NFT pallet from Contracts pallet, and
+RC4 had the `ext_dispatch_call` already removed to "free space" for some friendlier way of interaction between pallets,
+that was not yet implemented. Thanks to Alexander Theißen who reverted the removal of `ext_dispatch_call` and created a
+special branch based on RC4 for us!
-The smart contract source code exists in this [repository folder](https://github.com/usetech-llc/nft_parachain/tree/master/smart_contract/ink-types-node-runtime), but the best way to test how the interaction between smart contracts and NFT pallet works is to see it in action using the [SubstraPunks Game Example](https://ipfs-gateway.usetech.com/ipns/QmaMtDqE9nhMX9RQLTpaCboqg7bqkb6Gi67iCKMe8NDpCE/) that uses smart contract to claim free characters. The complete demo of this game will come later, so please bare with us and let's put this item demonstration for a bit later.
+The smart contract source code exists in this
+[repository folder](https://github.com/usetech-llc/nft_parachain/tree/master/smart_contract/ink-types-node-runtime), but
+the best way to test how the interaction between smart contracts and NFT pallet works is to see it in action using the
+[SubstraPunks Game Example](https://ipfs-gateway.usetech.com/ipns/QmaMtDqE9nhMX9RQLTpaCboqg7bqkb6Gi67iCKMe8NDpCE/) that
+uses smart contract to claim free characters. The complete demo of this game will come later, so please bare with us and
+let's put this item demonstration for a bit later.
### Re-Fungibility support
-This feature is best demonstrated in action using our NFT wallet. First, you need to have some Unique and Re-Fungible tokens. [This section](#getting-some-unique-tokens) tells how to get them.
+This feature is best demonstrated in action using our NFT wallet. First, you need to have some Unique and Re-Fungible
+tokens. [This section](#getting-some-unique-tokens) tells how to get them.
1. Open the [NFT Wallet](https://uniqueapps.usetech.com/#/nft)
2. Search for collection called "Artwork". Search can be done either by collection name or collection ID (which is 2).
3. Click on "+ Add collection" in search results. The collection will appear under "My collections"
4. Expand the "Artwork" collection and see that you own a token with a partial balance
-5. Transfer the token to some other address: Click "Transfer token" and enter address and the amount. Amount should be entered as decimal fraction. For example "0.01" to transfer 1/100th part of the token.
+5. Transfer the token to some other address: Click "Transfer token" and enter address and the amount. Amount should be
+ entered as decimal fraction. For example "0.01" to transfer 1/100th part of the token.
6. Observe that your balance decreased by the amount you entered.
#### The Hard Way
@@ -84,15 +108,19 @@
fraction: 1,000
}
],
- Data:
+ Data:
}
```
-The Owner field contains a list of owners with the fractions they own. The fractions are represented as fixed point decimals. The number of decimal points in this fraction is determined by collection properties. For example, in the Artwork collection this property is equal to 4. The owned fraction is then determined as `fraction` divided by 10^DecimalPoints, i.e. 10,000 in this case.
+The Owner field contains a list of owners with the fractions they own. The fractions are represented as fixed point
+decimals. The number of decimal points in this fraction is determined by collection properties. For example, in the
+Artwork collection this property is equal to 4. The owned fraction is then determined as `fraction` divided by
+10^DecimalPoints, i.e. 10,000 in this case.
5. Staying in Chain State, select "nft" - "colection"
6. Input "2" and click "+"
-7. Observe the following structure returned. It tells that collection is ReFungible and DecimalPoints field is equal to 4.
+7. Observe the following structure returned. It tells that collection is ReFungible and DecimalPoints field is equal
+ to 4.
```
{
@@ -111,21 +139,25 @@
### Off-Chain Schema to store token image URLs
-This feature is best demonstrated in action using our NFT wallet. First, you need to have some Unique and Re-Fungible tokens. [This section](#getting-some-unique-tokens) tells how to get them.
+This feature is best demonstrated in action using our NFT wallet. First, you need to have some Unique and Re-Fungible
+tokens. [This section](#getting-some-unique-tokens) tells how to get them.
1. Open the [NFT Wallet](https://uniqueapps.usetech.com/#/nft)
2. Search for collection called "Artwork". Search can be done either by collection name or collection ID (which is 2).
3. Expand "Artwork" collection
-4. Click on the image to zoom in.
+4. Click on the image to zoom in.
5. Right-click on the image and select "Open Image in New Tab"
6. Note the image URL:
+
```
https://ipfs-gateway.usetech.com/ipfs/QmUSv64cUmL2m44QYkUFWmH89qykC8VLPFwjhpeAScjejS/image1.jpg
-```
+```
+
7. Open [Chain State](https://uniqueapps.usetech.com/#/chainstate).
8. Select "nft" - "colection"
9. Input "2" and click "+"
10. Scroll down:
+
```
],
TokenPrefix: ARTu0000,
@@ -135,23 +167,32 @@
UnconfirmedSponsor: 5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM
}
```
-11. Observe the field called `OffchainSchema`. This field defines the URL schema that is used to contruct token URLs based on the token ID. In this particular example, the {id} template variable is replaced with token id 1, which results in the proper image URL.
+11. Observe the field called `OffchainSchema`. This field defines the URL schema that is used to contruct token URLs
+ based on the token ID. In this particular example, the {id} template variable is replaced with token id 1, which
+ results in the proper image URL.
+
### New economic models
-This feature is best demonstrated when you own a SubstraPunk character. Please proceed with the demonstration, and then come back after you claim one.
+This feature is best demonstrated when you own a SubstraPunk character. Please proceed with the demonstration, and then
+come back after you claim one.
-1. Create a new address in Polkadot{.js} extension. We need an address that has zero balance in Unique tokens. Let's call it "ZERO BALANCE" address.
+1. Create a new address in Polkadot{.js} extension. We need an address that has zero balance in Unique tokens. Let's
+ call it "ZERO BALANCE" address.
2. Open the [NFT Wallet](https://uniqueapps.usetech.com/#/nft)
3. Search for collection called "SubstraPunks" (partial search also works, so you can just type "punk" and hit Enter)
4. Add collection
5. Expand substrapunks collection and transfer your PNK token to your "ZERO BALANCE" address.
-6. Now select your "ZERO BALANCE" address in the drop-down list and repeat searching and adding the collection for this address.
+6. Now select your "ZERO BALANCE" address in the drop-down list and repeat searching and adding the collection for this
+ address.
7. Transfer token back to your main address. Observe that despite the zero balance, the transfer is successful.
### White Lists and Public Mint Permission
-We did not complete these features in time by Hackusama deadline, but because they are important for security of the network, we completed them after the deadline anyway. They can be seen in branch [feature/white_list](https://github.com/usetech-llc/nft_parachain/tree/feature/white_list). Here are the permalinks to essential functions:
+We did not complete these features in time by Hackusama deadline, but because they are important for security of the
+network, we completed them after the deadline anyway. They can be seen in branch
+[feature/white_list](https://github.com/usetech-llc/nft_parachain/tree/feature/white_list). Here are the permalinks to
+essential functions:
[white_lists](https://github.com/usetech-llc/nft_parachain/blob/b7c59f0085ed2bc1922e937adf68ef4174a8ba36/pallets/nft/src/lib.rs#L659)
@@ -163,17 +204,18 @@
All features of the NFT Wallet were already demonstrated previously:
-* Enables adding favorite collections
-* Shows tokens owned
-* Allows NFT and Re-Fungible transfers
-* Shows Re-Fungible Balances
-* Shows Token Images
+- Enables adding favorite collections
+- Shows tokens owned
+- Allows NFT and Re-Fungible transfers
+- Shows Re-Fungible Balances
+- Shows Token Images
## Our version of AppsUI
The UI was also mainly demonstrated. We only need to show some configuration that happens behind the scenes:
### Loads appropriate custom API types
+
1. Open the [NFT Wallet Developer Settings](https://uniqueapps.usetech.com/#/settings/developer)
2. Observe that Custom UI types are already in place
@@ -190,31 +232,41 @@
In order to see Unity Asset in action, please follow the instructions in this README file:
[Demonstration](https://github.com/usetech-llc/nft_unity/blob/master/src/DemoApplication/readme.md)
-
## SubstraPunks Game
[Project Description](https://github.com/usetech-llc/substrapunks/blob/master/README.md)
-First, you will need some Unique balance. [This section](#getting-some-unique-tokens) tells how to get the TestNet currency.
+First, you will need some Unique balance. [This section](#getting-some-unique-tokens) tells how to get the TestNet
+currency.
-1. Open this [SubstraPunks Game](https://ipfs-gateway.usetech.com/ipns/QmaMtDqE9nhMX9RQLTpaCboqg7bqkb6Gi67iCKMe8NDpCE/) IPFS link
-2. Find a character you like that still has red background. Red indicates that the character was not yet claimed by anyone.
+1. Open this [SubstraPunks Game](https://ipfs-gateway.usetech.com/ipns/QmaMtDqE9nhMX9RQLTpaCboqg7bqkb6Gi67iCKMe8NDpCE/)
+ IPFS link
+2. Find a character you like that still has red background. Red indicates that the character was not yet claimed by
+ anyone.
3. Allow access for Polkadot{.js} to this site
4. Click "Claim" button
5. Select the account that has some Unique balance
-6. Click "Claim" again, sign transaction, and wait until it mines.
+6. Click "Claim" again, sign transaction, and wait until it mines.
-Let's make a pause here: You were just demonstrated how the integration between smart contracts and NFT Pallet works. This is what we've been previously talking about [here](#integration-between-smart-contracts-and-nft-pallet)
+Let's make a pause here: You were just demonstrated how the integration between smart contracts and NFT Pallet works.
+This is what we've been previously talking about [here](#integration-between-smart-contracts-and-nft-pallet)
-The source code of the generic smart contract is located in [smart_contract](https://github.com/usetech-llc/nft_parachain/tree/dev/smart_contract/ink-types-node-runtime) folder. But to demonstrate smart contracts in practice we created additional [Claim Contract](https://github.com/usetech-llc/substrapunks/tree/master/smart_contract) to implement claiming functionality in this game.
+The source code of the generic smart contract is located in
+[smart_contract](https://github.com/usetech-llc/nft_parachain/tree/dev/smart_contract/ink-types-node-runtime) folder.
+But to demonstrate smart contracts in practice we created additional
+[Claim Contract](https://github.com/usetech-llc/substrapunks/tree/master/smart_contract) to implement claiming
+functionality in this game.
+
+Here is how Claiming works: Claim Contract owns all characters in the game initially. Player sends a transaction calling
+the method claim:
-Here is how Claiming works: Claim Contract owns all characters in the game initially. Player sends a transaction calling the method claim:
```
fn claim(&mut self, collection_id: u64, item_id: u64, new_owner: AccountId)
```
Inside the method `claim` there is a call made to NFT pallet to transfer the token that is being claimed to the player:
+
```
runtime_calls::transfer(collection_id, item_id, new_owner);
```
@@ -222,6 +274,5 @@
7. Follow the link to [NFT Wallet](https://uniqueapps.usetech.com/#/nft)
8. Search for "SubstraPunks" collection, add it
9. Expand the collection and find your character in there!
-10. Now you can try transfers and test the [economic model](#new-economic-models), the last thing we put off until a SubstraPunks character is claimed.
-
-
+10. Now you can try transfers and test the [economic model](#new-economic-models), the last thing we put off until a
+ SubstraPunks character is claimed.
node/Cargo.tomldiffbeforeafterboth--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -12,9 +12,9 @@
description = 'Substrate node nft'
edition = '2018'
homepage = 'https://usetech.com/blockchain'
-license = 'Unlicense'
+license = 'All Rights Reserved'
name = 'nft'
-repository = 'https://github.com/substrate-developer-hub/nft/'
+repository = 'https://github.com/usetech-llc/nft_private/'
version = '3.0.0'
[package.metadata.docs.rs]
@@ -29,7 +29,7 @@
jsonrpc-core = '15.0.0'
# Substrate dependencies
-nft-runtime = { path = '../runtime', version = '3.0.0' }
+nft-runtime = { path = '../runtime', version = '2.1.0' }
frame-benchmarking = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
frame-benchmarking-cli = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
pallet-transaction-payment-rpc = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
node/src/command.rsdiffbeforeafterboth--- a/node/src/command.rs
+++ b/node/src/command.rs
@@ -23,7 +23,7 @@
impl SubstrateCli for Cli {
fn impl_name() -> String {
- "Substrate Node".into()
+ "Unique Node".into()
}
fn impl_version() -> String {
pallets/nft/Cargo.tomldiffbeforeafterboth--- a/pallets/nft/Cargo.toml
+++ b/pallets/nft/Cargo.toml
@@ -6,7 +6,7 @@
license = 'Unlicense'
name = 'pallet-nft'
repository = 'https://github.com/substrate-developer-hub/nft/'
-version = '3.0.0'
+version = '2.1.0'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
pallets/nft/src/lib.rsdiffbeforeafterboth--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -198,7 +198,7 @@
Self {
account_token_ownership_limit: 10_000_000,
token_limit: u32::max_value(),
- sponsored_data_size: u32::max_value(),
+ sponsored_data_size: u32::MAX,
sponsored_data_rate_limit: None,
sponsor_transfer_timeout: 14400,
owner_can_transfer: true,
@@ -388,6 +388,8 @@
AccountTokenLimitExceeded,
/// Collection limit bounds per collection exceeded
CollectionLimitBoundsExceeded,
+ /// Tried to enable permissions which are only permitted to be disabled
+ OwnerPermissionsCantBeReverted,
/// Schema data size limit bound exceeded
SchemaDataLimitExceeded,
/// Maximum refungibility exceeded
@@ -504,7 +506,9 @@
/// * collection_id: Id of the collection where item was created.
///
/// * item_id: Id of an item. Unique within the collection.
- ItemCreated(CollectionId, TokenId),
+ ///
+ /// * recipient: Owner of newly created item
+ ItemCreated(CollectionId, TokenId, AccountId),
/// Collection item was burned.
///
@@ -514,6 +518,19 @@
///
/// item_id: Identifier of burned NFT.
ItemDestroyed(CollectionId, TokenId),
+
+ /// 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(CollectionId, TokenId, AccountId, AccountId, u128),
}
);
@@ -568,8 +585,10 @@
_ => 0
};
+ let chain_limit = ChainLimit::get();
+
// bound Total number of collections
- ensure!(CollectionCount::get() < ChainLimit::get().collection_numbers_limit, Error::<T>::TotalCollectionsLimitExceeded);
+ ensure!(CollectionCount::get() < chain_limit.collection_numbers_limit, Error::<T>::TotalCollectionsLimitExceeded);
// check params
ensure!(decimal_points <= MAX_DECIMAL_POINTS, Error::<T>::CollectionDecimalPointLimitExceeded);
@@ -590,6 +609,11 @@
CreatedCollectionCount::put(next_id);
CollectionCount::put(total);
+ let limits = CollectionLimits {
+ sponsored_data_size: chain_limit.custom_data_limit,
+ ..Default::default()
+ };
+
// Create new collection
let new_collection = CollectionType {
owner: who.clone(),
@@ -606,7 +630,7 @@
sponsor_confirmed: false,
variable_on_chain_schema: Vec::new(),
const_on_chain_schema: Vec::new(),
- limits: CollectionLimits::default()
+ limits,
};
// Add new collection to map
@@ -633,6 +657,11 @@
let sender = ensure_signed(origin)?;
Self::check_owner_permissions(collection_id, sender)?;
+ let target_collection = <Collection<T>>::get(collection_id);
+ if !target_collection.limits.owner_can_destroy {
+ fail!(Error::<T>::NoPermission);
+ }
+
<AddressTokens<T>>::remove_prefix(collection_id);
<Allowances<T>>::remove_prefix(collection_id);
<Balance<T>>::remove_prefix(collection_id);
@@ -1015,9 +1044,14 @@
// Transfer permissions check
let target_collection = <Collection<T>>::get(collection_id).unwrap();
- ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||
- Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
- Error::<T>::NoPermission);
+ ensure!(
+ Self::is_item_owner(sender.clone(), collection_id, item_id) ||
+ (
+ target_collection.limits.owner_can_transfer &&
+ Self::is_owner_or_admin_permissions(collection_id, sender.clone())
+ ),
+ Error::<T>::NoPermission
+ );
if target_collection.access == AccessMode::WhiteList {
Self::check_white_list(collection_id, &sender)?;
@@ -1091,9 +1125,23 @@
// Transfer permissions check
let target_collection = <Collection<T>>::get(collection_id).unwrap();
- ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||
- Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
- Error::<T>::NoPermission);
+ let allowance_limit = if (
+ target_collection.limits.owner_can_transfer &&
+ Self::is_owner_or_admin_permissions(
+ collection_id,
+ sender.clone(),
+ )
+ ) {
+ None
+ } else if let Some(amount) = Self::owned_amount(
+ sender.clone(),
+ collection_id,
+ item_id,
+ ) {
+ Some(amount)
+ } else {
+ fail!(Error::<T>::NoPermission);
+ };
if target_collection.access == AccessMode::WhiteList {
Self::check_white_list(collection_id, &sender)?;
@@ -1105,6 +1153,9 @@
if allowance_exists {
allowance += <Allowances<T>>::get(collection_id, (item_id, &sender, &spender));
}
+ if let Some(limit) = allowance_limit {
+ ensure!(limit >= allowance, Error::<T>::TokenValueTooLow);
+ }
<Allowances<T>>::insert(collection_id, (item_id, sender.clone(), spender.clone()), allowance);
Ok(())
@@ -1149,8 +1200,14 @@
Self::is_correct_transfer(collection_id, &target_collection, &recipient)?;
// Transfer permissions check
- ensure!(appoved_transfer || Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
- Error::<T>::NoPermission);
+ ensure!(
+ appoved_transfer ||
+ (
+ target_collection.limits.owner_can_transfer &&
+ Self::is_owner_or_admin_permissions(collection_id, sender.clone())
+ ),
+ Error::<T>::NoPermission
+ );
if target_collection.access == AccessMode::WhiteList {
Self::check_white_list(collection_id, &sender)?;
@@ -1517,25 +1574,31 @@
pub fn set_collection_limits(
origin,
collection_id: u32,
- limits: CollectionLimits<T::BlockNumber>,
+ new_limits: CollectionLimits<T::BlockNumber>,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
Self::check_owner_permissions(collection_id, sender.clone())?;
let mut target_collection = <Collection<T>>::get(collection_id).unwrap();
+ let old_limits = target_collection.limits;
let chain_limits = ChainLimit::get();
- let climits = target_collection.limits;
// collection bounds
- ensure!(limits.sponsor_transfer_timeout <= MAX_SPONSOR_TIMEOUT &&
- limits.account_token_ownership_limit <= MAX_TOKEN_OWNERSHIP,
+ ensure!(new_limits.sponsor_transfer_timeout <= MAX_SPONSOR_TIMEOUT &&
+ new_limits.account_token_ownership_limit <= MAX_TOKEN_OWNERSHIP &&
+ new_limits.sponsored_data_size <= chain_limits.custom_data_limit,
Error::<T>::CollectionLimitBoundsExceeded);
// token_limit check prev
- ensure!(climits.token_limit > limits.token_limit &&
- limits.token_limit <= chain_limits.account_token_ownership_limit,
- Error::<T>::AccountTokenLimitExceeded);
+ ensure!(old_limits.token_limit >= new_limits.token_limit, Error::<T>::CollectionTokenLimitExceeded);
+ ensure!(new_limits.token_limit > 0, Error::<T>::CollectionTokenLimitExceeded);
+
+ ensure!(
+ (old_limits.owner_can_transfer || !new_limits.owner_can_transfer) &&
+ (old_limits.owner_can_destroy || !new_limits.owner_can_destroy),
+ Error::<T>::OwnerPermissionsCantBeReverted,
+ );
- target_collection.limits = limits;
+ target_collection.limits = new_limits;
<Collection<T>>::insert(collection_id, target_collection);
Ok(())
@@ -1564,12 +1627,14 @@
match target_collection.mode
{
- CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,
+ CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient.clone())?,
CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &sender, &recipient)?,
- CollectionMode::ReFungible => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,
+ CollectionMode::ReFungible => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient.clone())?,
_ => ()
};
+ Self::deposit_event(RawEvent::Transfer(collection_id, item_id, sender, recipient, value));
+
Ok(())
}
@@ -1643,7 +1708,7 @@
{
CreateItemData::NFT(data) => {
let item = NftItemType {
- owner,
+ owner: owner.clone(),
const_data: data.const_data,
variable_data: data.variable_data
};
@@ -1668,7 +1733,7 @@
};
// call event
- Self::deposit_event(RawEvent::ItemCreated(collection_id, <ItemListIndex>::get(collection_id)));
+ Self::deposit_event(RawEvent::ItemCreated(collection_id, <ItemListIndex>::get(collection_id), owner));
Ok(())
}
@@ -1876,6 +1941,36 @@
Ok(())
}
+ fn owned_amount(
+ subject: T::AccountId,
+ collection_id: CollectionId,
+ item_id: TokenId,
+ ) -> Option<u128> {
+ let target_collection = <Collection<T>>::get(collection_id);
+
+ match target_collection.mode {
+ CollectionMode::NFT => {
+ if <NftItemList<T>>::get(collection_id, item_id).owner == subject {
+ return Some(1)
+ }
+ None
+ },
+ CollectionMode::Fungible(_) => {
+ if <FungibleItemList<T>>::contains_key(collection_id, &subject) {
+ return Some(<FungibleItemList<T>>::get(collection_id, &subject)
+ .value);
+ }
+ None
+ },
+ CollectionMode::ReFungible => <ReFungibleItemList<T>>::get(collection_id, item_id)
+ .owner
+ .iter()
+ .find(|i| i.owner == subject)
+ .map(|i| i.fraction),
+ CollectionMode::Invalid => None,
+ }
+ }
+
fn is_item_owner(subject: T::AccountId, collection_id: CollectionId, item_id: TokenId) -> bool {
let target_collection = <Collection<T>>::get(collection_id).unwrap();
runtime/Cargo.tomldiffbeforeafterboth--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -1,11 +1,11 @@
[package]
-authors = ['Substrate DevHub <https://github.com/substrate-developer-hub>']
+authors = ['UseTech Professional <https://usetech.com/blockchain>']
edition = '2018'
homepage = 'https://substrate.io'
-license = 'Unlicense'
+license = 'All Rights Reserved'
name = 'nft-runtime'
repository = 'https://github.com/usetech-llc/nft_parachain/'
-version = '3.0.0'
+version = '2.1.0'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
@@ -25,7 +25,7 @@
serde = { features = ['derive'], optional = true, version = '1.0.101' }
# local dependencies
-pallet-nft = { path = '../pallets/nft', default-features = false, version = '3.0.0' }
+pallet-nft = { path = '../pallets/nft', default-features = false, version = '2.1.0' }
# Substrate dependencies
frame-benchmarking = { default-features = false, optional = true, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -29,6 +29,7 @@
"testRemoveFromWhiteList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromWhiteList.test.ts",
"testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",
"testCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",
+ "testCreateItem": "mocha --timeout 9999999 -r ts-node/register ./**/createItem.test.ts",
"testCreateMultipleItems": "mocha --timeout 9999999 -r ts-node/register ./**/createMultipleItems.test.ts",
"testApprove": "mocha --timeout 9999999 -r ts-node/register ./**/approve.test.ts",
"testTransferFrom": "mocha --timeout 9999999 -r ts-node/register ./**/transferFrom.test.ts",
tests/src/approve.test.tsdiffbeforeafterboth--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -2,8 +2,8 @@
// This file is subject to the terms and conditions defined in
// file 'LICENSE', which is part of this source code package.
//
+import { IKeyringPair } from '@polkadot/types/types';
import { ApiPromise } from '@polkadot/api';
-import BN from 'bn.js';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import privateKey from './substrate/privateKey';
@@ -12,66 +12,85 @@
approveExpectFail,
approveExpectSuccess,
createCollectionExpectSuccess,
- createFungibleItemExpectSuccess,
createItemExpectSuccess,
destroyCollectionExpectSuccess,
- transferFromExpectSuccess,
- U128_MAX,
+ setCollectionLimitsExpectSuccess,
+ transferExpectSuccess,
} from './util/helpers';
chai.use(chaiAsPromised);
-const expect = chai.expect;
describe('Integration Test approve(spender, collection_id, item_id, amount):', () => {
+ let Alice: IKeyringPair;
+ let Bob: IKeyringPair;
+ let Charlie: IKeyringPair;
+
+ before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Charlie = privateKey('//Charlie');
+ });
+ });
+
it('Execute the extrinsic and check approvedList', async () => {
- await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const nftCollectionId = await createCollectionExpectSuccess();
- // nft
- const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
- await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);
- // fungible
- const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
- const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
- await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
- // reFungible
- const reFungibleCollectionId =
- await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
- const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
- await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
- });
+ const nftCollectionId = await createCollectionExpectSuccess();
+ // nft
+ const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+ await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);
+ // fungible
+ const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+ const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
+ await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
+ // reFungible
+ const reFungibleCollectionId =
+ await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+ const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+ await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
});
it('Remove approval by using 0 amount', async () => {
- await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const nftCollectionId = await createCollectionExpectSuccess();
- // nft
- const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
- await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);
- await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 0);
- // fungible
- const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
- const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
- await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);
- await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);
- // reFungible
- const reFungibleCollectionId =
- await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
- const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
- await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);
- await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);
- });
+ const nftCollectionId = await createCollectionExpectSuccess();
+ // nft
+ const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+ await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);
+ await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 0);
+ // fungible
+ const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+ const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
+ await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);
+ await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);
+ // reFungible
+ const reFungibleCollectionId =
+ await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+ const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+ await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);
+ await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);
+ });
+
+ it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
+
+ await approveExpectSuccess(collectionId, itemId, Alice, Charlie);
});
});
describe('Negative Integration Test approve(spender, collection_id, item_id, amount):', () => {
+ let Alice: IKeyringPair;
+ let Bob: IKeyringPair;
+ let Charlie: IKeyringPair;
+
+ before(async () => {
+ await usingApi(async (api) => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Charlie = privateKey('//Charlie');
+ });
+ });
+
it('Approve for a collection that does not exist', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
// nft
const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
await approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);
@@ -85,59 +104,79 @@
});
it('Approve for a collection that was destroyed', async () => {
- await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- // nft
- const nftCollectionId = await createCollectionExpectSuccess();
- await destroyCollectionExpectSuccess(nftCollectionId);
- await approveExpectFail(nftCollectionId, 1, Alice, Bob);
- // fungible
- const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
- await destroyCollectionExpectSuccess(fungibleCollectionId);
- await approveExpectFail(fungibleCollectionId, 1, Alice, Bob);
- // reFungible
- const reFungibleCollectionId =
- await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
- await destroyCollectionExpectSuccess(reFungibleCollectionId);
- await approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);
- });
+ // nft
+ const nftCollectionId = await createCollectionExpectSuccess();
+ await destroyCollectionExpectSuccess(nftCollectionId);
+ await approveExpectFail(nftCollectionId, 1, Alice, Bob);
+ // fungible
+ const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+ await destroyCollectionExpectSuccess(fungibleCollectionId);
+ await approveExpectFail(fungibleCollectionId, 1, Alice, Bob);
+ // reFungible
+ const reFungibleCollectionId =
+ await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+ await destroyCollectionExpectSuccess(reFungibleCollectionId);
+ await approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);
});
it('Approve transfer of a token that does not exist', async () => {
- await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- // nft
- const nftCollectionId = await createCollectionExpectSuccess();
- await approveExpectFail(nftCollectionId, 2, Alice, Bob);
- // fungible
- const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
- await approveExpectFail(fungibleCollectionId, 2, Alice, Bob);
- // reFungible
- const reFungibleCollectionId =
- await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
- await approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);
- });
+ // nft
+ const nftCollectionId = await createCollectionExpectSuccess();
+ await approveExpectFail(nftCollectionId, 2, Alice, Bob);
+ // fungible
+ const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+ await approveExpectFail(fungibleCollectionId, 2, Alice, Bob);
+ // reFungible
+ const reFungibleCollectionId =
+ await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+ await approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);
});
it('Approve using the address that does not own the approved token', async () => {
- await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const nftCollectionId = await createCollectionExpectSuccess();
- // nft
- const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
- await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);
- // fungible
- const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
- const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
- await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);
- // reFungible
- const reFungibleCollectionId =
- await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
- const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
- await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);
- });
+ const nftCollectionId = await createCollectionExpectSuccess();
+ // nft
+ const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+ await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);
+ // fungible
+ const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+ const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
+ await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);
+ // reFungible
+ const reFungibleCollectionId =
+ await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+ const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+ await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);
+ });
+
+ it('should fail if approved more NFTs than owned', async () => {
+ const nftCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+ const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+ await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');
+ await approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice);
+ await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);
+ });
+
+ it('should fail if approved more ReFungibles than owned', async () => {
+ const nftCollectionId = await createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });
+ const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'ReFungible');
+ await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 100, 'ReFungible');
+ await approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 100);
+ await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);
+ });
+
+ it('should fail if approved more Fungibles than owned', async () => {
+ const nftCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });
+ const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'Fungible');
+ await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 10, 'Fungible');
+ await approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 10);
+ await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);
+ });
+
+ it('fails when called by collection owner on non-owned item when OwnerCanTransfer == false', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
+ await setCollectionLimitsExpectSuccess(Alice, collectionId, { OwnerCanTransfer: false });
+
+ await approveExpectFail(collectionId, itemId, Alice, Charlie);
});
});
tests/src/destroyCollection.test.tsdiffbeforeafterboth--- a/tests/src/destroyCollection.test.ts
+++ b/tests/src/destroyCollection.test.ts
@@ -3,10 +3,12 @@
// file 'LICENSE', which is part of this source code package.
//
+import { IKeyringPair } from '@polkadot/types/types';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
+import privateKey from './substrate/privateKey';
import { default as usingApi } from "./substrate/substrate-api";
-import { createCollectionExpectSuccess, destroyCollectionExpectSuccess, destroyCollectionExpectFailure } from "./util/helpers";
+import { createCollectionExpectSuccess, destroyCollectionExpectSuccess, destroyCollectionExpectFailure, setCollectionLimitsExpectSuccess } from "./util/helpers";
chai.use(chaiAsPromised);
@@ -26,6 +28,14 @@
});
describe('(!negative test!) integration test: ext. destroyCollection():', () => {
+ let alice: IKeyringPair;
+
+ before(async () => {
+ await usingApi(async (api) => {
+ alice = privateKey('//Alice');
+ });
+ });
+
it('(!negative test!) Destroy a collection that never existed', async () => {
await usingApi(async (api) => {
// Find the collection that never existed
@@ -43,4 +53,10 @@
await destroyCollectionExpectFailure(collectionId, '//Bob');
await destroyCollectionExpectSuccess(collectionId, '//Alice');
});
+ it('fails when OwnerCanDestroy == false', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ await setCollectionLimitsExpectSuccess(alice, collectionId, { OwnerCanDestroy: false });
+
+ await destroyCollectionExpectFailure(collectionId, '//Alice');
+ });
});
tests/src/setCollectionLimits.test.tsdiffbeforeafterboth--- a/tests/src/setCollectionLimits.test.ts
+++ b/tests/src/setCollectionLimits.test.ts
@@ -14,6 +14,8 @@
createCollectionExpectSuccess, getCreatedCollectionCount,
getCreateItemResult,
getDetailedCollectionInfo,
+ setCollectionLimitsExpectFailure,
+ setCollectionLimitsExpectSuccess,
} from './util/helpers';
chai.use(chaiAsPromised);
@@ -26,21 +28,8 @@
const accountTokenOwnershipLimit = 0;
const sponsoredDataSize = 0;
const sponsoredMintSize = 0;
-const tokenLimit = 0;
-
-describe('hooks', () => {
- before(async () => {
- await usingApi(async () => {
- const keyring = new Keyring({ type: 'sr25519' });
- alice = keyring.addFromUri('//Alice');
- });
- });
- it('choose or create collection for testing', async () => {
- await usingApi(async () => {
- collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
- });
- });
-});
+const sponsorTimeout = 1;
+const tokenLimit = 1;
describe('setCollectionLimits positive', () => {
let tx;
@@ -48,6 +37,7 @@
await usingApi(async () => {
const keyring = new Keyring({ type: 'sr25519' });
alice = keyring.addFromUri('//Alice');
+ collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
});
});
it('execute setCollectionLimits with predefined params ', async () => {
@@ -55,25 +45,28 @@
tx = api.tx.nft.setCollectionLimits(
collectionIdForTesting,
{
- accountTokenOwnershipLimit,
- sponsoredDataSize,
- sponsoredMintSize,
- tokenLimit,
+ AccountTokenOwnershipLimit: accountTokenOwnershipLimit,
+ SponsoredMintSize: sponsoredDataSize,
+ TokenLimit: tokenLimit,
+ SponsorTimeout: sponsorTimeout,
+ OwnerCanTransfer: true,
+ OwnerCanDestroy: true
},
);
const events = await submitTransactionAsync(alice, tx);
const result = getCreateItemResult(events);
+
+ // get collection limits defined previously
+ const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
+
// tslint:disable-next-line:no-unused-expression
expect(result.success).to.be.true;
- });
- });
- it('get collection limits defined in previous test', async () => {
- await usingApi(async (api: ApiPromise) => {
- const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
expect(collectionInfo.Limits.AccountTokenOwnershipLimit.toNumber()).to.be.equal(accountTokenOwnershipLimit);
- expect(collectionInfo.Limits.SponsoredMintSize.toNumber()).to.be.equal(sponsoredMintSize);
+ expect(collectionInfo.Limits.SponsoredMintSize.toNumber()).to.be.equal(sponsoredDataSize);
expect(collectionInfo.Limits.TokenLimit.toNumber()).to.be.equal(tokenLimit);
- expect(collectionInfo.Limits.SponsorTimeout.toNumber()).to.be.equal(sponsoredDataSize);
+ expect(collectionInfo.Limits.SponsorTimeout.toNumber()).to.be.equal(sponsorTimeout);
+ expect(collectionInfo.Limits.OwnerCanTransfer.valueOf()).to.be.true;
+ expect(collectionInfo.Limits.OwnerCanDestroy.valueOf()).to.be.true;
});
});
});
@@ -85,6 +78,7 @@
const keyring = new Keyring({ type: 'sr25519' });
alice = keyring.addFromUri('//Alice');
bob = keyring.addFromUri('//Bob');
+ collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
});
});
it('execute setCollectionLimits for not exists collection', async () => {
@@ -131,4 +125,44 @@
await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
});
});
+
+ it('fails when trying to enable OwnerCanTransfer after it was disabled', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {
+ AccountTokenOwnershipLimit: accountTokenOwnershipLimit,
+ SponsoredMintSize: sponsoredDataSize,
+ TokenLimit: tokenLimit,
+ SponsorTimeout: sponsorTimeout,
+ OwnerCanTransfer: false,
+ OwnerCanDestroy: true
+ });
+ await setCollectionLimitsExpectFailure(alice, collectionId, {
+ AccountTokenOwnershipLimit: accountTokenOwnershipLimit,
+ SponsoredMintSize: sponsoredDataSize,
+ TokenLimit: tokenLimit,
+ SponsorTimeout: sponsorTimeout,
+ OwnerCanTransfer: true,
+ OwnerCanDestroy: true
+ });
+ });
+
+ it('fails when trying to enable OwnerCanDestroy after it was disabled', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {
+ AccountTokenOwnershipLimit: accountTokenOwnershipLimit,
+ SponsoredMintSize: sponsoredDataSize,
+ TokenLimit: tokenLimit,
+ SponsorTimeout: sponsorTimeout,
+ OwnerCanTransfer: true,
+ OwnerCanDestroy: false
+ });
+ await setCollectionLimitsExpectFailure(alice, collectionId, {
+ AccountTokenOwnershipLimit: accountTokenOwnershipLimit,
+ SponsoredMintSize: sponsoredDataSize,
+ TokenLimit: tokenLimit,
+ SponsorTimeout: sponsorTimeout,
+ OwnerCanTransfer: true,
+ OwnerCanDestroy: true
+ });
+ });
});
tests/src/transferFrom.test.tsdiffbeforeafterboth--- a/tests/src/transferFrom.test.ts
+++ b/tests/src/transferFrom.test.ts
@@ -3,6 +3,7 @@
// file 'LICENSE', which is part of this source code package.
//
import { ApiPromise } from '@polkadot/api';
+import { IKeyringPair } from '@polkadot/types/types';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import privateKey from './substrate/privateKey';
@@ -18,17 +19,27 @@
transferFromExpectFail,
transferFromExpectSuccess,
burnItemExpectSuccess,
+ setCollectionLimitsExpectSuccess,
} from './util/helpers';
chai.use(chaiAsPromised);
const expect = chai.expect;
describe('Integration Test transferFrom(from, recipient, collection_id, item_id, value):', () => {
+ let Alice: IKeyringPair;
+ let Bob: IKeyringPair;
+ let Charlie: IKeyringPair;
+
+ before(async () => {
+ await usingApi(async (api) => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Charlie = privateKey('//Charlie');
+ });
+ });
+
it('Execute the extrinsic and check nftItemList - owner of token', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
// nft
const nftCollectionId = await createCollectionExpectSuccess();
const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -66,14 +77,30 @@
expect((await getAllowance(fungibleCollectionId, newFungibleTokenId, alice.address, bob.address)).toString()).to.equal('0');
});
});
+
+ it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
+
+ await transferFromExpectSuccess(collectionId, itemId, Alice, Bob, Charlie);
+ });
});
describe('Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value):', () => {
+ let Alice: IKeyringPair;
+ let Bob: IKeyringPair;
+ let Charlie: IKeyringPair;
+
+ before(async () => {
+ await usingApi(async (api) => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Charlie = privateKey('//Charlie');
+ });
+ });
+
it('transferFrom for a collection that does not exist', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
// nft
const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
await approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);
@@ -113,9 +140,6 @@
it('transferFrom for not approved address', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
// nft
const nftCollectionId = await createCollectionExpectSuccess();
const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -137,9 +161,6 @@
it('transferFrom incorrect token count', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
// nft
const nftCollectionId = await createCollectionExpectSuccess();
const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -164,9 +185,6 @@
it('execute transferFrom from account that is not owner of collection', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
const Dave = privateKey('//Dave');
// nft
const nftCollectionId = await createCollectionExpectSuccess();
@@ -206,9 +224,6 @@
});
it( 'transferFrom burnt token before approve NFT', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
// nft
const nftCollectionId = await createCollectionExpectSuccess();
const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -219,9 +234,6 @@
});
it( 'transferFrom burnt token before approve Fungible', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
await burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);
@@ -232,9 +244,6 @@
});
it( 'transferFrom burnt token before approve ReFungible', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);
@@ -246,9 +255,6 @@
it( 'transferFrom burnt token after approve NFT', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
// nft
const nftCollectionId = await createCollectionExpectSuccess();
const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -259,9 +265,6 @@
});
it( 'transferFrom burnt token after approve Fungible', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
@@ -272,9 +275,6 @@
});
it( 'transferFrom burnt token after approve ReFungible', async () => {
await usingApi(async (api: ApiPromise) => {
- const Alice = privateKey('//Alice');
- const Bob = privateKey('//Bob');
- const Charlie = privateKey('//Charlie');
const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
@@ -282,5 +282,13 @@
await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);
});
- });
+ });
+
+ it('fails when called by collection owner on non-owned item when OwnerCanTransfer == false', async () => {
+ const collectionId = await createCollectionExpectSuccess();
+ const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
+ await setCollectionLimitsExpectSuccess(Alice, collectionId, { OwnerCanTransfer: false });
+
+ await transferFromExpectFail(collectionId, itemId, Alice, Bob, Charlie);
+ });
});
tests/src/types.tsdiffbeforeafterboth--- a/tests/src/types.ts
+++ b/tests/src/types.ts
@@ -17,6 +17,8 @@
SponsoredMintSize: BN;
TokenLimit: BN;
SponsorTimeout: BN;
+ OwnerCanTransfer: boolean;
+ OwnerCanDestroy: boolean;
};
MintMode: boolean;
Mode: {
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -36,6 +36,16 @@
success: boolean;
collectionId: number;
itemId: number;
+ recipient: string;
+}
+
+interface TransferResult {
+ success: boolean;
+ collectionId: number;
+ itemId: number;
+ sender: string;
+ recipient: string;
+ value: bigint;
}
interface IReFungibleOwner {
@@ -94,6 +104,7 @@
let success = false;
let collectionId: number = 0;
let itemId: number = 0;
+ let recipient: string = '';
events.forEach(({ phase, event: { data, method, section } }) => {
// console.log(` ${phase}: ${section}.${method}:: ${data}`);
if (method == 'ExtrinsicSuccess') {
@@ -101,13 +112,40 @@
} else if ((section == 'nft') && (method == 'ItemCreated')) {
collectionId = parseInt(data[0].toString());
itemId = parseInt(data[1].toString());
+ recipient = data[2].toString();
}
});
const result: CreateItemResult = {
success,
collectionId,
itemId,
+ recipient,
+ };
+ return result;
+}
+
+export function getTransferResult(events: EventRecord[]): TransferResult {
+ const result: TransferResult = {
+ success: false,
+ collectionId: 0,
+ itemId: 0,
+ sender: '',
+ recipient: '',
+ value: 0n,
};
+
+ events.forEach(({event: {data, method, section}}) => {
+ if (method === 'ExtrinsicSuccess') {
+ result.success = true;
+ } else if (section === 'nft' && method === 'Transfer') {
+ result.collectionId = +data[0].toString();
+ result.itemId = +data[1].toString();
+ result.sender = data[2].toString();
+ result.recipient = data[3].toString();
+ result.value = BigInt(data[4].toString());
+ }
+ });
+
return result;
}
@@ -670,9 +708,14 @@
}
const transferTx = await api.tx.nft.transfer(recipient.address, collectionId, tokenId, value);
const events = await submitTransactionAsync(sender, transferTx);
- const result = getCreateItemResult(events);
+ const result = getTransferResult(events);
// tslint:disable-next-line:no-unused-expression
expect(result.success).to.be.true;
+ expect(result.collectionId).to.be.equal(collectionId);
+ expect(result.itemId).to.be.equal(tokenId);
+ expect(result.sender).to.be.equal(sender.address);
+ expect(result.recipient).to.be.equal(recipient.address);
+ expect(result.value.toString()).to.be.equal(value.toString());
if (type === 'NFT') {
const nftItemData = await api.query.nft.nftItemList(collectionId, tokenId) as unknown as ITokenDataType;
expect(nftItemData.Owner.toString()).to.be.equal(recipient.address);
@@ -786,6 +829,7 @@
}
expect(collectionId).to.be.equal(result.collectionId);
expect(BItemCount).to.be.equal(result.itemId);
+ expect(owner).to.be.equal(result.recipient);
newItemId = result.itemId;
});
return newItemId;