difftreelog
Merge branch 'develop' into feature/NFTPAR-96
in: master
# Conflicts: # pallets/nft/src/lib.rs # pallets/nft/src/tests.rs
34 files changed
.dockerignorediffbeforeafterboth--- a/.dockerignore
+++ b/.dockerignore
@@ -3,4 +3,4 @@
doc/
target/
chain-data*/
-smart_contract/
\ No newline at end of file
+smart_contract/
Cargo.lockdiffbeforeafterboth599 packageslockfile v1
Might be heavy and slow!
addr2line
0.13.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072depends onused byadler
0.2.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7eused byadler32
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum567b077b825e468cc974f0020d4082ee6e03132512f207ef1a02fd5d00d1f32dused byaead
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331depends onaes
0.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7001367fde4c768a19d1029f0a8be5abd9308e1119846d5bd9ad26297b8faf5depends onused byaes-gcm
0.6.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86f5007801316299f922a6198d1d09a0bae95786815d066d5880d13f7c45ead1used byaes-soft
0.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4925647ee64e5056cf231608957ce7c81e12d6d6e316b9ce1404778cc1d35fa7used byaesni
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050d39b0b7688b3a3254394c3e30a9d66c41dcf9b05b0e2dbdc623f6505d264depends onused byahash
0.2.18crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3depends onaho-corasick
0.7.13crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86depends onused byalga
0.9.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2used byansi_term
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979bdepends onused byansi_term
0.12.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.31crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195fused byapprox
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3depends onused byarc-swap
0.4.7crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034arrayref
0.3.6crates.io↘ 0↖ 6sourceregistry+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.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8asn1_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 byassert_matches
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7deb0a829ca7bcfaf5da70b073a8d128619259a7be8216a355e23f00763059e5used byasync-std
1.5.0crates.io↘ 18↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum538ecb01eb64eecd772087e5b6f7540cbc917f047727339a472dafed2185b267depends onasync-task
1.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ac2c016b079e771204030951c366db398864f5026f84a44dafb0ff20f02085ddepends onused byasync-tls
0.7.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95fd83426b89b034bf4e9ceb9c533c2f2386b813fd3dcae0a425ec6f1837d78aused byatty
0.2.14crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onautocfg
0.1.7crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2autocfg
1.0.0crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9dbacktrace
0.3.50crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293base58
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83used bybase64
0.11.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7bindgen
0.53.3crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5depends onused bybitflags
1.2.1crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693bitmask
0.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687eadused bybitvec
0.17.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5cdepends onused byblake2
0.8.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94cb07b0da6a73955f8fb85d24c466778e70cda767a568229b104f0264089330used byblake2
0.9.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84ce5b6108f8e154604bd4eb76a2f726066c3464d5a552a4229262a18c9bb471used byblake2-rfc
0.2.18crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400depends onblake2b_simd
0.5.10crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8ablake2s_simd
0.5.10crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab9e07352b829279624ceb7c64adb4f585dacdb81d35cafae81139ccd617cf44used byblock-buffer
0.7.3crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bused byblock-buffer
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-cipher
0.7.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa136449e765dc7faa244561ccae839c394048667929af599b5d931ebe7b7f10depends onblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused bybroadcaster
1.0.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9c972e21e0d055a36cf73e4daae870941fe7a8abcd5ac3396aab9e4c126bd87depends onused bybs58
0.3.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fbbstr
0.2.13crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31accafdb70df7871592c058eca3985b71104e15ac32f64706022c58867da931depends onused bybumpalo
3.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820used bybyte-slice-cast
0.3.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3used bybyte-tools
0.3.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7byteorder
1.3.4crates.io↘ 0↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472debytes
0.4.12crates.io↘ 3↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81cdepends onbytes
0.5.6crates.io↘ 0↖ 24sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38used by- futures_codec
0.3.4 - futures_codec
0.4.1 - h2
0.2.6 - http
0.2.1 - http-body
0.3.1 - hyper
0.13.7 - hyper-rustls
0.20.0 - libp2p
0.19.1 - libp2p-kad
0.19.0 - libp2p-mplex
0.19.2 - libp2p-websocket
0.19.0 - multistream-select
0.8.2 - parity-multihash
0.2.3 - prost
0.6.1 - prost-build
0.6.1 - prost-types
0.6.1 - sc-network
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-telemetry
2.0.0-rc4 - soketto
0.3.2 - tokio
0.2.21 - tokio-util
0.3.1 - unsigned-varint
0.3.3 - unsigned-varint
0.4.0
- futures_codec
c_linked_list
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724bused bycc
1.0.58crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518depends oncexpr
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27depends onused bycfg-if
0.1.10crates.io↘ 0↖ 25sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822used by- backtrace
0.3.50 - bindgen
0.53.3 - crc32fast
1.2.0 - crossbeam-epoch
0.8.2 - crossbeam-queue
0.2.3 - crossbeam-utils
0.7.2 - directories
2.0.2 - flate2
1.0.16 - getrandom
0.1.14 - log
0.4.11 - mio
0.6.22 - net2
0.2.34 - nix
0.17.0 - parity-util-mem
0.6.1 - parking_lot_core
0.6.2 - parking_lot_core
0.7.2 - polyval
0.4.0 - prometheus
0.8.0 - sha2
0.9.1 - socket2
0.3.12 - sysinfo
0.13.4 - tempfile
3.1.0 - tracing
0.1.16 - wasm-bindgen
0.2.65 - wasm-bindgen-futures
0.4.15
- backtrace
chacha20
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum086c0f07ac275808b7bf9a39f2fd013aae1498be83632814c8c4e0bd53f2dc58depends onused bychacha20poly1305
0.5.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18b0c90556d8e3fec7cf18d84a2f53d27b21288f2fe481b830fadcf809e48205used bychrono
0.4.13crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6clang-sys
0.29.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10adepends onused byclap
2.33.1crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129depends onused byclear_on_drop
0.2.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9cc5db465b294c3fa986d5bbb0f3017cd850bff6dd6c52f9ccff8b4d21b7b08depends onused bycloudabi
0.0.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4fdepends onconst-random
0.1.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16aused byconst-random-macro
0.1.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7adepends onused byconstant_time_eq
0.1.5crates.io↘ 0↖ 4sourceregistry+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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634used bycrc32fast
1.2.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1depends oncrossbeam-channel
0.4.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcced8691919c02aac3cb0a1bc2e9b73d89e832bf9a06fc579d4e71b68a2da061depends onused bycrossbeam-deque
0.7.3crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285crossbeam-epoch
0.8.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dacedepends onused bycrossbeam-queue
0.2.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570crossbeam-utils
0.7.2crates.io↘ 3↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8depends oncrunchy
0.2.2crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-mac
0.7.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5depends oncrypto-mac
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onused byct-logs
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d3686f5fa27dbc1d76c751300376e167c5a43387f44bb451fd1c24776e49113depends onused bycurve25519-dalek
2.1.0crates.io↘ 5↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d85653f070353a16313d0046f173f70d1aadd5b42600a14de626f0dfb3473a5data-encoding
2.2.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72aa14c04dfae8dd7d8a2b1cb7ca2152618cd01336dbfe704b8dcbf8d41dbd69derive_more
0.99.9crates.io↘ 3↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum298998b1cf6b5b2c8a7b023dfd45821825ce3ba8a8af55c921a0e734e4653f76depends onused by- sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-executor-common
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-service
0.8.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-allocator
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4
- sc-cli
digest
0.8.1crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends onused bydirectories
2.0.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371cdepends onused bydirs-sys
0.3.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57adepends onused bydns-parser
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbeadepends onused bydoc-comment
0.3.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10used byed25519-dalek
1.0.0-pre.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2either
1.5.3crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3enum-primitive-derive
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2b90e520ec62c1864c8c78d637acbfe8baf5f63240f2fb8165b8325c07812dddepends onused byenv_logger
0.7.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36used byenvironmental
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4used byerased-serde
0.3.12crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38depends onexit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byfailure
0.1.8crates.io↘ 2↖ 3sourceregistry+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 byfdlimit
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0da54a593b34c71b889ee45f5b5bb900c74148c5f7f8c6a9479ee7899f69603cdepends onused byfinality-grandpa
0.12.3crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8feb87a63249689640ac9c011742c33139204e3c134293d3054022276869133bdepends onfixed-hash
0.6.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11498d382790b7a8f2fd211780bec78619bba81cdad3a283997c0c41f836759cused byfixedbitset
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04dused byflate2
1.0.16crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68c90b0fc46cf89d227cc78b40e494ff81287a92dd07631e5af0d06fe3cf885eused byfnv
1.0.7crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 1↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onframe-benchmarking
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 10↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onframe-executive
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused byframe-metadata
11.0.0-rc4github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used byframe-support
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 18↖ 16sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- bitmask
0.5.0 - frame-metadata
11.0.0-rc4 - frame-support-procedural
2.0.0-rc4 - impl-trait-for-tuples
0.1.3 - log
0.4.11 - once_cell
1.4.0 - parity-scale-codec
1.3.1 - paste
0.1.18 - serde
1.0.114 - smallvec
1.4.1 - sp-arithmetic
2.0.0-rc4 - sp-core
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-std
2.0.0-rc4 - sp-tracing
2.0.0-rc4
used by- frame-benchmarking
2.0.0-rc4 - frame-executive
2.0.0-rc4 - frame-system
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-balances
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-finality-tracker
2.0.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-randomness-collective-flip
2.0.0-rc4 - pallet-session
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - pallet-transaction-payment
2.0.0-rc4 - pallet-transaction-payment-rpc-runtime-api
2.0.0-rc4
- bitmask
frame-support-procedural
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used byframe-support-procedural-tools
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onframe-support-procedural-tools-derive
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 3↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onframe-system
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 14sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused by- frame-benchmarking
2.0.0-rc4 - frame-executive
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-balances
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-finality-tracker
2.0.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-randomness-collective-flip
2.0.0-rc4 - pallet-session
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - pallet-transaction-payment
2.0.0-rc4
- frame-benchmarking
fs-swap
0.2.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bbused byfuchsia-cprng
0.1.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3bafuchsia-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.29crates.io↘ 0↖ 27sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703efused by- futures-cpupool
0.1.8 - futures-diagnose
1.0.1 - futures-util
0.3.5 - h2
0.1.26 - http-body
0.1.0 - hyper
0.12.35 - jsonrpc-client-transports
14.2.0 - jsonrpc-core
14.2.0 - parity-tokio-ipc
0.4.0 - sc-service
0.8.0-rc4 - 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.5crates.io↘ 7↖ 49sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613depends onused by- async-tls
0.7.0 - exit-future
0.2.0 - finality-grandpa
0.12.3 - futures-diagnose
1.0.1 - futures_codec
0.3.4 - futures_codec
0.4.1 - intervalier
0.4.0 - libp2p
0.19.1 - libp2p-core
0.19.2 - libp2p-dns
0.19.0 - libp2p-identify
0.19.2 - libp2p-kad
0.19.0 - libp2p-mdns
0.19.2 - libp2p-mplex
0.19.2 - libp2p-noise
0.19.1 - libp2p-ping
0.19.3 - libp2p-swarm
0.19.1 - libp2p-tcp
0.19.2 - libp2p-wasm-ext
0.19.0 - libp2p-websocket
0.19.0 - libp2p-yamux
0.19.1 - multistream-select
0.8.2 - nft
2.0.0-rc4 - rw-stream-sink
0.2.1 - sc-basic-authorship
0.8.0-rc4 - sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-informant
0.8.0-rc4 - sc-network
0.8.0-rc4 - sc-network-gossip
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-peerset
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-service
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - soketto
0.3.2 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-utils
2.0.0-rc4 - wasm-timer
0.2.4 - yamux
0.4.7
- async-tls
futures_codec
0.3.4crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0a73299e4718f5452e45980fc1d6957a070abe308d3700b63b8673f47e1c2b3futures_codec
0.4.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce54d63f8b0c75023ed920d46fd71d0cbbb830b0ee012726b5b4f506fb6dea5bfutures-channel
0.3.5crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5depends onfutures-channel-preview
0.3.0-alpha.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263adepends onfutures-core
0.3.5crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399futures-core-preview
0.3.0-alpha.19crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60afutures-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.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314used byfutures-io
0.3.5crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789futures-macro
0.3.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39used byfutures-sink
0.3.5crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8accfutures-task
0.3.5crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626depends onfutures-timer
2.0.2crates.io↘ 0↖ 3sourceregistry+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.5crates.io↘ 13↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6depends onfutures-util-preview
0.3.0-alpha.19crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8ddepends ongcc
0.3.55crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2used bygeneric-array
0.12.3crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ecdepends ongeneric-array
0.14.3crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60fb4bb6bba52f78a471264d9a3b7d026cc0af47b22cd2cffbc0b787ca003e63depends onget_if_addrs
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7used byget_if_addrs-sys
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48depends onused bygetrandom
0.1.14crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503ebghash
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531depends onused bygimli
0.22.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724used byglob
0.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ad1da430bd7281dde2576f44c84cc3f0f7b475e7202cd503042dff01a8c8120used byh2
0.1.26crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462depends onused byh2
0.2.6crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53depends onused 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 onhashbrown
0.6.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6eaddepends onhashbrown
0.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34f595585f103464d8d2f6e9864682d74c1601fed5e07d62b1c9058dba8246fbdepends onused byheck
0.3.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205depends onhermit-abi
0.1.15crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9depends onused byhex
0.4.2crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35hex-literal
0.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0used byhex-literal-impl
0.2.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum853f769599eb31de176303197b7ba4973299c38c7a7604a6bc88c3eef05b9b46depends onused byhmac
0.7.1crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695depends onhmac-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.1crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9depends 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.4crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9humantime
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.7crates.io↘ 16↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e68a8dd9716185d9e64ea473ea6ef63529252e3e27623295a0378a19665d5ebdepends onhyper-rustls
0.20.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac965ea399ec3a25ac7d13b8affd4b8f39325cca00858ddf5eb29b79e6b14b08depends onused byidna
0.1.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844eused byidna
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9used byimpl-codec
0.4.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53depends onused byimpl-serde
0.2.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58e3cae7e99c7ff5a995da2cf78dd0a5383740eda71d98cf7b1910c301ac69b8depends onimpl-serde
0.3.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6fdepends onimpl-trait-for-tuples
0.1.3crates.io↘ 3↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9ddepends onindexmap
1.5.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b88cd59ee5f71fea89a62248fc8f387d44400cefe05ef548466d61ced9029a7depends onused byInflector
0.11.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninteger-sqrt
0.1.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088bused 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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135used byitertools
0.8.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484depends onitertools
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54bdepends onused byitoa
0.4.6crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6jobserver
0.1.21crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2depends onused byjs-sys
0.3.42crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52732a3d3ad72c58ad2dc70624f9c17b46ecd0943b9a4f1ee37c4c18c5d983e2depends onjsonrpc-client-transports
14.2.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumecbdaacc17243168d9d1fa6b2bd7556a27e1e60a621d8a2a6e590ae2b145d158depends onused byjsonrpc-core
14.2.0crates.io↘ 5↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0747307121ffb9703afd93afbd0fb4f854c38fb873f2c8b90e0e902f27c7b62jsonrpc-core-client
14.2.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34221123bc79b66279a3fde2d3363553835b43092d629b34f2e760c44dc94713depends onjsonrpc-derive
14.2.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fadf6945e227246825a583514534d864554e9f23d80b3c77d034b10983db5efjsonrpc-http-server
14.2.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0da906d682799df05754480dac1b9e70ec92e12c19ebafd2662a5ea1c9fd6522depends onused byjsonrpc-ipc-server
14.2.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdedccd693325d833963b549e959137f30a7a0ea650cde92feda81dc0c1393cb5depends onused byjsonrpc-pubsub
14.2.0crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d44f5602a11d657946aac09357956d2841299ed422035edf140c552cb057986jsonrpc-server-utils
14.2.0crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56cbfb462e7f902e21121d9f0d1c2b77b2c5b642e1a4e8f4ebfa2e15b94402bbdepends onjsonrpc-ws-server
14.2.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum903d3109fe7c4acb932b567e1e607e0f524ed04741b09fb0e61841bc40a022fcused 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.6.0crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume763b2a9b500ba47948061d1e8bc3b5f03a8a1f067dbcf822a4d2c84d2b54a3adepends onkvdb-memorydb
0.6.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73027d5e228de6f503b5b7335d530404fc26230a6ae3e09b33ec6e45408509a4used bykvdb-rocksdb
0.8.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84384eca250c7ff67877eda5336f28a86586aaee24acb945643590671f6bfce1depends onused bylazy_static
1.4.0crates.io↘ 0↖ 32sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.53.3 - crossbeam-epoch
0.8.2 - crossbeam-utils
0.7.2 - fs-swap
0.2.4 - futures-diagnose
1.0.1 - jsonrpc-server-utils
14.2.0 - libp2p
0.19.1 - libp2p-core
0.19.2 - libp2p-mdns
0.19.2 - libp2p-noise
0.19.1 - procfs
0.7.9 - prometheus
0.8.0 - rayon-core
1.7.1 - sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-executor
0.8.0-rc4 - sc-light
2.0.0-rc4 - sc-service
0.8.0-rc4 - schannel
0.1.19 - slog-scope
4.3.0 - sp-core
2.0.0-rc4 - sp-keyring
2.0.0-rc4 - sp-utils
2.0.0-rc4 - structopt
0.3.15 - thread_local
1.0.1 - tokio
0.2.21 - tokio-executor
0.2.0-alpha.6 - tokio-reactor
0.1.12 - tokio-threadpool
0.1.18 - tracing-core
0.1.11 - wasm-bindgen-backend
0.2.65
- Inflector
lazycell
1.2.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783fused bylibc
0.2.73crates.io↘ 0↖ 50sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd7d4bd64732af4bf3a67f367c27df8520ad7e230c5817b8ff485864d80242b9used by- async-task
1.3.1 - atty
0.2.14 - backtrace
0.3.50 - clang-sys
0.29.3 - core-foundation
0.7.0 - dirs-sys
0.3.5 - fdlimit
0.1.4 - flate2
1.0.16 - fs-swap
0.2.4 - get_if_addrs
0.5.3 - get_if_addrs-sys
0.1.1 - getrandom
0.1.14 - hermit-abi
0.1.15 - iovec
0.1.4 - jobserver
0.1.21 - librocksdb-sys
6.7.4 - libz-sys
1.0.25 - memmap
0.7.0 - mio
0.6.22 - mio-uds
0.6.8 - net2
0.2.34 - netstat2
0.8.1 - nix
0.17.0 - 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 - procfs
0.7.9 - rand
0.3.23 - rand
0.4.6 - rand
0.5.6 - rand
0.6.5 - rand
0.7.3 - rand_jitter
0.1.4 - rand_os
0.1.3 - ring
0.16.15 - rocksdb
0.14.0 - rpassword
4.0.5 - security-framework
0.4.4 - security-framework-sys
0.4.3 - signal-hook-registry
1.2.0 - socket2
0.3.12 - sysinfo
0.13.4 - tempfile
3.1.0 - time
0.1.43 - tokio
0.2.21 - tokio-uds
0.2.7 - wasmi
0.6.2 - which
3.1.1
- async-task
libflate
1.0.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume9bac9023e1db29c084f9f8cd9d3852e5e8fddf98fb47c4964a0ea4663d95949used bylibflate_lz77
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3286f09f7d4926fc486334f28d8d2e6ebe4f7f9994494b6dab27ddfad2c9b11bused bylibloading
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.19.1crates.io↘ 23↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum057eba5432d3e740e313c6e13c9153d0cb76b4f71bfc2e5242ae5bdb7d41af67depends on- bytes
0.5.6 - futures
0.3.5 - lazy_static
1.4.0 - libp2p-core
0.19.2 - libp2p-core-derive
0.19.1 - libp2p-dns
0.19.0 - libp2p-identify
0.19.2 - libp2p-kad
0.19.0 - libp2p-mdns
0.19.2 - libp2p-mplex
0.19.2 - libp2p-noise
0.19.1 - libp2p-ping
0.19.3 - libp2p-swarm
0.19.1 - libp2p-tcp
0.19.2 - libp2p-wasm-ext
0.19.0 - libp2p-websocket
0.19.0 - libp2p-yamux
0.19.1 - multihash
0.11.2 - parity-multiaddr
0.9.1 - parking_lot
0.10.2 - pin-project
0.4.22 - smallvec
1.4.1 - wasm-timer
0.2.4
- bytes
libp2p-core
0.19.2crates.io↘ 26↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a0387b930c3d4c2533dc4893c1e0394185ddcc019846121b1b27491e45a2c08depends on- asn1_der
0.6.3 - bs58
0.3.1 - ed25519-dalek
1.0.0-pre.3 - either
1.5.3 - fnv
1.0.7 - futures
0.3.5 - futures-timer
3.0.2 - lazy_static
1.4.0 - libsecp256k1
0.3.5 - log
0.4.11 - multihash
0.11.2 - multistream-select
0.8.2 - parity-multiaddr
0.9.1 - parking_lot
0.10.2 - pin-project
0.4.22 - prost
0.6.1 - prost-build
0.6.1 - rand
0.7.3 - ring
0.16.15 - rw-stream-sink
0.2.1 - sha2
0.8.2 - smallvec
1.4.1 - thiserror
1.0.20 - unsigned-varint
0.4.0 - void
1.0.2 - zeroize
1.1.0
- asn1_der
libp2p-core-derive
0.19.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf09548626b737ed64080fde595e06ce1117795b8b9fc4d2629fa36561c583171depends onused bylibp2p-dns
0.19.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3cc186d9a941fd0207cf8f08ef225a735e2d7296258f570155e525f6ee732f87depends onused bylibp2p-identify
0.19.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62f76075b170d908bae616f550ade410d9d27c013fa69042551dbfc757c7c094depends onused bylibp2p-kad
0.19.0crates.io↘ 19↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41d6c1d5100973527ae70d82687465b17049c1b717a7964de38b8e65000878ffdepends onused bylibp2p-mdns
0.19.2crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f55b2d4b80986e5bf158270ab23268ec0e7f644ece5436fbaabc5155472f357depends onused bylibp2p-mplex
0.19.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe7d913a4cd57de2013257ec73f07d77bfce390b370023e2d59083e5ca079864depends onused bylibp2p-noise
0.19.1crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma03db664653369f46ee03fcec483a378c20195089bb43a26cb9fb0058009ac88depends onused bylibp2p-ping
0.19.3crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8dedd34e35a9728d52d59ef36a218e411359a353f9011b2574b86ee790978f6used bylibp2p-swarm
0.19.1crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce53ff4d127cf8b39adf84dbd381ca32d49bd85788cee08e6669da2495993930libp2p-tcp
0.19.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9481500c5774c62e8c413e9535b3f33a0e3dbacf2da63b8d3056c686a9df4146depends onused bylibp2p-wasm-ext
0.19.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf59fdbb5706f2723ca108c088b1c7a37f735a8c328021f0508007162627e9885depends onused bylibp2p-websocket
0.19.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum085fbe4c05c4116c2164ab4d5a521eb6e00516c444f61b3ee9f68c7b1e53580bdepends onused bylibp2p-yamux
0.19.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da33e7b5f49c75c6a8afb0b8d1e229f5fa48be9f39bd14cdbc21459a02ac6fcused bylibrocksdb-sys
6.7.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum883213ae3d09bfc3d104aefe94b25ebb183b6f4d3a515b23b14817e1f4854005depends onused bylibsecp256k1
0.3.5crates.io↘ 8↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962depends onlibz-sys
1.0.25crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebeused bylinked_hash_set
0.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c7c91c4c7bbeb4f2f7c4e5be11e6a05bd6830bc37249c47ce1ad86ad453ff9cdepends onused bylinked-hash-map
0.5.3crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304alinregress
0.1.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9290cf6f928576eeb9c096c6fad9d8d452a0a1a70a2bbffa6e36064eedc0aac9depends onused bylock_api
0.3.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75depends onlog
0.4.11crates.io↘ 1↖ 92sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8bdepends onused by- async-std
1.5.0 - bindgen
0.53.3 - env_logger
0.7.1 - finality-grandpa
0.12.3 - frame-support
2.0.0-rc4 - futures-diagnose
1.0.1 - globset
0.4.5 - h2
0.1.26 - hyper
0.12.35 - hyper-rustls
0.20.0 - jsonrpc-client-transports
14.2.0 - jsonrpc-core
14.2.0 - jsonrpc-http-server
14.2.0 - jsonrpc-ipc-server
14.2.0 - jsonrpc-pubsub
14.2.0 - jsonrpc-server-utils
14.2.0 - jsonrpc-ws-server
14.2.0 - kv-log-macro
1.0.7 - kvdb-rocksdb
0.8.0 - libp2p-core
0.19.2 - libp2p-dns
0.19.0 - libp2p-identify
0.19.2 - libp2p-kad
0.19.0 - libp2p-mdns
0.19.2 - libp2p-mplex
0.19.2 - libp2p-noise
0.19.1 - libp2p-ping
0.19.3 - libp2p-swarm
0.19.1 - libp2p-tcp
0.19.2 - libp2p-websocket
0.19.0 - mio
0.6.22 - mio-extras
2.0.6 - mio-named-pipes
0.1.7 - multistream-select
0.8.2 - nft
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - parity-db
0.1.2 - parity-tokio-ipc
0.4.0 - prost-build
0.6.1 - pwasm-utils
0.12.0 - rustls
0.17.0 - sc-basic-authorship
0.8.0-rc4 - sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-client-db
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-executor-common
0.8.0-rc4 - sc-executor-wasmi
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-informant
0.8.0-rc4 - sc-network
0.8.0-rc4 - sc-network-gossip
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-peerset
2.0.0-rc4 - sc-proposer-metrics
0.8.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-rpc-server
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-state-db
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sc-tracing
2.0.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - soketto
0.3.2 - sp-allocator
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-panic-handler
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-tracing
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4 - 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.16 - trie-db
0.21.0 - want
0.2.0 - want
0.3.0 - wasm-bindgen-backend
0.2.65 - ws
0.9.1 - yamux
0.4.7
- async-std
lru
0.4.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237depends onmatrixmultiply
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478fdepends onused bymaybe-uninit
2.0.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00memchr
2.3.3crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400memmap
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475bdepends onused bymemoffset
0.5.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55fdepends onused bymemory_units
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882used bymemory-db
0.21.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb2999ff7a65d5a1d72172f6d51fa2ea03024b51aee709ba5ff81c3c629a2410used bymerlin
2.0.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6feca46f4fa3443a01769d768727f10c10a20fdb65e52dc16a81f0c8269bb78miniz_oxide
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0f75932c1f6cfae3c04000e40114adf955636e19040f9c0a2c380702aa1c7fdepends onused bymio
0.6.22crates.io↘ 11↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430depends 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↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumafcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0depends onmiow
0.2.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919used bymiow
0.3.5crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979edepends onmultihash
0.11.2crates.io↘ 7↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf75db05d738947aa5389863aadafbcf2e509d7ba099dc2ddcdf4fc66bf7a9e03depends onmultimap
0.8.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8883adfde9756c1d30b0f519c9b8c502a94b41ac62f696453c37c7fc0a958ceused bymultistream-select
0.8.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9157e87afbc2ef0d84cc0345423d715f445edde00141c93721c162de35a05e5used bynalgebra
0.18.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2depends onused bynames
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2dadepends onused bynet2
0.2.34crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7depends onnetstat2
0.8.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum29449d242064c48d3057a194b049a2bdcccadda16faa18a91468677b44e8d422depends onused bynft
2.0.0-rc4workspace↘ 26↖ 0depends on- futures
0.3.5 - jsonrpc-core
14.2.0 - log
0.4.11 - nft-runtime
2.0.0-rc4 - pallet-contracts-rpc
0.8.0-rc4 - parking_lot
0.10.2 - sc-basic-authorship
0.8.0-rc4 - sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-consensus
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-network
0.8.0-rc4 - sc-rpc
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - structopt
0.3.15 - substrate-build-script-utils
2.0.0-rc4
- futures
nft-runtime
2.0.0-rc4workspace↘ 29↖ 1depends on- frame-executive
2.0.0-rc4 - frame-support
2.0.0-rc4 - frame-system
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-balances
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-contracts-primitives
2.0.0-rc4 - pallet-contracts-rpc-runtime-api
0.8.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-randomness-collective-flip
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - pallet-transaction-payment
2.0.0-rc4 - parity-scale-codec
1.3.1 - serde
1.0.114 - sp-api
2.0.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-offchain
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-session
2.0.0-rc4 - sp-std
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-version
2.0.0-rc4 - substrate-wasm-builder-runner
1.0.6
used by- frame-executive
nix
0.17.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363used bynodrop
0.1.14crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bbused bynohash-hasher
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451nom
5.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627afdepends onused byntapi
0.3.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a31937dea023539c72ddae0e3571deadc1414b300483fa7aaec176168cfa9d2depends onused bynum_cpus
1.13.0crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3depends onnum-bigint
0.2.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304used bynum-complex
0.2.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95depends onused bynum-integer
0.1.43crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875bdepends onnum-rational
0.2.4crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aefused bynum-traits
0.1.43crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31depends onused bynum-traits
0.2.12crates.io↘ 2↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611depends onobject
0.20.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5used byonce_cell
1.4.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168ddepends onopaque-debug
0.2.3crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529copaque-debug
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5used byopenssl-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.0-rc4github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-balances
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-contracts
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 13↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-contracts-primitives
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 3↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84pallet-contracts-rpc
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-contracts-rpc-runtime-api
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onpallet-finality-tracker
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-grandpa
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 13↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-nft
2.0.0-rc4workspace↘ 10↖ 1pallet-randomness-collective-flip
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-session
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 13↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onpallet-sudo
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bypallet-timestamp
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 10↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onpallet-transaction-payment
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 8↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onpallet-transaction-payment-rpc-runtime-api
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onparity-db
0.1.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00d595e372d119261593297debbe4193811a4dc811d2a1ccbb8caaa6666ad7abused byparity-multiaddr
0.7.3crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf77055f9e81921a8cc7bebeb6cded3d128931d51f1e3dd6251f0770a6d431477depends onused byparity-multiaddr
0.9.1crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc20af3143a62c16e7c9e92ea5c6ae49f7d271d97d4d8fe73afc28f0514a3d0fdepends onparity-multihash
0.2.3crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a1cd2ba02391b81367bec529fb209019d718684fdc8ad6a712c2b536e46f775used byparity-scale-codec
1.3.1crates.io↘ 5↖ 66sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma74f02beb35d47e0706155c9eac554b50c671e0d868fe8296bcdf44a9a4847bfused by- finality-grandpa
0.12.3 - fork-tree
2.0.0-rc4 - frame-benchmarking
2.0.0-rc4 - frame-executive
2.0.0-rc4 - frame-metadata
11.0.0-rc4 - frame-support
2.0.0-rc4 - frame-system
2.0.0-rc4 - impl-codec
0.4.2 - nft-runtime
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-balances
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-contracts-primitives
2.0.0-rc4 - pallet-contracts-rpc
0.8.0-rc4 - pallet-contracts-rpc-runtime-api
0.8.0-rc4 - pallet-finality-tracker
2.0.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-randomness-collective-flip
2.0.0-rc4 - pallet-session
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - pallet-transaction-payment
2.0.0-rc4 - pallet-transaction-payment-rpc-runtime-api
2.0.0-rc4 - sc-basic-authorship
0.8.0-rc4 - sc-block-builder
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-client-db
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-executor-common
0.8.0-rc4 - sc-executor-wasmi
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-light
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-service
0.8.0-rc4 - sc-state-db
0.8.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-application-crypto
2.0.0-rc4 - sp-arithmetic
2.0.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-externalities
0.8.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-finality-tracker
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-runtime-interface
2.0.0-rc4 - sp-sandbox
0.8.0-rc4 - sp-session
2.0.0-rc4 - sp-staking
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-timestamp
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-trie
2.0.0-rc4 - sp-version
2.0.0-rc4 - sp-wasm-interface
2.0.0-rc4
- finality-grandpa
parity-scale-codec-derive
1.2.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245used 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.6.1crates.io↘ 7↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c6e2583649a3ca84894d1d71da249abcfda54d5aca24733d72ca10d0f02361cdepends onparity-util-mem-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2parity-wasm
0.41.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865parking_lot
0.9.0crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252parking_lot
0.10.2crates.io↘ 2↖ 42sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505edepends onused by- broadcaster
1.0.0 - jsonrpc-http-server
14.2.0 - jsonrpc-ipc-server
14.2.0 - jsonrpc-pubsub
14.2.0 - jsonrpc-ws-server
14.2.0 - kvdb-memorydb
0.6.0 - kvdb-rocksdb
0.8.0 - libp2p
0.19.1 - libp2p-core
0.19.2 - libp2p-mplex
0.19.2 - libp2p-yamux
0.19.1 - nft
2.0.0-rc4 - once_cell
1.4.0 - parity-db
0.1.2 - parity-util-mem
0.6.1 - sc-client-api
2.0.0-rc4 - sc-client-db
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-informant
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-light
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-service
0.8.0-rc4 - sc-state-db
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sc-tracing
2.0.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-database
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - yamux
0.4.7
- broadcaster
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 bypaste
0.1.18crates.io↘ 2↖ 3sourceregistry+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↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9depends onpeeking_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-indexchecksumd4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32epetgraph
0.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7depends onused bypin-project
0.4.22crates.io↘ 1↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17depends onpin-project-internal
0.4.22crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7depends onused bypin-project-lite
0.1.7crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715pin-utils
0.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkg-config
0.3.18crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33used byplatforms
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfeb3b2b1033b8a60b4da6ee470325f887758c95d5320f52f9ce0df055a55940epoly1305
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b42192ab143ed7619bf888a7f9c6733a9a2153b218e2cd557cfdb52fbf9bb1depends onused bypolyval
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9a50142b55ab3ed0e9f68dfb3709f1d90d29da24e91033f28b96330643107dcdepends onused byppv-lite86
0.2.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612eaused byprimitive-types
0.7.2crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc55c21c64d0eaa4d7ed885d959ef2d62d9e488c27c0e02d9aa5ce6c877b7d5f8proc-macro-crate
0.1.5crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785depends onproc-macro-error
1.0.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc175e9777c3116627248584e8f8b3e2987405cabe1c0adf7d1dd28f09dc7880used byproc-macro-error-attr
1.0.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3cc9795ca17eb581285ec44936da7fc2335a3f34f2ddd13118b6f4d515435c50used byproc-macro-hack
0.5.16crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4proc-macro-nested
0.1.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5aused byproc-macro2
1.0.19crates.io↘ 1↖ 34sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12depends onused by- bindgen
0.53.3 - derive_more
0.99.9 - failure_derive
0.1.8 - frame-support-procedural
2.0.0-rc4 - frame-support-procedural-tools
2.0.0-rc4 - frame-support-procedural-tools-derive
2.0.0-rc4 - futures-macro
0.3.5 - impl-trait-for-tuples
0.1.3 - jsonrpc-derive
14.2.1 - parity-scale-codec-derive
1.2.0 - parity-util-mem-derive
0.1.0 - pin-project-internal
0.4.22 - proc-macro-error
1.0.3 - proc-macro-error-attr
1.0.3 - prost-derive
0.6.1 - quote
1.0.7 - ref-cast-impl
1.0.2 - rental-impl
0.5.5 - sc-chain-spec-derive
2.0.0-rc4 - serde_derive
1.0.114 - slog_derive
0.2.0 - sp-api-proc-macro
2.0.0-rc4 - sp-debug-derive
2.0.0-rc4 - sp-runtime-interface-proc-macro
2.0.0-rc4 - structopt-derive
0.4.8 - strum_macros
0.16.0 - syn
1.0.34 - syn-mid
0.5.0 - synstructure
0.12.4 - thiserror-impl
1.0.20 - tracing-attributes
0.1.9 - wasm-bindgen-backend
0.2.65 - wasm-bindgen-macro-support
0.2.65 - zeroize_derive
1.0.0
- bindgen
procfs
0.7.9crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc434e93ef69c216e68e4f417c927b4f31502c3560b72cfdb6827e2321c5c6b3eused byprometheus
0.8.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0575e258dab62268e7236d7307caa38848acbda7ec7ab87bd9093791e999d20prost
0.6.1crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212depends onprost-build
0.6.1crates.io↘ 10↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26depends onprost-derive
0.6.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72used byprost-types
0.6.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aadepends onused byprotobuf
2.16.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd883f78645c21b7281d21305181aa1f4dd9e9363e7cf2566c93121552cff003eused bypwasm-utils
0.12.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192depends onused byquick-error
1.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
0.3.15crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167aquote
1.0.7crates.io↘ 1↖ 35sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37depends onused by- asn1_der_derive
0.1.2 - bindgen
0.53.3 - derive_more
0.99.9 - failure_derive
0.1.8 - frame-support-procedural
2.0.0-rc4 - frame-support-procedural-tools
2.0.0-rc4 - frame-support-procedural-tools-derive
2.0.0-rc4 - futures-macro
0.3.5 - impl-trait-for-tuples
0.1.3 - jsonrpc-derive
14.2.1 - libp2p-core-derive
0.19.1 - parity-scale-codec-derive
1.2.0 - pin-project-internal
0.4.22 - proc-macro-error
1.0.3 - proc-macro-error-attr
1.0.3 - prost-derive
0.6.1 - ref-cast-impl
1.0.2 - rental-impl
0.5.5 - sc-chain-spec-derive
2.0.0-rc4 - serde_derive
1.0.114 - slog_derive
0.2.0 - sp-api-proc-macro
2.0.0-rc4 - sp-debug-derive
2.0.0-rc4 - sp-runtime-interface-proc-macro
2.0.0-rc4 - structopt-derive
0.4.8 - strum_macros
0.16.0 - syn
1.0.34 - syn-mid
0.5.0 - synstructure
0.12.4 - thiserror-impl
1.0.20 - tracing-attributes
0.1.9 - wasm-bindgen-backend
0.2.65 - wasm-bindgen-macro
0.2.65 - wasm-bindgen-macro-support
0.2.65 - zeroize_derive
1.0.0
- 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.5.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9used byrand
0.6.5crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184cadepends onused byrand
0.7.3crates.io↘ 6↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- ed25519-dalek
1.0.0-pre.3 - fixed-hash
0.6.1 - jsonrpc-pubsub
14.2.0 - libp2p-core
0.19.2 - libp2p-kad
0.19.0 - libp2p-mdns
0.19.2 - libp2p-noise
0.19.1 - libp2p-ping
0.19.3 - libp2p-swarm
0.19.1 - libsecp256k1
0.3.5 - parity-multihash
0.2.3 - parity-tokio-ipc
0.4.0 - sc-finality-grandpa
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - schnorrkel
0.9.1 - snow
0.7.1 - soketto
0.3.2 - sp-core
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - tempfile
3.1.0 - tiny-bip39
0.7.3 - twox-hash
1.5.0 - ws
0.9.1 - yamux
0.4.7
- ed25519-dalek
rand_chacha
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcefdepends onused byrand_chacha
0.2.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onused byrand_core
0.3.1crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4bdepends onrand_core
0.4.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dcrand_core
0.5.1crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_hc
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4depends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_isaac
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08depends onused byrand_jitter
0.1.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39bdepends onused byrand_os
0.1.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071used byrand_pcg
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44depends onused byrand_pcg
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byrand_xorshift
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5cdepends onused byrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62f02856753d04e03e26929f820d0a0a337ebe71f849801eea335d464b349080used byrayon-core
1.7.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume92e15d89083484e11353891f1af602cc661426deb9564c298b270c726973280depends onused byrdrand
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2depends onused byredox_syscall
0.1.57crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ceredox_users
0.3.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431used byref-cast
1.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum745c1787167ddae5569661d5ffb8b25ae5fedbf46717eaa92d652221cec72623depends onused byref-cast-impl
1.0.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d21b475ab879ef0e315ad99067fa25778c3b0377f57f1b00207448dac1a3144depends onused byregex
1.3.9crates.io↘ 4↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6regex-syntax
0.6.18crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8used byremove_dir_all
0.5.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7depends onused byrental
0.5.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8545debe98b2b139fb04cad8618b530e9b07c152d99a5de83c860b877d67847fdepends onused byrental-impl
0.5.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340dedepends onused byring
0.16.15crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4rle-decode-fast
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90acused byrocksdb
0.14.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61aa17a99a2413cd71c1106691bf59dad7de0cd5099127f90e9d99c429c40d4adepends onused byrpassword
4.0.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99fdepends onused byrust-argon2
0.7.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017used byrustc_version
0.2.3crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onrustc-demangle
0.1.16crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783used byrustc-hash
1.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustc-hex
2.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rustls
0.17.0crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1rustls-native-certs
0.3.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75ffeb84a6bd9d014713119542ce415db3a3e4748f0bfce1e1416cd224a23a5used 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 onsc-basic-authorship
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 17↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- futures
0.3.5 - futures-timer
3.0.2 - log
0.4.11 - parity-scale-codec
1.3.1 - sc-block-builder
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-proposer-metrics
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4 - tokio-executor
0.2.0-alpha.6
used by- futures
sc-block-builder
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsc-chain-spec
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-chain-spec-derive
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used bysc-cli
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 33↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.13 - derive_more
0.99.9 - env_logger
0.7.1 - fdlimit
0.1.4 - futures
0.3.5 - lazy_static
1.4.0 - log
0.4.11 - names
0.11.0 - nix
0.17.0 - parity-util-mem
0.6.1 - regex
1.3.9 - rpassword
4.0.5 - sc-client-api
2.0.0-rc4 - sc-informant
0.8.0-rc4 - sc-network
0.8.0-rc4 - sc-service
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sc-tracing
2.0.0-rc4 - serde_json
1.0.56 - sp-blockchain
2.0.0-rc4 - sp-core
2.0.0-rc4 - sp-keyring
2.0.0-rc4 - sp-panic-handler
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-utils
2.0.0-rc4 - sp-version
2.0.0-rc4 - structopt
0.3.15 - substrate-prometheus-endpoint
0.8.0-rc4 - time
0.1.43 - tokio
0.2.21
used by- ansi_term
sc-client-api
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 29↖ 17sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- derive_more
0.99.9 - fnv
1.0.7 - futures
0.3.5 - hash-db
0.15.2 - hex-literal
0.2.1 - kvdb
0.6.0 - lazy_static
1.4.0 - log
0.4.11 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - sc-executor
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-database
2.0.0-rc4 - sp-externalities
0.8.0-rc4 - sp-inherents
2.0.0-rc4 - sp-keyring
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-std
2.0.0-rc4 - sp-storage
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-trie
2.0.0-rc4 - sp-utils
2.0.0-rc4 - sp-version
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4
used by- nft
2.0.0-rc4 - sc-basic-authorship
0.8.0-rc4 - sc-block-builder
0.8.0-rc4 - sc-cli
0.8.0-rc4 - sc-client-db
0.8.0-rc4 - sc-consensus
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-informant
0.8.0-rc4 - sc-light
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-state-db
0.8.0-rc4 - sc-transaction-pool
2.0.0-rc4
- derive_more
sc-client-db
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 22↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- blake2-rfc
0.2.18 - hash-db
0.15.2 - kvdb
0.6.0 - kvdb-memorydb
0.6.0 - kvdb-rocksdb
0.8.0 - linked-hash-map
0.5.3 - log
0.4.11 - parity-db
0.1.2 - parity-scale-codec
1.3.1 - parity-util-mem
0.6.1 - parking_lot
0.10.2 - sc-client-api
2.0.0-rc4 - sc-executor
0.8.0-rc4 - sc-state-db
0.8.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-database
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-trie
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4
used by- blake2-rfc
sc-consensus
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 4↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sc-consensus-aura
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 24↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- derive_more
0.99.9 - futures
0.3.5 - futures-timer
3.0.2 - log
0.4.11 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - sc-block-builder
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-telemetry
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-application-crypto
2.0.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-timestamp
2.0.0-rc4 - sp-version
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4
used by- derive_more
sc-consensus-slots
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 15↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-executor
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 20↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- derive_more
0.99.9 - lazy_static
1.4.0 - libsecp256k1
0.3.5 - log
0.4.11 - parity-scale-codec
1.3.1 - parity-wasm
0.41.0 - parking_lot
0.10.2 - sc-executor-common
0.8.0-rc4 - sc-executor-wasmi
0.8.0-rc4 - sp-api
2.0.0-rc4 - sp-core
2.0.0-rc4 - sp-externalities
0.8.0-rc4 - sp-io
2.0.0-rc4 - sp-panic-handler
2.0.0-rc4 - sp-runtime-interface
2.0.0-rc4 - sp-serializer
2.0.0-rc4 - sp-trie
2.0.0-rc4 - sp-version
2.0.0-rc4 - sp-wasm-interface
2.0.0-rc4 - wasmi
0.6.2
- derive_more
sc-executor-common
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 10↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsc-executor-wasmi
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-finality-grandpa
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 31↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- assert_matches
1.3.0 - derive_more
0.99.9 - finality-grandpa
0.12.3 - fork-tree
2.0.0-rc4 - futures
0.3.5 - futures-timer
3.0.2 - log
0.4.11 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - pin-project
0.4.22 - rand
0.7.3 - sc-block-builder
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-consensus
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-network-gossip
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - serde_json
1.0.56 - sp-api
2.0.0-rc4 - sp-application-crypto
2.0.0-rc4 - sp-arithmetic
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-finality-tracker
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-utils
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4
used by- assert_matches
sc-informant
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 12↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsc-keystore
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsc-light
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-network
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 45↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- bitflags
1.2.1 - bs58
0.3.1 - bytes
0.5.6 - derive_more
0.99.9 - either
1.5.3 - erased-serde
0.3.12 - fnv
1.0.7 - fork-tree
2.0.0-rc4 - futures
0.3.5 - futures-timer
3.0.2 - futures_codec
0.3.4 - hex
0.4.2 - ip_network
0.3.4 - libp2p
0.19.1 - linked-hash-map
0.5.3 - linked_hash_set
0.1.3 - log
0.4.11 - lru
0.4.3 - nohash-hasher
0.2.0 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - pin-project
0.4.22 - prost
0.6.1 - prost-build
0.6.1 - rand
0.7.3 - sc-block-builder
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-peerset
2.0.0-rc4 - serde
1.0.114 - serde_json
1.0.56 - slog
2.5.2 - slog_derive
0.2.0 - smallvec
0.6.13 - sp-arithmetic
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-utils
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4 - thiserror
1.0.20 - unsigned-varint
0.3.3 - void
1.0.2 - wasm-timer
0.2.4 - zeroize
1.1.0
- bitflags
sc-network-gossip
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-offchain
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 20↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- bytes
0.5.6 - fnv
1.0.7 - futures
0.3.5 - futures-timer
3.0.2 - hyper
0.13.7 - hyper-rustls
0.20.0 - log
0.4.11 - num_cpus
1.13.0 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - rand
0.7.3 - sc-client-api
2.0.0-rc4 - sc-keystore
2.0.0-rc4 - sc-network
0.8.0-rc4 - sp-api
2.0.0-rc4 - sp-core
2.0.0-rc4 - sp-offchain
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-utils
2.0.0-rc4 - threadpool
1.8.1
used by- bytes
sc-peerset
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used bysc-proposer-metrics
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 2↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used bysc-rpc
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 25↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- futures
0.3.5 - hash-db
0.15.2 - jsonrpc-core
14.2.0 - jsonrpc-pubsub
14.2.0 - log
0.4.11 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - sc-block-builder
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-executor
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - serde_json
1.0.56 - sp-api
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-chain-spec
2.0.0-rc4 - sp-core
2.0.0-rc4 - sp-offchain
2.0.0-rc4 - sp-rpc
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-session
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-utils
2.0.0-rc4 - sp-version
2.0.0-rc4
- futures
sc-rpc-api
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 17↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- derive_more
0.99.9 - futures
0.3.5 - jsonrpc-core
14.2.0 - jsonrpc-core-client
14.2.0 - jsonrpc-derive
14.2.1 - jsonrpc-pubsub
14.2.0 - log
0.4.11 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - serde
1.0.114 - serde_json
1.0.56 - sp-chain-spec
2.0.0-rc4 - sp-core
2.0.0-rc4 - sp-rpc
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-version
2.0.0-rc4
used by- derive_more
sc-rpc-server
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-service
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 56↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- derive_more
0.99.9 - directories
2.0.2 - exit-future
0.2.0 - futures
0.1.29 - futures
0.3.5 - futures-timer
3.0.2 - hash-db
0.15.2 - jsonrpc-pubsub
14.2.0 - lazy_static
1.4.0 - log
0.4.11 - netstat2
0.8.1 - parity-multiaddr
0.7.3 - parity-scale-codec
1.3.1 - parity-util-mem
0.6.1 - parking_lot
0.10.2 - pin-project
0.4.22 - procfs
0.7.9 - rand
0.7.3 - sc-block-builder
0.8.0-rc4 - sc-chain-spec
2.0.0-rc4 - sc-client-api
2.0.0-rc4 - sc-client-db
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-informant
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-light
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-server
2.0.0-rc4 - sc-telemetry
2.0.0-rc4 - sc-tracing
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - serde
1.0.114 - serde_json
1.0.56 - slog
2.5.2 - sp-api
2.0.0-rc4 - sp-application-crypto
2.0.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-externalities
0.8.0-rc4 - sp-io
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-session
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-trie
2.0.0-rc4 - sp-utils
2.0.0-rc4 - sp-version
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4 - sysinfo
0.13.4 - tempfile
3.1.0 - tracing
0.1.16 - wasm-timer
0.2.4
used by- derive_more
sc-state-db
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-telemetry
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 15↖ 9sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsc-tracing
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 10↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsc-transaction-graph
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 13↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysc-transaction-pool
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 19↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- derive_more
0.99.9 - futures
0.3.5 - futures-diagnose
1.0.1 - intervalier
0.4.0 - log
0.4.11 - parity-scale-codec
1.3.1 - parity-util-mem
0.6.1 - parking_lot
0.10.2 - sc-client-api
2.0.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-core
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-tracing
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-utils
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4 - wasm-timer
0.2.4
- derive_more
schannel
0.1.19crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscopeguard
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdsct
0.6.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3cdepends onused bysecurity-framework
0.4.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535depends onused bysecurity-framework-sys
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405depends 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 bysend_wrapper
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4used byserde
1.0.114crates.io↘ 1↖ 50sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3depends onused by- erased-serde
0.3.12 - frame-executive
2.0.0-rc4 - frame-metadata
11.0.0-rc4 - frame-support
2.0.0-rc4 - frame-system
2.0.0-rc4 - futures-diagnose
1.0.1 - impl-serde
0.2.3 - impl-serde
0.3.1 - jsonrpc-client-transports
14.2.0 - jsonrpc-core
14.2.0 - jsonrpc-pubsub
14.2.0 - nft-runtime
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-balances
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-contracts-rpc
0.8.0-rc4 - pallet-finality-tracker
2.0.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-session
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - pallet-transaction-payment
2.0.0-rc4 - pallet-transaction-payment-rpc-runtime-api
2.0.0-rc4 - parity-multiaddr
0.7.3 - parity-multiaddr
0.9.1 - parity-scale-codec
1.3.1 - sc-chain-spec
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-rpc-server
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sc-tracing
2.0.0-rc4 - sc-transaction-graph
2.0.0-rc4 - serde_json
1.0.56 - slog-json
2.3.0 - sp-application-crypto
2.0.0-rc4 - sp-arithmetic
2.0.0-rc4 - sp-chain-spec
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-rpc
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-serializer
2.0.0-rc4 - sp-storage
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-version
2.0.0-rc4 - toml
0.5.6
- erased-serde
serde_derive
1.0.114crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8edepends onserde_json
1.0.56crates.io↘ 3↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3depends onused by- futures-diagnose
1.0.1 - jsonrpc-client-transports
14.2.0 - jsonrpc-core
14.2.0 - sc-chain-spec
2.0.0-rc4 - sc-cli
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-peerset
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-rpc-server
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-tracing
2.0.0-rc4 - slog-json
2.3.0 - sp-chain-spec
2.0.0-rc4 - sp-serializer
2.0.0-rc4
- futures-diagnose
sha-1
0.8.2crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163dfsha1
0.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0dused bysha2
0.8.2crates.io↘ 4↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69sha2
0.9.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1used bysha3
0.8.2crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecfshlex
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2used bysignal-hook-registry
1.2.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41depends onused byslab
0.4.2crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8slog
2.5.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99depends onslog_derive
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11bdepends onused byslog-json
2.3.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37aused byslog-scope
4.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6depends onused bysmallvec
0.6.13crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6depends onsmallvec
1.4.1crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3757cb9d89161a2f24e1cf78efa0c1fcff485d18e3f55e0aa3480824ddaa0f3fused bysnow
0.7.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32bf8474159a95551661246cda4976e89356999e3cbfef36f493dacc3fae1e8edepends onused bysocket2
0.3.12crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918soketto
0.3.2crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c9dab3f95c9ebdf3a88268c19af668f637a3c5039c2c56ff2d40b1b2d64a25bdepends onused bysp-allocator
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-api
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 8↖ 24sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused by- frame-benchmarking
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-contracts-rpc
0.8.0-rc4 - pallet-contracts-rpc-runtime-api
0.8.0-rc4 - pallet-transaction-payment-rpc-runtime-api
2.0.0-rc4 - sc-basic-authorship
0.8.0-rc4 - sc-block-builder
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-light
2.0.0-rc4 - sc-offchain
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-offchain
2.0.0-rc4 - sp-session
2.0.0-rc4 - sp-timestamp
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4
- frame-benchmarking
sp-api-proc-macro
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used bysp-application-crypto
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 10sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-arithmetic
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 6↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-block-builder
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-blockchain
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 18sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused by- pallet-contracts-rpc
0.8.0-rc4 - sc-basic-authorship
0.8.0-rc4 - sc-block-builder
0.8.0-rc4 - sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-client-db
0.8.0-rc4 - sc-consensus
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-informant
0.8.0-rc4 - sc-light
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-rpc
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4
- pallet-contracts-rpc
sp-chain-spec
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-consensus
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 17↖ 12sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- derive_more
0.99.9 - futures
0.3.5 - futures-timer
3.0.2 - libp2p
0.19.1 - log
0.4.11 - parity-scale-codec
1.3.1 - parking_lot
0.10.2 - serde
1.0.114 - sp-core
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-std
2.0.0-rc4 - sp-utils
2.0.0-rc4 - sp-version
2.0.0-rc4 - substrate-prometheus-endpoint
0.8.0-rc4 - wasm-timer
0.2.4
- derive_more
sp-consensus-aura
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 7↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-core
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 35↖ 47sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends on- base58
0.1.0 - blake2-rfc
0.2.18 - byteorder
1.3.4 - derive_more
0.99.9 - ed25519-dalek
1.0.0-pre.3 - futures
0.3.5 - 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.11 - merlin
2.0.0 - num-traits
0.2.12 - parity-scale-codec
1.3.1 - parity-util-mem
0.6.1 - parking_lot
0.10.2 - primitive-types
0.7.2 - rand
0.7.3 - regex
1.3.9 - schnorrkel
0.9.1 - serde
1.0.114 - sha2
0.8.2 - sp-debug-derive
2.0.0-rc4 - sp-externalities
0.8.0-rc4 - sp-runtime-interface
2.0.0-rc4 - sp-std
2.0.0-rc4 - sp-storage
2.0.0-rc4 - substrate-bip39
0.4.1 - tiny-bip39
0.7.3 - tiny-keccak
2.0.2 - twox-hash
1.5.0 - wasmi
0.6.2 - zeroize
1.1.0
used by- frame-metadata
11.0.0-rc4 - frame-support
2.0.0-rc4 - frame-system
2.0.0-rc4 - nft
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-contracts-rpc
0.8.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-session
2.0.0-rc4 - sc-basic-authorship
0.8.0-rc4 - sc-block-builder
0.8.0-rc4 - sc-chain-spec
2.0.0-rc4 - sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-client-db
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-executor-common
0.8.0-rc4 - sc-executor-wasmi
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-keystore
2.0.0-rc4 - sc-light
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-service
0.8.0-rc4 - sc-state-db
0.8.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-allocator
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-application-crypto
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-keyring
2.0.0-rc4 - sp-offchain
2.0.0-rc4 - sp-rpc
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-sandbox
0.8.0-rc4 - sp-session
2.0.0-rc4 - sp-state-machine
0.8.0-rc4 - sp-trie
2.0.0-rc4
- base58
sp-database
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 2↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-debug-derive
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-externalities
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 4↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-finality-grandpa
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-finality-tracker
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 3↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-inherents
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 17sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used by- frame-support
2.0.0-rc4 - nft
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-finality-tracker
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - sc-basic-authorship
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-finality-tracker
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-timestamp
2.0.0-rc4
- frame-support
sp-io
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 14↖ 15sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused by- frame-benchmarking
2.0.0-rc4 - frame-executive
2.0.0-rc4 - frame-support
2.0.0-rc4 - frame-system
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-session
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-executor
0.8.0-rc4 - sc-service
0.8.0-rc4 - sp-application-crypto
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-sandbox
0.8.0-rc4
- frame-benchmarking
sp-keyring
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 4↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-offchain
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-panic-handler
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-rpc
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-runtime
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 15↖ 55sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused by- frame-benchmarking
2.0.0-rc4 - frame-executive
2.0.0-rc4 - frame-support
2.0.0-rc4 - frame-system
2.0.0-rc4 - nft
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-balances
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-contracts-primitives
2.0.0-rc4 - pallet-contracts-rpc
0.8.0-rc4 - pallet-contracts-rpc-runtime-api
0.8.0-rc4 - pallet-finality-tracker
2.0.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-randomness-collective-flip
2.0.0-rc4 - pallet-session
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - pallet-transaction-payment
2.0.0-rc4 - pallet-transaction-payment-rpc-runtime-api
2.0.0-rc4 - sc-basic-authorship
0.8.0-rc4 - sc-block-builder
0.8.0-rc4 - sc-chain-spec
2.0.0-rc4 - sc-cli
0.8.0-rc4 - sc-client-api
2.0.0-rc4 - sc-client-db
0.8.0-rc4 - sc-consensus
0.8.0-rc4 - sc-consensus-aura
0.8.0-rc4 - sc-consensus-slots
0.8.0-rc4 - sc-finality-grandpa
0.8.0-rc4 - sc-informant
0.8.0-rc4 - sc-light
2.0.0-rc4 - sc-network
0.8.0-rc4 - sc-network-gossip
0.8.0-rc4 - sc-offchain
2.0.0-rc4 - sc-rpc
2.0.0-rc4 - sc-rpc-api
0.8.0-rc4 - sc-rpc-server
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-blockchain
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-keyring
2.0.0-rc4 - sp-offchain
2.0.0-rc4 - sp-session
2.0.0-rc4 - sp-staking
2.0.0-rc4 - sp-timestamp
2.0.0-rc4 - sp-transaction-pool
2.0.0-rc4 - sp-version
2.0.0-rc4
- frame-benchmarking
sp-runtime-interface
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 8↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-runtime-interface-proc-macro
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-sandbox
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysp-serializer
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 2↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-session
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 6↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-staking
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-state-machine
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 14↖ 13sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-std
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 0↖ 44sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used by- frame-benchmarking
2.0.0-rc4 - frame-executive
2.0.0-rc4 - frame-metadata
11.0.0-rc4 - frame-support
2.0.0-rc4 - frame-system
2.0.0-rc4 - nft-runtime
2.0.0-rc4 - pallet-aura
2.0.0-rc4 - pallet-balances
2.0.0-rc4 - pallet-contracts
2.0.0-rc4 - pallet-contracts-primitives
2.0.0-rc4 - pallet-contracts-rpc-runtime-api
0.8.0-rc4 - pallet-finality-tracker
2.0.0-rc4 - pallet-grandpa
2.0.0-rc4 - pallet-nft
2.0.0-rc4 - pallet-randomness-collective-flip
2.0.0-rc4 - pallet-session
2.0.0-rc4 - pallet-sudo
2.0.0-rc4 - pallet-timestamp
2.0.0-rc4 - pallet-transaction-payment
2.0.0-rc4 - pallet-transaction-payment-rpc-runtime-api
2.0.0-rc4 - sc-client-api
2.0.0-rc4 - sp-allocator
2.0.0-rc4 - sp-api
2.0.0-rc4 - sp-application-crypto
2.0.0-rc4 - sp-arithmetic
2.0.0-rc4 - sp-block-builder
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-consensus-aura
0.8.0-rc4 - sp-core
2.0.0-rc4 - sp-externalities
0.8.0-rc4 - sp-finality-grandpa
2.0.0-rc4 - sp-finality-tracker
2.0.0-rc4 - sp-inherents
2.0.0-rc4 - sp-io
2.0.0-rc4 - sp-runtime
2.0.0-rc4 - sp-runtime-interface
2.0.0-rc4 - sp-sandbox
0.8.0-rc4 - sp-session
2.0.0-rc4 - sp-staking
2.0.0-rc4 - sp-storage
2.0.0-rc4 - sp-timestamp
2.0.0-rc4 - sp-trie
2.0.0-rc4 - sp-version
2.0.0-rc4 - sp-wasm-interface
2.0.0-rc4
- frame-benchmarking
sp-storage
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-timestamp
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 7↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-tracing
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 3↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-transaction-pool
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 9↖ 10sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-trie
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 7↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsp-utils
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 13sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-version
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 5↖ 11sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84sp-wasm-interface
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 4↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84spin
0.5.2crates.io↘ 0↖ 2sourceregistry+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↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fstatrs
0.10.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10102ac8d55e35db2b3fafc26f81ba8647da2e15879ab686a67e6d19af2685e8depends onused bystream-cipher
0.4.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09f8ed9974042b8c3672ff3030a69fcc03b74c47c3d1ecb7755e8a3626011e88depends 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.15crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde2f5e239ee807089b62adce73e48c625e0ed80df02c7ab3f068f5db5281065cused bystructopt-derive
0.4.8crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum510413f9de616762a4fbeab62509bf15c729603b72d7cd71280fbca431b1c118used 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.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc004e8166d6e0aa3a9d5fa673e5b7098ff25f930de1013a21341988151e681bbused bysubstrate-build-script-utils
2.0.0-rc4github.com/usetech-llc/substrate.git↘ 1↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onused bysubstrate-prometheus-endpoint
0.8.0-rc4github.com/usetech-llc/substrate.git↘ 7↖ 11sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84depends onsubstrate-wasm-builder-runner
1.0.6github.com/usetech-llc/substrate.git↘ 0↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=rc4_ext_dispatch_reenabled#b161460bf73e4cc73e29b8e01ab0323bb3d95e84used bysubtle
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8eeused bysubtle
2.2.3crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum502d53007c02d7605a05df1c1a73ee436952781653da5d0bf57ad608f66932c1syn
0.11.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441daddepends onused bysyn
1.0.34crates.io↘ 3↖ 33sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum936cae2873c940d92e697597c5eee105fb570cd5689c695806f672883653349bused by- asn1_der_derive
0.1.2 - derive_more
0.99.9 - failure_derive
0.1.8 - frame-support-procedural
2.0.0-rc4 - frame-support-procedural-tools
2.0.0-rc4 - frame-support-procedural-tools-derive
2.0.0-rc4 - futures-macro
0.3.5 - impl-trait-for-tuples
0.1.3 - jsonrpc-derive
14.2.1 - libp2p-core-derive
0.19.1 - parity-scale-codec-derive
1.2.0 - parity-util-mem-derive
0.1.0 - pin-project-internal
0.4.22 - proc-macro-error
1.0.3 - proc-macro-error-attr
1.0.3 - prost-derive
0.6.1 - ref-cast-impl
1.0.2 - rental-impl
0.5.5 - sc-chain-spec-derive
2.0.0-rc4 - serde_derive
1.0.114 - slog_derive
0.2.0 - sp-api-proc-macro
2.0.0-rc4 - sp-debug-derive
2.0.0-rc4 - sp-runtime-interface-proc-macro
2.0.0-rc4 - structopt-derive
0.4.8 - strum_macros
0.16.0 - syn-mid
0.5.0 - synstructure
0.12.4 - thiserror-impl
1.0.20 - tracing-attributes
0.1.9 - wasm-bindgen-backend
0.2.65 - wasm-bindgen-macro-support
0.2.65 - zeroize_derive
1.0.0
- asn1_der_derive
syn-mid
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338adepends onused bysynom
0.11.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6depends onused bysynstructure
0.12.4crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701sysinfo
0.13.4crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cac193374347e7c263c5f547524f36ff8ec6702d56c8799c8331d26dffe8c1eused bytake_mut
0.2.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60used bytempfile
3.1.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9termcolor
1.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75fdepends onused bytextwrap
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060depends onused bythiserror
1.0.20crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08depends onthiserror-impl
1.0.20crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793depends onused bythread_local
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14depends onused bythreadpool
1.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onused bytime
0.1.43crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438depends ontiny-bip39
0.7.3crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0165e045cc2ae1660270ca65e1676dbaab60feb0f91b10f7d0665e9b47e31f2depends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinyvec
0.3.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efedused bytokio
0.1.22crates.io↘ 16↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6depends ontokio
0.2.21crates.io↘ 14↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd099fa27b9702bed751524694adbe393e18b36b204da91eb1cbbbbb4a5ee2d58depends 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-executor
0.2.0-alpha.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8used bytokio-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.13.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum15cb62a0d2770787abc96e99c1cd98fcf17f94959f3af63ca85bdfb203f051b4used 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-sync
0.2.0-alpha.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2used bytokio-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.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71adepends onused bytower-service
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860used bytracing
0.1.16crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2e2a2de6b0d5cbb13fc21193a2296888eaab62b6044479aafb3c54c01c29fcdtracing-attributes
0.1.9crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0693bf8d6f2bf22c690fc61a9d21ac69efdbb894a17ed596b9af0f01e64b84bdepends onused bytracing-core
0.1.11crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94ae75f0d28ae10786f3b1895c55fe72e79928fd5ccdebb5438c75e93fec178fdepends ontrie-db
0.21.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcb230c24c741993b04cfccbabb45acff6f6480c5f00d3ed8794ea43db3a9d727trie-root
0.16.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cddepends ontwox-hash
1.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56depends onused bytypenum
1.12.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33uint
0.8.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum173cd16430c206dc1a430af8a89a0e9c076cf15cb42b4aedb10e8cc8fee73681unicase
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.13crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977depends onunicode-segmentation
1.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0used byunicode-width
0.1.8crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3used byunicode-xid
0.0.4crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dcused 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.3.3crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf67332660eb59a6f1eb24ff1220c9e8d01738a8503c6002e30bcfe4bd9f2b4a9unsigned-varint
0.4.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum669d776983b692a906c881fcd0cfb34271a48e197e4d6cb8df32b05bfc3d3fa5depends onuntrusted
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.1.1crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cbvcpkg
0.2.10crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508cused byvec_map
0.8.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191used byversion_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-indexchecksum6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887dwant
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 bywasm-bindgen
0.2.65crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3edbcc9536ab7eababcc6d2374a0b7bfe13a2b6d562c5e07f370456b1a8f33ddepends onwasm-bindgen-backend
0.2.65crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum89ed2fb8c84bfad20ea66b26a3743f3e7ba8735a69fe7d95118c33ec8fc1244ddepends onwasm-bindgen-futures
0.4.15crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41ad6e4e8b2b7f8c90b6e09a9b590ea15cb0d1dbe28502b5a405cd95d1981671wasm-bindgen-macro
0.2.65crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb071268b031a64d92fc6cf691715ca5a40950694d8f683c5bb43db7c730929eused bywasm-bindgen-macro-support
0.2.65crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf592c807080719d1ff2f245a687cbadb3ed28b2077ed7084b47aba8b691f2c6used bywasm-timer
0.2.4crates.io↘ 8↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum324c5e65a08699c9c4334ba136597ab22b85dccd4b65dd1e36ccf8f723a95b54depends onused by- libp2p
0.19.1 - libp2p-identify
0.19.2 - libp2p-kad
0.19.0 - libp2p-mdns
0.19.2 - libp2p-ping
0.19.3 - libp2p-swarm
0.19.1 - sc-informant
0.8.0-rc4 - sc-network
0.8.0-rc4 - sc-network-gossip
0.8.0-rc4 - sc-peerset
2.0.0-rc4 - sc-service
0.8.0-rc4 - sc-telemetry
2.0.0-rc4 - sc-transaction-graph
2.0.0-rc4 - sc-transaction-pool
2.0.0-rc4 - sp-consensus
0.8.0-rc4 - sp-timestamp
2.0.0-rc4
- 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 onweb-sys
0.3.42crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8be2398f326b7ba09815d0b403095f34dd708579220d099caae89be0b32137b2depends onwebpki
0.21.3crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032aedepends onwebpki-roots
0.18.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4depends onused bywebpki-roots
0.19.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739depends onused bywhich
3.1.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724depends onwinapi
0.2.8crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087awinapi
0.3.9crates.io↘ 2↖ 31sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.11.0 - ansi_term
0.12.1 - async-task
1.3.1 - atty
0.2.14 - dirs-sys
0.3.5 - fs-swap
0.2.4 - libloading
0.5.2 - memmap
0.7.0 - mio-named-pipes
0.1.7 - miow
0.3.5 - net2
0.2.34 - ntapi
0.3.4 - parity-tokio-ipc
0.4.0 - parity-util-mem
0.6.1 - parking_lot_core
0.6.2 - parking_lot_core
0.7.2 - rand
0.4.6 - rand
0.5.6 - rand
0.6.5 - rand_jitter
0.1.4 - rand_os
0.1.3 - remove_dir_all
0.5.3 - ring
0.16.15 - rpassword
4.0.5 - schannel
0.1.19 - socket2
0.3.12 - sysinfo
0.13.4 - tempfile
3.1.0 - time
0.1.43 - tokio
0.2.21 - 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 byws
0.9.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc51a2c47b5798ccc774ffb93ff536aec7c4275d722fd9c740c83cdd1af1f2d94depends onused byws2_32-sys
0.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5edepends onused byx25519-dalek
0.6.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217used byyamux
0.4.7crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd37e58a1256a0b328ce9c67d8b62ecdd02f4803ba443df478835cb1a41a637cused byzeroize
1.1.0crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8depends onzeroize_derive
1.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2used by
693 packageslockfile v1
Might be heavy and slow!
addr2line
0.13.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072depends 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.2.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum29661b60bec623f0586702976ff4d0c9942dcb6723161c2df0eea78455cfedfbdepends onused byahash
0.3.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217used byaho-corasick
0.7.14crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0ddepends onused byalga
0.9.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2used 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.33crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1fd36ffbb1fb7c834eac128ea8d0e310c5aeb635548f9d58861e1308d46e71capprox
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3depends onused byarc-swap
0.4.7crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034arrayref
0.3.6crates.io↘ 0↖ 5sourceregistry+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.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8asn1_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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9used byasync-executor
1.3.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd373d78ded7d0b3fa8039375718cde0aace493f2e34fb60f51cbf567562ca801depends onused byasync-global-executor
1.4.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0659b83a146398616883aa5199cdd1b055ec088a83c9a338eab3534f33f0622eused byasync-io
1.1.10crates.io↘ 12↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd54bc4c1c7292475efb2253227dbcfad8fe1ca4c02bc62c510cc2f3da5c4704edepends onasync-mutex
1.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156edepends onused byasync-std
1.6.5crates.io↘ 19↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9fa76751505e8df1c7a77762f60486f60c71bbd9b8557f4da6ad47d083732eddepends on- async-global-executor
1.4.0 - async-io
1.1.10 - async-mutex
1.4.0 - blocking
1.0.2 - crossbeam-utils
0.7.2 - futures-channel
0.3.6 - futures-core
0.3.6 - futures-io
0.3.6 - futures-lite
1.11.1 - gloo-timers
0.2.1 - kv-log-macro
1.0.7 - log
0.4.11 - memchr
2.3.3 - num_cpus
1.13.0 - once_cell
1.4.1 - pin-project-lite
0.1.10 - pin-utils
0.1.0 - slab
0.4.2 - wasm-bindgen-futures
0.4.18
- async-global-executor
async-task
4.0.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ab27c1aa62945039e44edaeee1dc23c74cc0c303dd5fe0fb462a184f1c3a518async-tls
0.8.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf097e3f506bec0e1a24f06bb3c962c228f36671de841ff579cb99f371772634used byasync-trait
0.1.41crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb246867b8b3b6ae56035f1eb1ed557c1d8eae97f0d53696138a50fa0e3a3b8c0depends onatomic
0.4.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64f46ca51dca4837f1520754d1c8c36636356b81553d928dc9c177025369a06eused byatomic-waker
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2aused byatty
0.2.14crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onautocfg
0.1.7crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2autocfg
1.0.1crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464abacktrace
0.3.53crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum707b586e0e2f247cbde68cdd2c3ce69ea7b7be43e1c5b426e37c9319c4b9838ebase58
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83used bybase64
0.11.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7used bybase64
0.12.3crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ffbincode
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 bybip39
0.6.0-beta.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7059804e226b3ac116519a252d7f5fb985a5ccc0e93255e036a5f7e7283323f4used bybitflags
1.2.1crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693bitmask
0.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687eadused bybitvec
0.17.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5cdepends onused byblake2
0.9.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84ce5b6108f8e154604bd4eb76a2f726066c3464d5a552a4229262a18c9bb471used byblake2-rfc
0.2.18crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400depends onblake2b_simd
0.5.10crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8ablake2s_simd
0.5.10crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab9e07352b829279624ceb7c64adb4f585dacdb81d35cafae81139ccd617cf44used byblock-buffer
0.7.3crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bused byblock-buffer
0.9.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9depends onused bybs58
0.3.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fbbstr
0.2.13crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31accafdb70df7871592c058eca3985b71104e15ac32f64706022c58867da931depends onused bybumpalo
3.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820used bybyte-slice-cast
0.3.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3used bybyte-tools
0.3.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7byteorder
0.5.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855used bybyteorder
1.3.4crates.io↘ 0↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472deused by- aes-soft
0.5.0 - bincode
1.3.1 - blake2
0.9.0 - block-buffer
0.7.3 - bytes
0.4.12 - cranelift-codegen
0.66.0 - curve25519-dalek
2.1.0 - curve25519-dalek
3.0.0 - dns-parser
0.8.0 - fixed-hash
0.6.1 - h2
0.1.26 - hashbrown
0.1.8 - libp2p-gossipsub
0.22.0 - merlin
2.0.0 - parity-multiaddr
0.9.2 - parity-ws
0.10.0 - pbkdf2
0.3.0 - pwasm-utils
0.14.0 - regex-automata
0.1.9 - salsa20
0.3.0 - sp-core
2.0.0 - uint
0.8.5
- aes-soft
bytes
0.4.12crates.io↘ 3↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81cdepends onbytes
0.5.6crates.io↘ 0↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38used by- futures_codec
0.4.1 - h2
0.2.6 - http
0.2.1 - http-body
0.3.1 - hyper
0.13.8 - hyper-rustls
0.21.0 - libp2p
0.28.1 - libp2p-gossipsub
0.22.0 - libp2p-kad
0.23.0 - libp2p-mplex
0.22.0 - libp2p-noise
0.24.0 - libp2p-plaintext
0.22.0 - libp2p-request-response
0.3.0 - multistream-select
0.8.2 - prost
0.6.1 - prost-build
0.6.1 - prost-types
0.6.1 - sc-network
0.8.0 - sc-offchain
2.0.0 - soketto
0.4.2 - tokio
0.2.22 - tokio-util
0.3.1 - unsigned-varint
0.4.0
- futures_codec
c_linked_list
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724bused bycache-padded
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dbaused bycc
1.0.61crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985ddepends oncexpr
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27depends onused bycfg-if
0.1.10crates.io↘ 0↖ 34sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822used by- bindgen
0.54.0 - crc32fast
1.2.0 - crossbeam-epoch
0.8.2 - crossbeam-queue
0.2.3 - crossbeam-utils
0.7.2 - directories
2.0.2 - flate2
1.0.18 - getrandom
0.1.15 - getrandom
0.2.0 - instant
0.1.7 - log
0.4.11 - mio
0.6.22 - net2
0.2.35 - nix
0.17.0 - parity-util-mem
0.7.0 - parking_lot_core
0.6.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.0 - polling
2.0.1 - polyval
0.4.1 - prometheus
0.10.0 - sha-1
0.9.1 - sha2
0.9.1 - socket2
0.3.15 - tempfile
3.1.0 - tracing
0.1.21 - twox-hash
1.6.0 - wasm-bindgen
0.2.68 - wasm-bindgen-futures
0.4.18 - wasmtime
0.19.0 - wasmtime-environ
0.19.0 - wasmtime-jit
0.19.0 - wasmtime-profiling
0.19.0 - wasmtime-runtime
0.19.0
- bindgen
cfg-if
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused bychacha20
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↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73clang-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↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4fdepends oncloudabi
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467depends onused byconcurrent-queue
1.2.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3depends onconst-random
0.1.11crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02dc82c12dc2ee6e1ded861cf7d582b46f66f796d1b6c93fa28b911ead95da02used byconst-random-macro
0.1.11crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc757bbb9544aa296c2ae00c679e81f886b37e28e59097defe0cf524306f6685depends onused byconstant_time_eq
0.1.5crates.io↘ 0↖ 4sourceregistry+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 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.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1depends oncrossbeam-channel
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87depends onused bycrossbeam-deque
0.7.3crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285crossbeam-epoch
0.8.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dacedepends onused bycrossbeam-queue
0.2.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570used bycrossbeam-utils
0.7.2crates.io↘ 3↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8depends 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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onused byct-logs
0.7.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c8e13110a84b6315df212c045be706af261fd364791cad863285439ebba672edepends onused bycuckoofilter
0.3.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8dd43f7cfaffe0a386636a10baea2ee05cc50df3b77bea4a456c9572a939bf1fdepends onused bycurve25519-dalek
2.1.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d85653f070353a16313d0046f173f70d1aadd5b42600a14de626f0dfb3473a5curve25519-dalek
3.0.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8492de420e9e60bc9a1d66e2dbb91825390b738a388606600663fc529b4b307data-encoding
2.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4d0e2d24e5ee3b23a01de38eefdcd978907890701f08ffffd4cb457ca4ee8d6derive_more
0.99.11crates.io↘ 3↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8cdepends onused by- sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-consensus-aura
0.8.0 - sc-executor
0.8.0 - sc-executor-common
0.8.0 - sc-finality-grandpa
0.8.0 - sc-keystore
2.0.0 - sc-network
0.8.0 - sc-rpc-api
0.8.0 - sc-service
0.8.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - sp-allocator
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-inherents
2.0.0 - sp-transaction-pool
2.0.0 - substrate-prometheus-endpoint
0.8.0
- sc-cli
digest
0.8.1crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondirectories
2.0.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371cdepends ondirs-sys
0.3.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57adepends onused bydns-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.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c53dc3a653e0f64081026e4bf048d48fec9fce90c66e8326ca7292df0ff2d82used 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↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457env_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.12crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38depends onerrno
0.2.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6eab5ee3df98a279d9b316b1af6ac95422127b1290317e6d18c1743c99418b01used byerrno-dragonfly
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067depends onused byevent-listener
2.5.1crates.io↘ 0↖ 2sourceregistry+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↖ 4sourceregistry+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.6.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11498d382790b7a8f2fd211780bec78619bba81cdad3a283997c0c41f836759cused byfixedbitset
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04dused byflate2
1.0.18crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60eefnv
1.0.7crates.io↘ 0↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
2.0.0github.com/usetech-llc/substrate.git↘ 1↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onframe-benchmarking
2.0.0github.com/usetech-llc/substrate.git↘ 11↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onframe-benchmarking-cli
2.0.0github.com/usetech-llc/substrate.git↘ 11↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused byframe-executive
2.0.0github.com/usetech-llc/substrate.git↘ 9↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused byframe-metadata
12.0.0github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused byframe-support
2.0.0github.com/usetech-llc/substrate.git↘ 18↖ 18sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused by- frame-benchmarking
2.0.0 - frame-executive
2.0.0 - frame-system
2.0.0 - frame-system-benchmarking
2.0.0 - nft-runtime
2.0.0 - pallet-aura
2.0.0 - pallet-authorship
2.0.0 - pallet-balances
2.0.0 - pallet-contracts
2.0.0 - pallet-finality-tracker
2.0.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-randomness-collective-flip
2.0.0 - pallet-session
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0 - pallet-transaction-payment-rpc-runtime-api
2.0.0
- frame-benchmarking
frame-support-procedural
2.0.0github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused byframe-support-procedural-tools
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onframe-support-procedural-tools-derive
2.0.0github.com/usetech-llc/substrate.git↘ 3↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onframe-system
2.0.0github.com/usetech-llc/substrate.git↘ 9↖ 16sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused by- frame-benchmarking
2.0.0 - frame-executive
2.0.0 - frame-system-benchmarking
2.0.0 - nft-runtime
2.0.0 - pallet-aura
2.0.0 - pallet-authorship
2.0.0 - pallet-balances
2.0.0 - pallet-contracts
2.0.0 - pallet-finality-tracker
2.0.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-randomness-collective-flip
2.0.0 - pallet-session
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0
- frame-benchmarking
frame-system-benchmarking
2.0.0github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused byframe-system-rpc-runtime-api
2.0.0github.com/usetech-llc/substrate.git↘ 2↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onfs-swap
0.2.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bbused byfuchsia-cprng
0.1.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3bafuchsia-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.6 - 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.0 - sc-service
0.8.0 - 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.6crates.io↘ 7↖ 56sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034edepends onused by- async-tls
0.8.0 - exit-future
0.2.0 - finality-grandpa
0.12.3 - futures-diagnose
1.0.1 - futures_codec
0.4.1 - intervalier
0.4.0 - libp2p
0.28.1 - libp2p-core
0.22.1 - libp2p-deflate
0.22.0 - libp2p-dns
0.22.0 - libp2p-floodsub
0.22.0 - libp2p-gossipsub
0.22.0 - libp2p-identify
0.22.0 - libp2p-kad
0.23.0 - libp2p-mdns
0.22.0 - libp2p-mplex
0.22.0 - libp2p-noise
0.24.0 - libp2p-ping
0.22.0 - libp2p-plaintext
0.22.0 - libp2p-pnet
0.19.1 - libp2p-request-response
0.3.0 - libp2p-swarm
0.22.0 - libp2p-tcp
0.22.0 - libp2p-uds
0.22.0 - libp2p-wasm-ext
0.22.0 - libp2p-websocket
0.23.0 - libp2p-yamux
0.25.0 - multistream-select
0.8.2 - nft
2.0.0 - rw-stream-sink
0.2.1 - sc-basic-authorship
0.8.0 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-finality-grandpa
0.8.0 - sc-informant
0.8.0 - sc-network
0.8.0 - sc-network-gossip
0.8.0 - sc-offchain
2.0.0 - sc-peerset
2.0.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-service
0.8.0 - sc-telemetry
2.0.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - soketto
0.4.2 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-io
2.0.0 - sp-transaction-pool
2.0.0 - sp-utils
2.0.0 - substrate-frame-rpc-system
2.0.0 - wasm-timer
0.2.5 - yamux
0.8.0
- async-tls
futures_codec
0.4.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce54d63f8b0c75023ed920d46fd71d0cbbb830b0ee012726b5b4f506fb6dea5bfutures-channel
0.3.6crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74depends onfutures-channel-preview
0.3.0-alpha.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263adepends onfutures-core
0.3.6crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784bfutures-core-preview
0.3.0-alpha.19crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60afutures-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.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144abused byfutures-io
0.3.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123cfutures-lite
1.11.1crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum381a7ad57b1bad34693f63f6f377e1abded7a9c85c9d3eb6771e11c60aaadab9depends onfutures-macro
0.3.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581bused byfutures-sink
0.3.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbdfutures-task
0.3.6crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94depends 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.6crates.io↘ 13↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34depends onfutures-util-preview
0.3.0-alpha.19crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8ddepends ongcc
0.3.55crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2generic-array
0.12.3crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ecdepends ongeneric-array
0.14.4crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817depends onget_if_addrs
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7used byget_if_addrs-sys
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48depends onused bygetrandom
0.1.15crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6getrandom
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4used byghash
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531depends onused bygimli
0.21.0crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65cgimli
0.22.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724used byglob
0.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ad1da430bd7281dde2576f44c84cc3f0f7b475e7202cd503042dff01a8c8120used 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.6crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53depends onused 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.1.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3dadepends onused byhashbrown
0.6.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6eaddepends onused byhashbrown
0.8.2crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25depends onhashbrown
0.9.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04used byheck
0.3.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205depends onhermit-abi
0.1.17crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8depends onused byhex
0.4.2crates.io↘ 0↖ 4sourceregistry+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↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5af1f635ef1bc545d78392b136bfe1c9809e029023c84a3638a864a10b8819c8hmac
0.7.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695depends onhmac-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.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9depends 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.4crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9httpdate
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.8crates.io↘ 16↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835depends 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.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9used byimpl-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↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9ddepends onindexmap
1.6.0crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2depends onInflector
0.11.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.7crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66depends 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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135used byitertools
0.8.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484depends onitertools
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54bdepends onused byitoa
0.4.6crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6jobserver
0.1.21crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2depends onused byjs-sys
0.3.45crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8depends 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
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-transaction-payment-rpc
2.0.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-rpc-server
2.0.0 - sc-service
0.8.0 - substrate-frame-rpc-system
2.0.0
- 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↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7kernel32-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.7.0crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0315ef2f688e33844400b31f11c263f2b3dc21d8b9355c6891c5f185fae43f9adepends onkvdb-memorydb
0.7.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73de822b260a3bdfb889dbbb65bb2d473eee2253973d6fa4a5d149a2a4a7c66eused bykvdb-rocksdb
0.9.1crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44947dd392f09475af614d740fe0320b66d01cb5b977f664bbbb5e45a70ea4c1depends 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-utils
0.7.2 - fs-swap
0.2.4 - futures-diagnose
1.0.1 - jsonrpc-server-utils
15.1.0 - libp2p
0.28.1 - libp2p-core
0.22.1 - libp2p-mdns
0.22.0 - libp2p-noise
0.24.0 - prometheus
0.10.0 - rayon-core
1.8.1 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-executor
0.8.0 - sc-light
2.0.0 - sc-service
0.8.0 - schannel
0.1.19 - sharded-slab
0.0.9 - slog-scope
4.3.0 - sp-core
2.0.0 - sp-keyring
2.0.0 - sp-utils
2.0.0 - structopt
0.3.20 - thread_local
1.0.1 - tokio
0.2.22 - tokio-executor
0.2.0-alpha.6 - tokio-reactor
0.1.12 - tokio-threadpool
0.1.18 - tracing-core
0.1.17 - tracing-log
0.1.1 - tracing-subscriber
0.2.13 - wasm-bindgen-backend
0.2.68 - 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.79crates.io↘ 0↖ 62sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743used by- async-io
1.1.10 - atty
0.2.14 - backtrace
0.3.53 - chrono
0.4.19 - clang-sys
0.29.3 - core-foundation
0.7.0 - dirs-sys
0.3.5 - errno
0.2.6 - errno-dragonfly
0.1.1 - fdlimit
0.2.1 - flate2
1.0.18 - fs-swap
0.2.4 - get_if_addrs
0.5.3 - get_if_addrs-sys
0.1.1 - getrandom
0.1.15 - getrandom
0.2.0 - hermit-abi
0.1.17 - iovec
0.1.4 - jobserver
0.1.21 - librocksdb-sys
6.11.4 - mach
0.3.2 - memmap
0.7.0 - mio
0.6.22 - mio-uds
0.6.8 - nb-connect
1.0.2 - net2
0.2.35 - nix
0.17.0 - num_cpus
1.13.0 - parity-db
0.1.2 - parity-tokio-ipc
0.4.0 - parking_lot_core
0.4.0 - parking_lot_core
0.6.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.0 - polling
2.0.1 - rand
0.3.23 - rand
0.4.6 - rand
0.5.6 - rand
0.6.5 - rand
0.7.3 - rand_jitter
0.1.4 - rand_os
0.1.3 - region
2.2.0 - ring
0.16.15 - rocksdb
0.15.0 - rpassword
4.0.5 - security-framework
1.0.0 - security-framework-sys
1.0.0 - signal-hook-registry
1.2.1 - socket2
0.3.15 - tempfile
3.1.0 - time
0.1.44 - tokio
0.2.22 - 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 - zstd-safe
2.0.5+zstd.1.4.5 - zstd-sys
1.4.17+zstd.1.4.5
- 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.28.1crates.io↘ 31↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum571f5a4604c1a40d75651da141dfde29ad15329f537a779528803297d2220274depends on- atomic
0.4.6 - bytes
0.5.6 - futures
0.3.6 - lazy_static
1.4.0 - libp2p-core
0.22.1 - libp2p-core-derive
0.20.2 - libp2p-deflate
0.22.0 - libp2p-dns
0.22.0 - libp2p-floodsub
0.22.0 - libp2p-gossipsub
0.22.0 - libp2p-identify
0.22.0 - libp2p-kad
0.23.0 - libp2p-mdns
0.22.0 - libp2p-mplex
0.22.0 - libp2p-noise
0.24.0 - libp2p-ping
0.22.0 - libp2p-plaintext
0.22.0 - libp2p-pnet
0.19.1 - libp2p-request-response
0.3.0 - libp2p-swarm
0.22.0 - libp2p-tcp
0.22.0 - libp2p-uds
0.22.0 - libp2p-wasm-ext
0.22.0 - libp2p-websocket
0.23.0 - libp2p-yamux
0.25.0 - multihash
0.11.4 - parity-multiaddr
0.9.2 - parking_lot
0.10.2 - pin-project
0.4.27 - smallvec
1.4.2 - wasm-timer
0.2.5
- atomic
libp2p-core
0.22.1crates.io↘ 26↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52f13ba8c7df0768af2eb391696d562c7de88cc3a35122531aaa6a7d77754d25depends on- asn1_der
0.6.3 - bs58
0.3.1 - ed25519-dalek
1.0.1 - either
1.6.1 - fnv
1.0.7 - futures
0.3.6 - futures-timer
3.0.2 - lazy_static
1.4.0 - libsecp256k1
0.3.5 - log
0.4.11 - multihash
0.11.4 - multistream-select
0.8.2 - parity-multiaddr
0.9.2 - parking_lot
0.10.2 - pin-project
0.4.27 - prost
0.6.1 - prost-build
0.6.1 - rand
0.7.3 - ring
0.16.15 - rw-stream-sink
0.2.1 - sha2
0.8.2 - smallvec
1.4.2 - thiserror
1.0.21 - unsigned-varint
0.4.0 - void
1.0.2 - zeroize
1.1.1
used by- libp2p
0.28.1 - libp2p-deflate
0.22.0 - libp2p-dns
0.22.0 - libp2p-floodsub
0.22.0 - libp2p-gossipsub
0.22.0 - libp2p-identify
0.22.0 - libp2p-kad
0.23.0 - libp2p-mdns
0.22.0 - libp2p-mplex
0.22.0 - libp2p-noise
0.24.0 - libp2p-ping
0.22.0 - libp2p-plaintext
0.22.0 - libp2p-request-response
0.3.0 - libp2p-swarm
0.22.0 - libp2p-tcp
0.22.0 - libp2p-uds
0.22.0 - libp2p-wasm-ext
0.22.0 - libp2p-websocket
0.23.0 - libp2p-yamux
0.25.0
- asn1_der
libp2p-core-derive
0.20.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf753d9324cd3ec14bf04b8a8cd0d269c87f294153d6bf2a84497a63a5ad22213depends onused bylibp2p-deflate
0.22.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum74029ae187f35f4b8ddf26b9779a68b340045d708528a103917cdca49a296db5used bylibp2p-dns
0.22.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7cf319822e08dd65c8e060d2354e9f952895bbc433f5706c75ed010c152aee5edepends onused bylibp2p-floodsub
0.22.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8a9acb43a3e4a4e413e0c4abe0fa49308df7c6335c88534757b647199cb8a51depends onused bylibp2p-gossipsub
0.22.0crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab20fcb60edebe3173bbb708c6ac3444afdf1e3152dc2866b10c4f5497f17467depends onused bylibp2p-identify
0.22.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56396ee63aa9164eacf40c2c5d2bda8c4133c2f57e1b0425d51d3a4e362583b1depends onused bylibp2p-kad
0.23.0crates.io↘ 19↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc7fa9047f8b8f544278a35c2d9d45d3b2c1785f2d86d4e1629d6edf97be3955depends onused bylibp2p-mdns
0.22.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3173b5a6b2f690c29ae07798d85b9441a131ac76ddae9015ef22905b623d0c69depends onused bylibp2p-mplex
0.22.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a73a799cc8410b36e40b8f4c4b6babbcb9efd3727111bf517876e4acfa612d3depends onused bylibp2p-noise
0.24.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ef6c490042f549fb1025f2892dfe6083d97a77558f450c1feebe748ca9eb15adepends onused bylibp2p-ping
0.22.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad063c21dfcea4518ac9e8bd4119d33a5b26c41e674f602f41f05617a368a5c8used bylibp2p-plaintext
0.22.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum903a12e99c72dbebefea258de887982adeacc7025baa1ceb10b7fa9928f54791depends onused bylibp2p-pnet
0.19.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37d0db10e139d22d7af0b23ed7949449ec86262798aa0fd01595abdbcb02dc87used bylibp2p-request-response
0.3.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c0c9e8a4cd69d97e9646c54313d007512f411aba8c5226cfcda16df6a6e84a3depends onused bylibp2p-swarm
0.22.0crates.io↘ 8↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7193e444210132237b81b755ec7fe53f1c4bd2f53cf719729b94c0c72eb6eaa1depends onlibp2p-tcp
0.22.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44f42ec130d7a37a7e47bf4398026b7ad9185c08ed26972e2720f8b94112796fdepends onused bylibp2p-uds
0.22.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdea7acb0a034f70d7db94c300eba3f65c0f6298820105624088a9609c9974d77used bylibp2p-wasm-ext
0.22.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34c1faac6f92c21fbe155417957863ea822fba9e9fd5eb24c0912336a100e63fdepends onused bylibp2p-websocket
0.23.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd650534ebd99f48f6fa292ed5db10d30df2444943afde4407ceeddab8e513fcadepends onused bylibp2p-yamux
0.25.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum781d9b9f043dcdabc40640807125368596b849fd4d96cdca2dcf052fdf6f33fdused 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.3crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304alinregress
0.1.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9290cf6f928576eeb9c096c6fad9d8d452a0a1a70a2bbffa6e36064eedc0aac9depends onused bylock_api
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442cdepends onused bylock_api
0.3.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75depends onlock_api
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261cdepends onused bylog
0.4.11crates.io↘ 1↖ 111sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8bdepends onused by- async-io
1.1.10 - async-std
1.6.5 - 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 - frame-support
2.0.0 - futures-diagnose
1.0.1 - globset
0.4.5 - h2
0.1.26 - hyper
0.12.35 - hyper-rustls
0.21.0 - 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.9.1 - libp2p-core
0.22.1 - libp2p-dns
0.22.0 - libp2p-gossipsub
0.22.0 - libp2p-identify
0.22.0 - libp2p-kad
0.23.0 - libp2p-mdns
0.22.0 - libp2p-mplex
0.22.0 - libp2p-noise
0.24.0 - libp2p-ping
0.22.0 - libp2p-plaintext
0.22.0 - libp2p-pnet
0.19.1 - libp2p-request-response
0.3.0 - libp2p-swarm
0.22.0 - libp2p-tcp
0.22.0 - libp2p-uds
0.22.0 - libp2p-websocket
0.23.0 - mio
0.6.22 - mio-extras
2.0.6 - mio-named-pipes
0.1.7 - multistream-select
0.8.2 - nft
2.0.0 - pallet-nft
2.0.0 - parity-db
0.1.2 - parity-tokio-ipc
0.4.0 - parity-ws
0.10.0 - polling
2.0.1 - prost-build
0.6.1 - pwasm-utils
0.14.0 - regalloc
0.0.27 - rustls
0.18.1 - sc-basic-authorship
0.8.0 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-client-db
0.8.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-executor
0.8.0 - sc-executor-common
0.8.0 - sc-executor-wasmi
0.8.0 - sc-executor-wasmtime
0.8.0 - sc-finality-grandpa
0.8.0 - sc-informant
0.8.0 - sc-network
0.8.0 - sc-network-gossip
0.8.0 - sc-offchain
2.0.0 - sc-peerset
2.0.0 - sc-proposer-metrics
0.8.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-rpc-server
2.0.0 - sc-service
0.8.0 - sc-state-db
0.8.0 - sc-telemetry
2.0.0 - sc-tracing
2.0.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - soketto
0.4.2 - sp-allocator
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-finality-grandpa
2.0.0 - sp-io
2.0.0 - sp-panic-handler
2.0.0 - sp-runtime
2.0.0 - sp-state-machine
0.8.0 - sp-tracing
2.0.0 - sp-transaction-pool
2.0.0 - substrate-frame-rpc-system
2.0.0 - substrate-prometheus-endpoint
0.8.0 - 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.21 - tracing-log
0.1.1 - trie-db
0.22.1 - want
0.2.0 - want
0.3.0 - wasm-bindgen-backend
0.2.68 - 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.4.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237depends onlru
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum111b945ac72ec09eb7bc62a0fbdc3cc6e80555a7245f52a69d3921a75b53b153depends onused bylru_time_cache
0.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumadb241df5c4caeb888755363fc95f8a896618dc0d435e9e775f7930cb099beabused bymach
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onused bymatchers
0.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1depends onused bymatrixmultiply
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478fdepends onused bymaybe-uninit
2.0.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00memchr
2.3.3crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400memmap
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 onmemory_units
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882used bymemory-db
0.24.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36f36ddb0b2cdc25d38babba472108798e3477f02be5165f038c5e393e50c57aused bymerlin
2.0.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6feca46f4fa3443a01769d768727f10c10a20fdb65e52dc16a81f0c8269bb78minicbor
0.5.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fc03ad6f8f548db7194a5ff5a6f96342ecae4e3ef67d2bf18bacc0e245cd041depends onused byminicbor-derive
0.4.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc214bf3d90099b52f3e4b328ae0fe34837fd0fab683ad1e10fceb4629106df48depends onused byminiz_oxide
0.4.3crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19ddepends onused bymio
0.6.22crates.io↘ 11↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430depends 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.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919used bymiow
0.3.5crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979edepends onmore-asserts
0.2.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238multihash
0.11.4crates.io↘ 7↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum567122ab6492f49b59def14ecc36e13e64dca4188196dd0cd41f9f3f979f3df6depends onmultimap
0.8.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1255076139a83bb467426e7f8d0134968a8118844faa755985e077cf31850333used bymultistream-select
0.8.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9157e87afbc2ef0d84cc0345423d715f445edde00141c93721c162de35a05e5used bynalgebra
0.18.1crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2depends onused bynames
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2dadepends onused bynb-connect
1.0.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8123a81538e457d44b933a02faf885d3fe8408806b23fa700e8f01c6c3a98998depends onused bynet2
0.2.35crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853depends onnft
2.0.0workspace↘ 34↖ 0depends on- frame-benchmarking
2.0.0 - frame-benchmarking-cli
2.0.0 - futures
0.3.6 - jsonrpc-core
15.1.0 - log
0.4.11 - nft-runtime
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-transaction-payment-rpc
2.0.0 - parking_lot
0.10.2 - sc-basic-authorship
0.8.0 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-consensus
0.8.0 - sc-consensus-aura
0.8.0 - sc-executor
0.8.0 - sc-finality-grandpa
0.8.0 - sc-network
0.8.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-service
0.8.0 - sc-transaction-pool
2.0.0 - sp-api
2.0.0 - sp-block-builder
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-consensus-aura
0.8.0 - sp-core
2.0.0 - sp-finality-grandpa
2.0.0 - sp-inherents
2.0.0 - sp-runtime
2.0.0 - sp-transaction-pool
2.0.0 - structopt
0.3.20 - substrate-build-script-utils
2.0.0 - substrate-frame-rpc-system
2.0.0
- frame-benchmarking
nft-runtime
2.0.0workspace↘ 33↖ 1depends on- frame-benchmarking
2.0.0 - frame-executive
2.0.0 - frame-support
2.0.0 - frame-system
2.0.0 - frame-system-benchmarking
2.0.0 - frame-system-rpc-runtime-api
2.0.0 - hex-literal
0.3.1 - pallet-aura
2.0.0 - pallet-balances
2.0.0 - pallet-contracts
2.0.0 - pallet-contracts-primitives
2.0.0 - pallet-contracts-rpc-runtime-api
0.8.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-randomness-collective-flip
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0 - pallet-transaction-payment-rpc-runtime-api
2.0.0 - parity-scale-codec
1.3.5 - serde
1.0.117 - sp-api
2.0.0 - sp-block-builder
2.0.0 - sp-consensus-aura
0.8.0 - sp-core
2.0.0 - sp-inherents
2.0.0 - sp-offchain
2.0.0 - sp-runtime
2.0.0 - sp-session
2.0.0 - sp-std
2.0.0 - sp-transaction-pool
2.0.0 - sp-version
2.0.0 - substrate-wasm-builder-runner
1.0.6
used by- frame-benchmarking
nix
0.17.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363used bynodrop
0.1.14crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bbused bynohash-hasher
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451used bynom
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↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304used bynum-complex
0.2.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95depends onused bynum-integer
0.1.43crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875bdepends onnum-rational
0.2.4crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aefused bynum-traits
0.2.12crates.io↘ 2↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611depends 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.21.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693used byonce_cell
0.1.8crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37depends onused byonce_cell
1.4.1crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645addepends onopaque-debug
0.2.3crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529copaque-debug
0.3.0crates.io↘ 0↖ 5sourceregistry+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.0github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-authorship
2.0.0github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-balances
2.0.0github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-contracts
2.0.0github.com/usetech-llc/substrate.git↘ 14↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onpallet-contracts-primitives
2.0.0github.com/usetech-llc/substrate.git↘ 3↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88capallet-contracts-rpc
0.8.0github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-contracts-rpc-runtime-api
0.8.0github.com/usetech-llc/substrate.git↘ 5↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onpallet-finality-tracker
2.0.0github.com/usetech-llc/substrate.git↘ 9↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-grandpa
2.0.0github.com/usetech-llc/substrate.git↘ 15↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-randomness-collective-flip
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-session
2.0.0github.com/usetech-llc/substrate.git↘ 13↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onpallet-sudo
2.0.0github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-timestamp
2.0.0github.com/usetech-llc/substrate.git↘ 11↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onpallet-transaction-payment
2.0.0github.com/usetech-llc/substrate.git↘ 10↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onpallet-transaction-payment-rpc
2.0.0github.com/usetech-llc/substrate.git↘ 11↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bypallet-transaction-payment-rpc-runtime-api
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onparity-db
0.1.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00d595e372d119261593297debbe4193811a4dc811d2a1ccbb8caaa6666ad7abused byparity-multiaddr
0.9.2crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2165a93382a93de55868dcbfa11e4a8f99676a9164eee6a2b4a9479ad319c257depends onparity-scale-codec
1.3.5crates.io↘ 5↖ 79sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c740e5fbcb6847058b40ac7e5574766c6388f585e184d769910fe0d3a2ca861used by- finality-grandpa
0.12.3 - fork-tree
2.0.0 - frame-benchmarking
2.0.0 - frame-benchmarking-cli
2.0.0 - frame-executive
2.0.0 - frame-metadata
12.0.0 - frame-support
2.0.0 - frame-system
2.0.0 - frame-system-benchmarking
2.0.0 - frame-system-rpc-runtime-api
2.0.0 - impl-codec
0.4.2 - nft-runtime
2.0.0 - pallet-aura
2.0.0 - pallet-authorship
2.0.0 - pallet-balances
2.0.0 - pallet-contracts
2.0.0 - pallet-contracts-primitives
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-contracts-rpc-runtime-api
0.8.0 - pallet-finality-tracker
2.0.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-randomness-collective-flip
2.0.0 - pallet-session
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0 - pallet-transaction-payment-rpc
2.0.0 - pallet-transaction-payment-rpc-runtime-api
2.0.0 - sc-basic-authorship
0.8.0 - sc-block-builder
0.8.0 - sc-chain-spec
2.0.0 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-client-db
0.8.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-executor
0.8.0 - sc-executor-common
0.8.0 - sc-executor-wasmi
0.8.0 - sc-executor-wasmtime
0.8.0 - sc-finality-grandpa
0.8.0 - sc-light
2.0.0 - sc-network
0.8.0 - sc-offchain
2.0.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-service
0.8.0 - sc-state-db
0.8.0 - sc-transaction-pool
2.0.0 - sp-api
2.0.0 - sp-application-crypto
2.0.0 - sp-arithmetic
2.0.0 - sp-authorship
2.0.0 - sp-block-builder
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-consensus-aura
0.8.0 - sp-consensus-slots
0.8.0 - sp-core
2.0.0 - sp-externalities
0.8.0 - sp-finality-grandpa
2.0.0 - sp-finality-tracker
2.0.0 - sp-inherents
2.0.0 - sp-io
2.0.0 - sp-runtime
2.0.0 - sp-runtime-interface
2.0.0 - sp-sandbox
0.8.0 - sp-session
2.0.0 - sp-staking
2.0.0 - sp-state-machine
0.8.0 - sp-storage
2.0.0 - sp-timestamp
2.0.0 - sp-tracing
2.0.0 - sp-transaction-pool
2.0.0 - sp-trie
2.0.0 - sp-version
2.0.0 - sp-wasm-interface
2.0.0 - substrate-frame-rpc-system
2.0.0
- 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.7.0crates.io↘ 8↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum297ff91fa36aec49ce183484b102f6b75b46776822bd81525bfc4cc9b0dd0f5cdepends onparity-util-mem-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2parity-wasm
0.41.0crates.io↘ 0↖ 7sourceregistry+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.7.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337depends onused byparking_lot
0.9.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252parking_lot
0.10.2crates.io↘ 2↖ 37sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505edepends onused by- jsonrpc-http-server
15.1.0 - jsonrpc-ipc-server
15.1.0 - jsonrpc-pubsub
15.1.0 - jsonrpc-ws-server
15.1.0 - kvdb-memorydb
0.7.0 - kvdb-rocksdb
0.9.1 - libp2p
0.28.1 - libp2p-core
0.22.1 - libp2p-mplex
0.22.0 - nft
2.0.0 - parity-db
0.1.2 - parity-util-mem
0.7.0 - sc-client-api
2.0.0 - sc-client-db
0.8.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-executor
0.8.0 - sc-finality-grandpa
0.8.0 - sc-keystore
2.0.0 - sc-light
2.0.0 - sc-network
0.8.0 - sc-offchain
2.0.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-service
0.8.0 - sc-state-db
0.8.0 - sc-telemetry
2.0.0 - sc-tracing
2.0.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-database
2.0.0 - sp-inherents
2.0.0 - sp-io
2.0.0 - sp-state-machine
0.8.0
- jsonrpc-http-server
parking_lot
0.11.0crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733parking_lot_core
0.4.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9used byparking_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.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9bdepends onused bypaste
0.1.18crates.io↘ 2↖ 3sourceregistry+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↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9depends onpeeking_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↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32epetgraph
0.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7depends onused bypin-project
0.4.27crates.io↘ 1↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15depends onpin-project-internal
0.4.27crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895depends onused bypin-project-lite
0.1.10crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume555d9e657502182ac97b539fb3dae8b79cda19e3e4f8ffb5e8de4f18df93c95pin-utils
0.1.0crates.io↘ 0↖ 4sourceregistry+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.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab773feb154f12c49ffcfd66ab8bdcf9a1843f950db48b0d8be9d4393783b058used bypoly1305
0.6.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22ce46de8e53ee414ca4d02bfefac75d8c12fba948b76622a40b4be34dfce980depends onused bypolyval
0.4.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5884790f1ce3553ad55fec37b5aaac5882e0e845a2612df744d6c85c9bf046cdepends onused byppv-lite86
0.2.9crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20used byprimitive-types
0.7.2crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc55c21c64d0eaa4d7ed885d959ef2d62d9e488c27c0e02d9aa5ce6c877b7d5f8proc-macro-crate
0.1.5crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785depends onproc-macro-error
1.0.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cused byproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro-hack
0.5.18crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598proc-macro-nested
0.1.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5aused byproc-macro2
1.0.24crates.io↘ 1↖ 36sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71depends onused by- async-trait
0.1.41 - bindgen
0.54.0 - derive_more
0.99.11 - dyn-clonable-impl
0.9.0 - failure_derive
0.1.8 - frame-support-procedural
2.0.0 - frame-support-procedural-tools
2.0.0 - frame-support-procedural-tools-derive
2.0.0 - futures-macro
0.3.6 - impl-trait-for-tuples
0.1.3 - jsonrpc-derive
15.1.0 - minicbor-derive
0.4.1 - parity-scale-codec-derive
1.2.2 - parity-util-mem-derive
0.1.0 - pin-project-internal
0.4.27 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prost-derive
0.6.1 - quote
1.0.7 - ref-cast-impl
1.0.2 - sc-chain-spec-derive
2.0.0 - scroll_derive
0.10.3 - serde_derive
1.0.117 - slog_derive
0.2.0 - sp-api-proc-macro
2.0.0 - sp-debug-derive
2.0.0 - sp-runtime-interface-proc-macro
2.0.0 - structopt-derive
0.4.13 - strum_macros
0.16.0 - syn
1.0.44 - synstructure
0.12.4 - thiserror-impl
1.0.21 - tracing-attributes
0.1.11 - wasm-bindgen-backend
0.2.68 - wasm-bindgen-macro-support
0.2.68 - zeroize_derive
1.0.1
- async-trait
prometheus
0.10.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30d70cf4412832bcac9cffe27906f4a66e450d323525e977168c70d1b36120aeprost
0.6.1crates.io↘ 2↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212depends onprost-build
0.6.1crates.io↘ 10↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26depends onprost-derive
0.6.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72used byprost-types
0.6.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aadepends onused bypwasm-utils
0.14.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f53bc2558e8376358ebdc28301546471d67336584f6438ed4b7c7457a055fd7depends onquick-error
1.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
1.0.7crates.io↘ 1↖ 37sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37depends onused by- asn1_der_derive
0.1.2 - async-trait
0.1.41 - bindgen
0.54.0 - derive_more
0.99.11 - dyn-clonable-impl
0.9.0 - failure_derive
0.1.8 - frame-support-procedural
2.0.0 - frame-support-procedural-tools
2.0.0 - frame-support-procedural-tools-derive
2.0.0 - futures-macro
0.3.6 - impl-trait-for-tuples
0.1.3 - jsonrpc-derive
15.1.0 - libp2p-core-derive
0.20.2 - minicbor-derive
0.4.1 - parity-scale-codec-derive
1.2.2 - pin-project-internal
0.4.27 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prost-derive
0.6.1 - ref-cast-impl
1.0.2 - sc-chain-spec-derive
2.0.0 - scroll_derive
0.10.3 - serde_derive
1.0.117 - slog_derive
0.2.0 - sp-api-proc-macro
2.0.0 - sp-debug-derive
2.0.0 - sp-runtime-interface-proc-macro
2.0.0 - structopt-derive
0.4.13 - strum_macros
0.16.0 - syn
1.0.44 - synstructure
0.12.4 - thiserror-impl
1.0.21 - tracing-attributes
0.1.11 - wasm-bindgen-backend
0.2.68 - wasm-bindgen-macro
0.2.68 - wasm-bindgen-macro-support
0.2.68 - 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↖ 2sourceregistry+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.5.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9used byrand
0.6.5crates.io↘ 11↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184cadepends onrand
0.7.3crates.io↘ 6↖ 33sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- ed25519-dalek
1.0.1 - fixed-hash
0.6.1 - jsonrpc-pubsub
15.1.0 - libp2p-core
0.22.1 - libp2p-floodsub
0.22.0 - libp2p-gossipsub
0.22.0 - libp2p-kad
0.23.0 - libp2p-mdns
0.22.0 - libp2p-noise
0.24.0 - libp2p-ping
0.22.0 - libp2p-pnet
0.19.1 - libp2p-request-response
0.3.0 - libp2p-swarm
0.22.0 - libsecp256k1
0.3.5 - parity-tokio-ipc
0.4.0 - parity-ws
0.10.0 - sc-cli
0.8.0 - sc-finality-grandpa
0.8.0 - sc-keystore
2.0.0 - sc-network
0.8.0 - sc-offchain
2.0.0 - sc-service
0.8.0 - sc-telemetry
2.0.0 - schnorrkel
0.9.1 - snow
0.7.2 - soketto
0.4.2 - sp-core
2.0.0 - sp-runtime
2.0.0 - sp-state-machine
0.8.0 - tempfile
3.1.0 - tiny-bip39
0.7.3 - twox-hash
1.6.0 - yamux
0.8.0
- ed25519-dalek
rand_chacha
0.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcefdepends onused byrand_chacha
0.2.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onused byrand_core
0.3.1crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4bdepends onrand_core
0.4.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dcrand_core
0.5.1crates.io↘ 1↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_hc
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4depends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_isaac
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08depends onused byrand_jitter
0.1.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39bdepends onused byrand_os
0.1.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071used byrand_pcg
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44depends onused byrand_pcg
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byrand_xorshift
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5cdepends onused byraw-cpuid
7.0.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeafdepends onused byrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.4.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcf6960dc9a5b4ee8d3e4c5787b4a112a8818e0290a42ff664ad60692fdf2032rayon-core
1.8.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8c4fec834fb6e6d2dd5eece3c7b432a52f0ba887cf40e595190c4107edc08bfdepends onused byrdrand
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2depends onused byredox_syscall
0.1.57crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ceredox_users
0.3.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9dused byref-cast
1.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum745c1787167ddae5569661d5ffb8b25ae5fedbf46717eaa92d652221cec72623depends onused byref-cast-impl
1.0.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d21b475ab879ef0e315ad99067fa25778c3b0377f57f1b00207448dac1a3144depends onused byregalloc
0.0.27crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ba8aaf5fe7cf307c6dbdaeed85478961d29e25e3bee5169e11b92fa9f027a8depends onused byregex
1.4.1crates.io↘ 4↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820bregex-automata
0.1.9crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4depends onused byregex-syntax
0.6.20crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11cregion
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.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume005d658ad26eacc2b6c506dfde519f4e277e328d0eb3379ca61647d70a8f531used byring
0.16.15crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4rocksdb
0.15.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23d83c02c429044d58474eaf5ae31e062d0de894e21125b47437ec0edc1397e6depends onused byrpassword
4.0.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99fdepends onused byrust-argon2
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19used byrustc_version
0.2.3crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onrustc-demangle
0.1.17crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2610b7f643d18c87dff3b489950269617e6601a51f1f05aa5daefee36f64f0brustc-hash
1.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustc-hex
2.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rustls
0.18.1crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81rustls-native-certs
0.4.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8used byrw-stream-sink
0.2.1crates.io↘ 3↖ 3sourceregistry+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.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2324b0e8c3bb9a586a571fdb3136f70e7e2c748de00a78043f86e0cff91f91feused bysalsa20-core
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fe6cc1b9f5a5867853ade63099de70f042f7679e408d1ffe52821c9248e6e69depends onused bysc-basic-authorship
0.8.0github.com/usetech-llc/substrate.git↘ 17↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- futures
0.3.6 - futures-timer
3.0.2 - log
0.4.11 - parity-scale-codec
1.3.5 - sc-block-builder
0.8.0 - sc-client-api
2.0.0 - sc-proposer-metrics
0.8.0 - sc-telemetry
2.0.0 - sp-api
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-inherents
2.0.0 - sp-runtime
2.0.0 - sp-transaction-pool
2.0.0 - substrate-prometheus-endpoint
0.8.0 - tokio-executor
0.2.0-alpha.6
used by- futures
sc-block-builder
0.8.0github.com/usetech-llc/substrate.git↘ 10↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsc-chain-spec
2.0.0github.com/usetech-llc/substrate.git↘ 10↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-chain-spec-derive
2.0.0github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused bysc-cli
0.8.0github.com/usetech-llc/substrate.git↘ 42↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- ansi_term
0.12.1 - atty
0.2.14 - bip39
0.6.0-beta.1 - chrono
0.4.19 - derive_more
0.99.11 - fdlimit
0.2.1 - futures
0.3.6 - hex
0.4.2 - lazy_static
1.4.0 - libp2p
0.28.1 - log
0.4.11 - names
0.11.0 - nix
0.17.0 - parity-scale-codec
1.3.5 - parity-util-mem
0.7.0 - rand
0.7.3 - regex
1.4.1 - rpassword
4.0.5 - sc-client-api
2.0.0 - sc-informant
0.8.0 - sc-keystore
2.0.0 - sc-network
0.8.0 - sc-service
0.8.0 - sc-telemetry
2.0.0 - sc-tracing
2.0.0 - serde
1.0.117 - serde_json
1.0.59 - sp-blockchain
2.0.0 - sp-core
2.0.0 - sp-keyring
2.0.0 - sp-panic-handler
2.0.0 - sp-runtime
2.0.0 - sp-state-machine
0.8.0 - sp-utils
2.0.0 - sp-version
2.0.0 - structopt
0.3.20 - substrate-prometheus-endpoint
0.8.0 - time
0.1.44 - tokio
0.2.22 - tracing
0.1.21 - tracing-log
0.1.1 - tracing-subscriber
0.2.13
- ansi_term
sc-client-api
2.0.0github.com/usetech-llc/substrate.git↘ 29↖ 18sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- derive_more
0.99.11 - fnv
1.0.7 - futures
0.3.6 - hash-db
0.15.2 - hex-literal
0.3.1 - kvdb
0.7.0 - lazy_static
1.4.0 - log
0.4.11 - parity-scale-codec
1.3.5 - parking_lot
0.10.2 - sc-executor
0.8.0 - sc-telemetry
2.0.0 - sp-api
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-database
2.0.0 - sp-externalities
0.8.0 - sp-inherents
2.0.0 - sp-keyring
2.0.0 - sp-runtime
2.0.0 - sp-state-machine
0.8.0 - sp-std
2.0.0 - sp-storage
2.0.0 - sp-transaction-pool
2.0.0 - sp-trie
2.0.0 - sp-utils
2.0.0 - sp-version
2.0.0 - substrate-prometheus-endpoint
0.8.0
used by- nft
2.0.0 - sc-basic-authorship
0.8.0 - sc-block-builder
0.8.0 - sc-cli
0.8.0 - sc-client-db
0.8.0 - sc-consensus
0.8.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-finality-grandpa
0.8.0 - sc-informant
0.8.0 - sc-light
2.0.0 - sc-network
0.8.0 - sc-offchain
2.0.0 - sc-rpc
2.0.0 - sc-service
0.8.0 - sc-state-db
0.8.0 - sc-transaction-pool
2.0.0 - substrate-frame-rpc-system
2.0.0
- derive_more
sc-client-db
0.8.0github.com/usetech-llc/substrate.git↘ 23↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- blake2-rfc
0.2.18 - hash-db
0.15.2 - kvdb
0.7.0 - kvdb-memorydb
0.7.0 - kvdb-rocksdb
0.9.1 - linked-hash-map
0.5.3 - log
0.4.11 - parity-db
0.1.2 - parity-scale-codec
1.3.5 - parity-util-mem
0.7.0 - parking_lot
0.10.2 - sc-client-api
2.0.0 - sc-executor
0.8.0 - sc-state-db
0.8.0 - sp-arithmetic
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-database
2.0.0 - sp-runtime
2.0.0 - sp-state-machine
0.8.0 - sp-trie
2.0.0 - substrate-prometheus-endpoint
0.8.0
- blake2-rfc
sc-consensus
0.8.0github.com/usetech-llc/substrate.git↘ 4↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casc-consensus-aura
0.8.0github.com/usetech-llc/substrate.git↘ 24↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- derive_more
0.99.11 - futures
0.3.6 - futures-timer
3.0.2 - log
0.4.11 - parity-scale-codec
1.3.5 - parking_lot
0.10.2 - sc-block-builder
0.8.0 - sc-client-api
2.0.0 - sc-consensus-slots
0.8.0 - sc-keystore
2.0.0 - sc-telemetry
2.0.0 - sp-api
2.0.0 - sp-application-crypto
2.0.0 - sp-block-builder
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-consensus-aura
0.8.0 - sp-core
2.0.0 - sp-inherents
2.0.0 - sp-io
2.0.0 - sp-runtime
2.0.0 - sp-timestamp
2.0.0 - sp-version
2.0.0 - substrate-prometheus-endpoint
0.8.0
used by- derive_more
sc-consensus-slots
0.8.0github.com/usetech-llc/substrate.git↘ 16↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-executor
0.8.0github.com/usetech-llc/substrate.git↘ 21↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- derive_more
0.99.11 - lazy_static
1.4.0 - libsecp256k1
0.3.5 - log
0.4.11 - parity-scale-codec
1.3.5 - parity-wasm
0.41.0 - parking_lot
0.10.2 - sc-executor-common
0.8.0 - sc-executor-wasmi
0.8.0 - sc-executor-wasmtime
0.8.0 - sp-api
2.0.0 - sp-core
2.0.0 - sp-externalities
0.8.0 - sp-io
2.0.0 - sp-panic-handler
2.0.0 - sp-runtime-interface
2.0.0 - sp-serializer
2.0.0 - sp-trie
2.0.0 - sp-version
2.0.0 - sp-wasm-interface
2.0.0 - wasmi
0.6.2
- derive_more
sc-executor-common
0.8.0github.com/usetech-llc/substrate.git↘ 10↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsc-executor-wasmi
0.8.0github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-executor-wasmtime
0.8.0github.com/usetech-llc/substrate.git↘ 11↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-finality-grandpa
0.8.0github.com/usetech-llc/substrate.git↘ 30↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- derive_more
0.99.11 - finality-grandpa
0.12.3 - fork-tree
2.0.0 - futures
0.3.6 - futures-timer
3.0.2 - log
0.4.11 - parity-scale-codec
1.3.5 - parking_lot
0.10.2 - pin-project
0.4.27 - rand
0.7.3 - sc-block-builder
0.8.0 - sc-client-api
2.0.0 - sc-consensus
0.8.0 - sc-keystore
2.0.0 - sc-network
0.8.0 - sc-network-gossip
0.8.0 - sc-telemetry
2.0.0 - serde_json
1.0.59 - sp-api
2.0.0 - sp-application-crypto
2.0.0 - sp-arithmetic
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-finality-grandpa
2.0.0 - sp-finality-tracker
2.0.0 - sp-inherents
2.0.0 - sp-runtime
2.0.0 - sp-utils
2.0.0 - substrate-prometheus-endpoint
0.8.0
used by- derive_more
sc-informant
0.8.0github.com/usetech-llc/substrate.git↘ 11↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-keystore
2.0.0github.com/usetech-llc/substrate.git↘ 9↖ 6sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsc-light
2.0.0github.com/usetech-llc/substrate.git↘ 12↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-network
0.8.0github.com/usetech-llc/substrate.git↘ 47↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- async-std
1.6.5 - async-trait
0.1.41 - bitflags
1.2.1 - bs58
0.3.1 - bytes
0.5.6 - derive_more
0.99.11 - either
1.6.1 - erased-serde
0.3.12 - fnv
1.0.7 - fork-tree
2.0.0 - futures
0.3.6 - futures-timer
3.0.2 - futures_codec
0.4.1 - hex
0.4.2 - ip_network
0.3.4 - libp2p
0.28.1 - linked-hash-map
0.5.3 - linked_hash_set
0.1.4 - log
0.4.11 - lru
0.4.3 - nohash-hasher
0.2.0 - parity-scale-codec
1.3.5 - parking_lot
0.10.2 - pin-project
0.4.27 - prost
0.6.1 - prost-build
0.6.1 - rand
0.7.3 - sc-block-builder
0.8.0 - sc-client-api
2.0.0 - sc-peerset
2.0.0 - serde
1.0.117 - serde_json
1.0.59 - slog
2.5.2 - slog_derive
0.2.0 - smallvec
0.6.13 - sp-arithmetic
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-runtime
2.0.0 - sp-utils
2.0.0 - substrate-prometheus-endpoint
0.8.0 - thiserror
1.0.21 - unsigned-varint
0.4.0 - void
1.0.2 - wasm-timer
0.2.5 - zeroize
1.1.1
- async-std
sc-network-gossip
0.8.0github.com/usetech-llc/substrate.git↘ 8↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-offchain
2.0.0github.com/usetech-llc/substrate.git↘ 20↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-peerset
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused bysc-proposer-metrics
0.8.0github.com/usetech-llc/substrate.git↘ 2↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused bysc-rpc
2.0.0github.com/usetech-llc/substrate.git↘ 25↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- futures
0.3.6 - hash-db
0.15.2 - jsonrpc-core
15.1.0 - jsonrpc-pubsub
15.1.0 - log
0.4.11 - parity-scale-codec
1.3.5 - parking_lot
0.10.2 - sc-block-builder
0.8.0 - sc-client-api
2.0.0 - sc-executor
0.8.0 - sc-keystore
2.0.0 - sc-rpc-api
0.8.0 - serde_json
1.0.59 - sp-api
2.0.0 - sp-blockchain
2.0.0 - sp-chain-spec
2.0.0 - sp-core
2.0.0 - sp-offchain
2.0.0 - sp-rpc
2.0.0 - sp-runtime
2.0.0 - sp-session
2.0.0 - sp-state-machine
0.8.0 - sp-transaction-pool
2.0.0 - sp-utils
2.0.0 - sp-version
2.0.0
used by- futures
sc-rpc-api
0.8.0github.com/usetech-llc/substrate.git↘ 17↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsc-rpc-server
2.0.0github.com/usetech-llc/substrate.git↘ 11↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-service
0.8.0github.com/usetech-llc/substrate.git↘ 55↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- derive_more
0.99.11 - directories
2.0.2 - exit-future
0.2.0 - futures
0.1.30 - futures
0.3.6 - 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.11 - parity-scale-codec
1.3.5 - parity-util-mem
0.7.0 - parking_lot
0.10.2 - pin-project
0.4.27 - rand
0.7.3 - sc-block-builder
0.8.0 - sc-chain-spec
2.0.0 - sc-client-api
2.0.0 - sc-client-db
0.8.0 - sc-executor
0.8.0 - sc-informant
0.8.0 - sc-keystore
2.0.0 - sc-light
2.0.0 - sc-network
0.8.0 - sc-offchain
2.0.0 - sc-rpc
2.0.0 - sc-rpc-server
2.0.0 - sc-telemetry
2.0.0 - sc-tracing
2.0.0 - sc-transaction-pool
2.0.0 - serde
1.0.117 - serde_json
1.0.59 - slog
2.5.2 - sp-api
2.0.0 - sp-application-crypto
2.0.0 - sp-block-builder
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-externalities
0.8.0 - sp-inherents
2.0.0 - sp-io
2.0.0 - sp-runtime
2.0.0 - sp-session
2.0.0 - sp-state-machine
0.8.0 - sp-tracing
2.0.0 - sp-transaction-pool
2.0.0 - sp-trie
2.0.0 - sp-utils
2.0.0 - sp-version
2.0.0 - substrate-prometheus-endpoint
0.8.0 - tempfile
3.1.0 - tracing
0.1.21 - wasm-timer
0.2.5
- derive_more
sc-state-db
0.8.0github.com/usetech-llc/substrate.git↘ 7↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-telemetry
2.0.0github.com/usetech-llc/substrate.git↘ 14↖ 9sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsc-tracing
2.0.0github.com/usetech-llc/substrate.git↘ 12↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-transaction-graph
2.0.0github.com/usetech-llc/substrate.git↘ 14↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysc-transaction-pool
2.0.0github.com/usetech-llc/substrate.git↘ 19↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- derive_more
0.99.11 - futures
0.3.6 - futures-diagnose
1.0.1 - intervalier
0.4.0 - log
0.4.11 - parity-scale-codec
1.3.5 - parity-util-mem
0.7.0 - parking_lot
0.10.2 - sc-client-api
2.0.0 - sc-transaction-graph
2.0.0 - sp-api
2.0.0 - sp-blockchain
2.0.0 - sp-core
2.0.0 - sp-runtime
2.0.0 - sp-tracing
2.0.0 - sp-transaction-pool
2.0.0 - sp-utils
2.0.0 - substrate-prometheus-endpoint
0.8.0 - wasm-timer
0.2.5
used by- derive_more
schannel
0.1.19crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 2sourceregistry+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
0.3.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27used byscopeguard
1.1.0crates.io↘ 0↖ 3sourceregistry+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.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6dfde5d1531034db129e95c76ac857e2baecea3443579d493d02224950b0fb6ddepends onused bysct
0.6.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3cdepends onused bysecrecy
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9182278ed645df3477a9c27bfee0621c621aa16f6972635f7f795dae3d81070fdepends 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.117crates.io↘ 1↖ 61sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1adepends 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.12 - frame-executive
2.0.0 - frame-metadata
12.0.0 - frame-support
2.0.0 - frame-system
2.0.0 - futures-diagnose
1.0.1 - impl-serde
0.3.1 - indexmap
1.6.0 - jsonrpc-client-transports
15.1.0 - jsonrpc-core
15.1.0 - jsonrpc-pubsub
15.1.0 - nft-runtime
2.0.0 - pallet-aura
2.0.0 - pallet-balances
2.0.0 - pallet-contracts
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-finality-tracker
2.0.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-session
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0 - pallet-transaction-payment-rpc
2.0.0 - pallet-transaction-payment-rpc-runtime-api
2.0.0 - parity-multiaddr
0.9.2 - parity-scale-codec
1.3.5 - sc-chain-spec
2.0.0 - sc-cli
0.8.0 - sc-network
0.8.0 - sc-rpc-api
0.8.0 - sc-rpc-server
2.0.0 - sc-service
0.8.0 - sc-telemetry
2.0.0 - sc-tracing
2.0.0 - sc-transaction-graph
2.0.0 - serde_json
1.0.59 - slog-json
2.3.0 - sp-application-crypto
2.0.0 - sp-arithmetic
2.0.0 - sp-chain-spec
2.0.0 - sp-consensus
0.8.0 - sp-core
2.0.0 - sp-finality-grandpa
2.0.0 - sp-rpc
2.0.0 - sp-runtime
2.0.0 - sp-serializer
2.0.0 - sp-storage
2.0.0 - sp-transaction-pool
2.0.0 - sp-version
2.0.0 - substrate-frame-rpc-system
2.0.0 - toml
0.5.7 - tracing-serde
0.1.2 - tracing-subscriber
0.2.13 - wasmtime-environ
0.19.0 - wasmtime-profiling
0.19.0
- bincode
serde_derive
1.0.117crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74edepends onserde_json
1.0.59crates.io↘ 3↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95depends onused by- futures-diagnose
1.0.1 - jsonrpc-client-transports
15.1.0 - jsonrpc-core
15.1.0 - sc-chain-spec
2.0.0 - sc-cli
0.8.0 - sc-finality-grandpa
0.8.0 - sc-keystore
2.0.0 - sc-network
0.8.0 - sc-peerset
2.0.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-rpc-server
2.0.0 - sc-service
0.8.0 - sc-tracing
2.0.0 - slog-json
2.3.0 - sp-chain-spec
2.0.0 - sp-serializer
2.0.0 - tracing-subscriber
0.2.13
- futures-diagnose
sha-1
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163dfused bysha-1
0.9.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum170a36ea86c864a3f16dd2687712dd6646f7019f301e57537c7f4dc9f5916770used bysha2
0.8.2crates.io↘ 4↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69sha2
0.9.1crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1sha3
0.8.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecfused bysha3
0.9.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809used bysharded-slab
0.0.9crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06d5a3f5166fb5b42a5439f2eee8b9de149e235961e3eb21c5808fc3ea17ff3edepends onused byshlex
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2used bysignal-hook-registry
1.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035depends onused bysignature
1.2.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum29f060a7d147e33490ec10da418795238fd7545bba241504d6b31a409f2e6210used byslab
0.4.2crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8slog
2.5.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99depends onslog_derive
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11bdepends onused byslog-json
2.3.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37aused byslog-scope
4.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6depends onused bysmallvec
0.6.13crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6depends onsmallvec
1.4.2crates.io↘ 0↖ 24sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252used by- cranelift-codegen
0.66.0 - cranelift-frontend
0.66.0 - frame-support
2.0.0 - kvdb
0.7.0 - kvdb-rocksdb
0.9.1 - libp2p
0.28.1 - libp2p-core
0.22.1 - libp2p-floodsub
0.22.0 - libp2p-gossipsub
0.22.0 - libp2p-identify
0.22.0 - libp2p-kad
0.23.0 - libp2p-mdns
0.22.0 - libp2p-request-response
0.3.0 - libp2p-swarm
0.22.0 - multistream-select
0.8.2 - pallet-transaction-payment
2.0.0 - parity-util-mem
0.7.0 - parking_lot_core
0.7.2 - parking_lot_core
0.8.0 - regalloc
0.0.27 - sp-state-machine
0.8.0 - tracing-subscriber
0.2.13 - trie-db
0.22.1 - 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.15crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44soketto
0.4.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88used bysp-allocator
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-api
2.0.0github.com/usetech-llc/substrate.git↘ 8↖ 29sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused by- frame-benchmarking
2.0.0 - frame-system-rpc-runtime-api
2.0.0 - nft
2.0.0 - nft-runtime
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-contracts-rpc-runtime-api
0.8.0 - pallet-transaction-payment-rpc
2.0.0 - pallet-transaction-payment-rpc-runtime-api
2.0.0 - sc-basic-authorship
0.8.0 - sc-block-builder
0.8.0 - sc-client-api
2.0.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-executor
0.8.0 - sc-finality-grandpa
0.8.0 - sc-light
2.0.0 - sc-offchain
2.0.0 - sc-rpc
2.0.0 - sc-service
0.8.0 - sc-transaction-pool
2.0.0 - sp-block-builder
2.0.0 - sp-consensus
0.8.0 - sp-consensus-aura
0.8.0 - sp-finality-grandpa
2.0.0 - sp-offchain
2.0.0 - sp-session
2.0.0 - sp-timestamp
2.0.0 - sp-transaction-pool
2.0.0 - substrate-frame-rpc-system
2.0.0
- frame-benchmarking
sp-api-proc-macro
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused bysp-application-crypto
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 10sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-arithmetic
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-authorship
2.0.0github.com/usetech-llc/substrate.git↘ 4↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused bysp-block-builder
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-blockchain
2.0.0github.com/usetech-llc/substrate.git↘ 10↖ 21sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused by- nft
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-transaction-payment-rpc
2.0.0 - sc-basic-authorship
0.8.0 - sc-block-builder
0.8.0 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-client-db
0.8.0 - sc-consensus
0.8.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-finality-grandpa
0.8.0 - sc-informant
0.8.0 - sc-light
2.0.0 - sc-network
0.8.0 - sc-rpc
2.0.0 - sc-service
0.8.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - sp-transaction-pool
2.0.0 - substrate-frame-rpc-system
2.0.0
- nft
sp-chain-spec
2.0.0github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-consensus
0.8.0github.com/usetech-llc/substrate.git↘ 19↖ 12sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-consensus-aura
0.8.0github.com/usetech-llc/substrate.git↘ 7↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-consensus-slots
0.8.0github.com/usetech-llc/substrate.git↘ 2↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysp-core
2.0.0github.com/usetech-llc/substrate.git↘ 37↖ 54sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends on- base58
0.1.0 - blake2-rfc
0.2.18 - byteorder
1.3.4 - derive_more
0.99.11 - dyn-clonable
0.9.0 - ed25519-dalek
1.0.1 - futures
0.3.6 - 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.11 - merlin
2.0.0 - num-traits
0.2.12 - parity-scale-codec
1.3.5 - parity-util-mem
0.7.0 - parking_lot
0.10.2 - primitive-types
0.7.2 - rand
0.7.3 - regex
1.4.1 - schnorrkel
0.9.1 - secrecy
0.6.0 - serde
1.0.117 - sha2
0.8.2 - sp-debug-derive
2.0.0 - sp-externalities
0.8.0 - sp-runtime-interface
2.0.0 - sp-std
2.0.0 - sp-storage
2.0.0 - substrate-bip39
0.4.2 - tiny-bip39
0.7.3 - tiny-keccak
2.0.2 - twox-hash
1.6.0 - wasmi
0.6.2 - zeroize
1.1.1
used by- frame-benchmarking-cli
2.0.0 - frame-executive
2.0.0 - frame-metadata
12.0.0 - frame-support
2.0.0 - frame-system
2.0.0 - frame-system-benchmarking
2.0.0 - nft
2.0.0 - nft-runtime
2.0.0 - pallet-contracts
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-session
2.0.0 - pallet-transaction-payment
2.0.0 - pallet-transaction-payment-rpc
2.0.0 - sc-basic-authorship
0.8.0 - sc-block-builder
0.8.0 - sc-chain-spec
2.0.0 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-client-db
0.8.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-executor
0.8.0 - sc-executor-common
0.8.0 - sc-executor-wasmi
0.8.0 - sc-executor-wasmtime
0.8.0 - sc-finality-grandpa
0.8.0 - sc-keystore
2.0.0 - sc-light
2.0.0 - sc-network
0.8.0 - sc-offchain
2.0.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-service
0.8.0 - sc-state-db
0.8.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - sp-allocator
2.0.0 - sp-api
2.0.0 - sp-application-crypto
2.0.0 - sp-consensus
0.8.0 - sp-finality-grandpa
2.0.0 - sp-inherents
2.0.0 - sp-io
2.0.0 - sp-keyring
2.0.0 - sp-offchain
2.0.0 - sp-rpc
2.0.0 - sp-runtime
2.0.0 - sp-sandbox
0.8.0 - sp-session
2.0.0 - sp-state-machine
0.8.0 - sp-trie
2.0.0 - substrate-frame-rpc-system
2.0.0
- base58
sp-database
2.0.0github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-debug-derive
2.0.0github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-externalities
0.8.0github.com/usetech-llc/substrate.git↘ 4↖ 9sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-finality-grandpa
2.0.0github.com/usetech-llc/substrate.git↘ 9↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-finality-tracker
2.0.0github.com/usetech-llc/substrate.git↘ 3↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-inherents
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 21sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused by- frame-support
2.0.0 - nft
2.0.0 - nft-runtime
2.0.0 - pallet-aura
2.0.0 - pallet-authorship
2.0.0 - pallet-finality-tracker
2.0.0 - pallet-timestamp
2.0.0 - sc-basic-authorship
0.8.0 - sc-block-builder
0.8.0 - sc-client-api
2.0.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-finality-grandpa
0.8.0 - sc-service
0.8.0 - sp-authorship
2.0.0 - sp-block-builder
2.0.0 - sp-consensus
0.8.0 - sp-consensus-aura
0.8.0 - sp-finality-tracker
2.0.0 - sp-runtime
2.0.0 - sp-timestamp
2.0.0
- frame-support
sp-io
2.0.0github.com/usetech-llc/substrate.git↘ 16↖ 16sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused by- frame-benchmarking
2.0.0 - frame-executive
2.0.0 - frame-support
2.0.0 - frame-system
2.0.0 - pallet-contracts
2.0.0 - pallet-nft
2.0.0 - pallet-session
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0 - sc-consensus-aura
0.8.0 - sc-executor
0.8.0 - sc-service
0.8.0 - sp-application-crypto
2.0.0 - sp-runtime
2.0.0 - sp-sandbox
0.8.0
- frame-benchmarking
sp-keyring
2.0.0github.com/usetech-llc/substrate.git↘ 4↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-offchain
2.0.0github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-panic-handler
2.0.0github.com/usetech-llc/substrate.git↘ 2↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-rpc
2.0.0github.com/usetech-llc/substrate.git↘ 2↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-runtime
2.0.0github.com/usetech-llc/substrate.git↘ 15↖ 62sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused by- frame-benchmarking
2.0.0 - frame-benchmarking-cli
2.0.0 - frame-executive
2.0.0 - frame-support
2.0.0 - frame-system
2.0.0 - frame-system-benchmarking
2.0.0 - nft
2.0.0 - nft-runtime
2.0.0 - pallet-aura
2.0.0 - pallet-authorship
2.0.0 - pallet-balances
2.0.0 - pallet-contracts
2.0.0 - pallet-contracts-primitives
2.0.0 - pallet-contracts-rpc
0.8.0 - pallet-contracts-rpc-runtime-api
0.8.0 - pallet-finality-tracker
2.0.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-randomness-collective-flip
2.0.0 - pallet-session
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0 - pallet-transaction-payment-rpc
2.0.0 - pallet-transaction-payment-rpc-runtime-api
2.0.0 - sc-basic-authorship
0.8.0 - sc-block-builder
0.8.0 - sc-chain-spec
2.0.0 - sc-cli
0.8.0 - sc-client-api
2.0.0 - sc-client-db
0.8.0 - sc-consensus
0.8.0 - sc-consensus-aura
0.8.0 - sc-consensus-slots
0.8.0 - sc-finality-grandpa
0.8.0 - sc-informant
0.8.0 - sc-light
2.0.0 - sc-network
0.8.0 - sc-network-gossip
0.8.0 - sc-offchain
2.0.0 - sc-rpc
2.0.0 - sc-rpc-api
0.8.0 - sc-rpc-server
2.0.0 - sc-service
0.8.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - sp-api
2.0.0 - sp-authorship
2.0.0 - sp-block-builder
2.0.0 - sp-blockchain
2.0.0 - sp-consensus
0.8.0 - sp-consensus-aura
0.8.0 - sp-consensus-slots
0.8.0 - sp-finality-grandpa
2.0.0 - sp-keyring
2.0.0 - sp-offchain
2.0.0 - sp-session
2.0.0 - sp-staking
2.0.0 - sp-timestamp
2.0.0 - sp-transaction-pool
2.0.0 - sp-version
2.0.0 - substrate-frame-rpc-system
2.0.0
- frame-benchmarking
sp-runtime-interface
2.0.0github.com/usetech-llc/substrate.git↘ 9↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-runtime-interface-proc-macro
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused bysp-sandbox
0.8.0github.com/usetech-llc/substrate.git↘ 6↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused bysp-serializer
2.0.0github.com/usetech-llc/substrate.git↘ 2↖ 2sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-session
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-staking
2.0.0github.com/usetech-llc/substrate.git↘ 3↖ 3sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-state-machine
0.8.0github.com/usetech-llc/substrate.git↘ 14↖ 14sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-std
2.0.0github.com/usetech-llc/substrate.git↘ 0↖ 49sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caused by- frame-benchmarking
2.0.0 - frame-executive
2.0.0 - frame-metadata
12.0.0 - frame-support
2.0.0 - frame-system
2.0.0 - frame-system-benchmarking
2.0.0 - nft-runtime
2.0.0 - pallet-aura
2.0.0 - pallet-authorship
2.0.0 - pallet-balances
2.0.0 - pallet-contracts
2.0.0 - pallet-contracts-primitives
2.0.0 - pallet-contracts-rpc-runtime-api
0.8.0 - pallet-finality-tracker
2.0.0 - pallet-grandpa
2.0.0 - pallet-nft
2.0.0 - pallet-randomness-collective-flip
2.0.0 - pallet-session
2.0.0 - pallet-sudo
2.0.0 - pallet-timestamp
2.0.0 - pallet-transaction-payment
2.0.0 - pallet-transaction-payment-rpc-runtime-api
2.0.0 - sc-client-api
2.0.0 - sp-allocator
2.0.0 - sp-api
2.0.0 - sp-application-crypto
2.0.0 - sp-arithmetic
2.0.0 - sp-authorship
2.0.0 - sp-block-builder
2.0.0 - sp-consensus
0.8.0 - sp-consensus-aura
0.8.0 - sp-core
2.0.0 - sp-externalities
0.8.0 - sp-finality-grandpa
2.0.0 - sp-finality-tracker
2.0.0 - sp-inherents
2.0.0 - sp-io
2.0.0 - sp-runtime
2.0.0 - sp-runtime-interface
2.0.0 - sp-sandbox
0.8.0 - sp-session
2.0.0 - sp-staking
2.0.0 - sp-state-machine
0.8.0 - sp-storage
2.0.0 - sp-timestamp
2.0.0 - sp-tracing
2.0.0 - sp-trie
2.0.0 - sp-version
2.0.0 - sp-wasm-interface
2.0.0
- frame-benchmarking
sp-storage
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 5sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-timestamp
2.0.0github.com/usetech-llc/substrate.git↘ 7↖ 4sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-tracing
2.0.0github.com/usetech-llc/substrate.git↘ 6↖ 7sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-transaction-pool
2.0.0github.com/usetech-llc/substrate.git↘ 8↖ 11sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-trie
2.0.0github.com/usetech-llc/substrate.git↘ 7↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onsp-utils
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 12sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-version
2.0.0github.com/usetech-llc/substrate.git↘ 5↖ 11sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88casp-wasm-interface
2.0.0github.com/usetech-llc/substrate.git↘ 4↖ 8sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88caspin
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.10.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10102ac8d55e35db2b3fafc26f81ba8647da2e15879ab686a67e6d19af2685e8depends onused bystream-cipher
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638cdepends onstream-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.20crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum126d630294ec449fae0b16f964e35bf3c74f940da9dca17ee9b905f7b3112eb8structopt-derive
0.4.13crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum65e51c492f9e23a220534971ff5afc14037289de430e3c83f9daf6a1b6ae91e8used 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.0github.com/usetech-llc/substrate.git↘ 1↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysubstrate-frame-rpc-system
2.0.0github.com/usetech-llc/substrate.git↘ 16↖ 1sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends onused bysubstrate-prometheus-endpoint
0.8.0github.com/usetech-llc/substrate.git↘ 7↖ 12sourcegit+https://github.com/usetech-llc/substrate.git?branch=v2.0.0_release#a200cdb93c6af5763b9c7bf313fa708764ac88cadepends 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.3.0crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fdsyn
1.0.44crates.io↘ 3↖ 34sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume03e57e4fcbfe7749842d53e24ccb9aa12b7252dbe5e91d2acad31834c8b8fddused by- asn1_der_derive
0.1.2 - async-trait
0.1.41 - derive_more
0.99.11 - dyn-clonable-impl
0.9.0 - failure_derive
0.1.8 - frame-support-procedural
2.0.0 - frame-support-procedural-tools
2.0.0 - frame-support-procedural-tools-derive
2.0.0 - futures-macro
0.3.6 - impl-trait-for-tuples
0.1.3 - jsonrpc-derive
15.1.0 - libp2p-core-derive
0.20.2 - minicbor-derive
0.4.1 - parity-scale-codec-derive
1.2.2 - parity-util-mem-derive
0.1.0 - pin-project-internal
0.4.27 - proc-macro-error
1.0.4 - prost-derive
0.6.1 - ref-cast-impl
1.0.2 - sc-chain-spec-derive
2.0.0 - scroll_derive
0.10.3 - serde_derive
1.0.117 - slog_derive
0.2.0 - sp-api-proc-macro
2.0.0 - sp-debug-derive
2.0.0 - sp-runtime-interface-proc-macro
2.0.0 - structopt-derive
0.4.13 - strum_macros
0.16.0 - synstructure
0.12.4 - thiserror-impl
1.0.21 - tracing-attributes
0.1.11 - wasm-bindgen-backend
0.2.68 - wasm-bindgen-macro-support
0.2.68 - zeroize_derive
1.0.1
- asn1_der_derive
synstructure
0.12.4crates.io↘ 4↖ 3sourceregistry+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.1.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9termcolor
1.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75fdepends onused bytextwrap
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060depends onused bythiserror
1.0.21crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42depends onthiserror-impl
1.0.21crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0abdepends onused bythread_local
1.0.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14depends onthreadpool
1.8.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onused bytime
0.1.44crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255tiny-bip39
0.7.3crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0165e045cc2ae1660270ca65e1676dbaab60feb0f91b10f7d0665e9b47e31f2depends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinyvec
0.3.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117used bytokio
0.1.22crates.io↘ 16↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6depends ontokio
0.2.22crates.io↘ 14↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccddepends 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-executor
0.2.0-alpha.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8used bytokio-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-sync
0.2.0-alpha.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2used bytokio-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.7crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645depends ontower-service
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860used bytracing
0.1.21crates.io↘ 5↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27tracing-attributes
0.1.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4adadepends onused bytracing-core
0.1.17crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5fdepends ontracing-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.13crates.io↘ 14↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ef0a5e15477aa303afbfac3a44cba9b6430fdaad52423b1e6c0dbbe28c3eedddepends ontrie-db
0.22.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e55f7ace33d6237e14137e386f4e1672e2a5c6bbc97fef9f438581a143971f0trie-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↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33uint
0.8.5crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9db035e67dfaf7edd9aebfe8676afcd63eed53c8a4044fed514c8cccf1835177unicase
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.13crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977depends onunicode-segmentation
1.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0used 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.4.0crates.io↘ 4↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum669d776983b692a906c881fcd0cfb34271a48e197e4d6cb8df32b05bfc3d3fa5unsigned-varint
0.5.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35depends onuntrusted
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.1.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cbvcpkg
0.2.10crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508cused 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↖ 9sourceregistry+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↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519wasi
0.10.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasm-bindgen
0.2.68crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42depends onwasm-bindgen-backend
0.2.68crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68depends onwasm-bindgen-futures
0.4.18crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171dawasm-bindgen-macro
0.2.68crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038used bywasm-bindgen-macro-support
0.2.68crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498feused bywasm-timer
0.2.5crates.io↘ 7↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onused by- libp2p
0.28.1 - libp2p-gossipsub
0.22.0 - libp2p-identify
0.22.0 - libp2p-kad
0.23.0 - libp2p-mdns
0.22.0 - libp2p-ping
0.22.0 - libp2p-request-response
0.3.0 - libp2p-swarm
0.22.0 - sc-informant
0.8.0 - sc-network
0.8.0 - sc-network-gossip
0.8.0 - sc-peerset
2.0.0 - sc-service
0.8.0 - sc-telemetry
2.0.0 - sc-transaction-graph
2.0.0 - sc-transaction-pool
2.0.0 - sp-consensus
0.8.0 - sp-timestamp
2.0.0
- 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.33 - 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.6 - file-per-thread-logger
0.1.4 - indexmap
1.6.0 - libc
0.2.79 - log
0.4.11 - more-asserts
0.2.1 - rayon
1.4.1 - serde
1.0.117 - sha2
0.8.2 - thiserror
1.0.21 - toml
0.5.7 - wasmparser
0.59.0 - winapi
0.3.9 - zstd
0.5.3+zstd.1.4.5
- anyhow
wasmtime-jit
0.19.0crates.io↘ 21↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume914c013c7a9f15f4e429d5431f2830fb8adb56e40567661b69c5ec1d645be23depends on- anyhow
1.0.33 - 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.11 - more-asserts
0.2.1 - object
0.20.0 - region
2.2.0 - target-lexicon
0.10.0 - thiserror
1.0.21 - 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
26.0.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd54b3678343bfdf1768c16308a4b53823b70f7bb148d3d38225123d4306ec731depends onused bywat
1.0.27crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26b2dccbce4d0e14875091846e110a2369267b18ddd0d6423479b88dad914d71depends onused byweb-sys
0.3.45crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2ddepends onwebpki
0.21.3crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032aedepends onwebpki-roots
0.18.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4depends onused bywebpki-roots
0.19.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739depends onused bywepoll-sys
3.0.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum142bc2cba3fe88be1a8fcb55c727fa4cd5b0cf2d7438722792e22f26f04bc1e0depends onused bywhich
3.1.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724depends onwinapi
0.2.8crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087awinapi
0.3.9crates.io↘ 2↖ 40sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.11.0 - ansi_term
0.12.1 - async-io
1.1.10 - atty
0.2.14 - chrono
0.4.19 - dirs-sys
0.3.5 - errno
0.2.6 - fs-swap
0.2.4 - libloading
0.5.2 - memmap
0.7.0 - mio-named-pipes
0.1.7 - miow
0.3.5 - nb-connect
1.0.2 - net2
0.2.35 - parity-tokio-ipc
0.4.0 - parity-util-mem
0.7.0 - parking_lot_core
0.4.0 - parking_lot_core
0.6.2 - parking_lot_core
0.7.2 - parking_lot_core
0.8.0 - polling
2.0.1 - rand
0.4.6 - rand
0.5.6 - rand
0.6.5 - rand_jitter
0.1.4 - rand_os
0.1.3 - region
2.2.0 - remove_dir_all
0.5.3 - ring
0.16.15 - rpassword
4.0.5 - schannel
0.1.19 - socket2
0.3.15 - tempfile
3.1.0 - time
0.1.44 - tokio
0.2.22 - 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
0.6.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217used byx25519-dalek
1.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc614d95359fd7afc321b66d2107ede58b246b844cf5d8a0adcca413e439f088used byyamux
0.8.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9aeb8c4043cac71c3c299dff107171c220d179492350ea198e109a414981b83cused byzeroize
1.1.1crates.io↘ 1↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05f33972566adbd2d3588b0491eb94b98b43695c4ef897903470ede4f3f5a28adepends onzeroize_derive
1.0.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16used byzstd
0.5.3+zstd.1.4.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01b32eaf771efa709e8308605bbf9319bf485dc1503179ec0469b611937c0cd8depends onused byzstd-safe
2.0.5+zstd.1.4.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cfb642e0d27f64729a639c52db457e0ae906e7bc6f5fe8f5c453230400f1055depends onused byzstd-sys
1.4.17+zstd.1.4.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb89249644df056b522696b1bb9e7c18c87e8ffa3e2f0dc3b0155875d6498f01bused by
Dockerfilediffbeforeafterboth--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
FROM phusion/baseimage:0.10.2 as builder
LABEL maintainer="gz@usetech.com"
-ENV WASM_TOOLCHAIN=nightly-2020-05-01
+ENV WASM_TOOLCHAIN=nightly-2020-10-01
ARG PROFILE=release
@@ -17,19 +17,23 @@
WORKDIR /nft_parachain
COPY . .
-RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \
- export PATH="$PATH:$HOME/.cargo/bin" && \
+RUN export CARGO_HOME="/cargo-home" && curl https://sh.rustup.rs -sSf | sh -s -- -y
+RUN export PATH="/cargo-home/bin:$PATH" && \
+ export CARGO_HOME="/cargo-home" && \
+ cargo fetch
+RUN export PATH="/cargo-home/bin:$PATH" && \
+ export CARGO_HOME="/cargo-home" && \
rustup toolchain uninstall $(rustup toolchain list) && \
- rustup default 1.44.0 && \
rustup toolchain install $WASM_TOOLCHAIN && \
rustup target add wasm32-unknown-unknown --toolchain $WASM_TOOLCHAIN && \
rustup target list --installed && \
- rustup show && \
- cargo build "--$PROFILE"
+ rustup show
+
+RUN export PATH="/cargo-home/bin:$PATH" && \
+ export CARGO_HOME="/cargo-home" && \
+ cargo +$WASM_TOOLCHAIN build "--$PROFILE"
# && \
# cargo test
-
-RUN cd target/release && ls -la
# ===== RUN ======
README.mddiffbeforeafterboth--- a/README.md
+++ b/README.md
@@ -115,7 +115,23 @@
Additional CLI usage options are available and may be shown by running `cargo run -- --help`.
+## Benchmarks
+First of all, add rust toolchain and make it default.
+```bash
+rustup target add wasm32-unknown-unknown --toolchain nightly-2020-10-01
+```
+
+Then in "/node/src" run build command below
+```bash
+cargo +nightly-2020-10-01 build --release --features runtime-benchmarks
+```
+
+Run benchmark
+```bash
+target/release/nft benchmark --chain dev --pallet "pallet_nft" --extrinsic "*" --repeat 1
+```
+
## UI custom types
```
{
@@ -151,9 +167,9 @@
"CollectionMode": {
"_enum": {
"Invalid": null,
- "NFT": "u32",
+ "NFT": null,
"Fungible": "u32",
- "ReFungible": "(u32, u32)"
+ "ReFungible": "u32"
}
},
"Ownership": {
@@ -173,7 +189,8 @@
"NftItemType": {
"Collection": "u64",
"Owner": "AccountId",
- "Data": "Vec<u8>"
+ "ConstData": "Vec<u8>",
+ "VariableData": "Vec<u8>"
},
"Ownership": {
"owner": "AccountId",
@@ -182,7 +199,8 @@
"ReFungibleItemType": {
"Collection": "u64",
"Owner": "Vec<Ownership<AccountId>>",
- "Data": "Vec<u8>"
+ "ConstData": "Vec<u8>",
+ "VariableData": "Vec<u8>"
},
"CollectionType": {
"Owner": "AccountId",
@@ -192,11 +210,12 @@
"Name": "Vec<u16>",
"Description": "Vec<u16>",
"TokenPrefix": "Vec<u8>",
- "CustomDataSize": "u32",
"MintMode": "bool",
"OffchainSchema": "Vec<u8>",
"Sponsor": "AccountId",
- "UnconfirmedSponsor": "AccountId"
+ "UnconfirmedSponsor": "AccountId",
+ "VariableOnChainSchema": "Vec<u8>",
+ "ConstOnChainSchema": "Vec<u8>"
},
"ApprovePermissions": {
"Approved": "AccountId",
@@ -205,7 +224,23 @@
"RawData": "Vec<u8>",
"Address": "AccountId",
"LookupSource": "AccountId",
- "Weight": "u64"
+ "Weight": "u64",
+ "CreateNftData": {
+ "const_data": "Vec<u8>",
+ "variable_data": "Vec<u8>"
+ },
+ "CreateFungibleData": {},
+ "CreateReFungibleData": {
+ "const_data": "Vec<u8>",
+ "variable_data": "Vec<u8>"
+ },
+ "CreateItemData": {
+ "_enum": {
+ "NFT": "CreateNftData",
+ "Fungible": "CreateFungibleData",
+ "ReFungible": "CreateReFungibleData"
+ }
+ }
}
```
\ No newline at end of file
doc/milestone_1.mddiffbeforeafterboth--- /dev/null
+++ b/doc/milestone_1.md
@@ -0,0 +1,65 @@
+## Milestone 1
+
+**User Paid Fees and Sponsored. Finish/Debug white listing and spam/DOS protection**
+
+Implementation of two models
+If collection sponsor is set and confirmed for collection instance that means Sponsored Economic Model has chosen. Otherwise default economic model User Paid Fees is set.
+For Sponsored Economic Model exists timeouts for token transactions. For every NFT type timeouts defined separately. Timeouts and white list limits together prevented spam and malicious actions.
+
+Set sponsor
+`nft`.`set_collection_sponsor`
+Confirm sponsor
+`nft`.`confirm_sponsorship`
+
+A white list mode presented by collection property `access` and can be enabled with `set_public_access_mode`. Rules provide spam/DOS protection
+While collection in the white list mode rules below are active:
+Owner can add address to white list
+Admin can add address to white list
+Non-privileged user cannot add address to white list
+Owner can remove address from white list
+Admin can remove address from white list
+Non-privileged user cannot remove address from white list
+If Public Access mode is set to WhiteList, tokens can’t be transferred from a non-whitelisted address with transfer or transferFrom
+If Public Access mode is set to WhiteList, tokens can’t be transferred to a non-whitelisted address with transfer or transferFrom
+If Public Access mode is set to WhiteList, tokens can’t be destroyed by a non-whitelisted address (even if it owned them before enabling WhiteList mode)
+If Public Access mode is set to WhiteList, token transfers can’t be Approved by a non-whitelisted address (see Approve method).
+If Public Access mode is set to WhiteList, tokens can be transferred to a whitelisted address with transfer or transferFrom
+If Public Access mode is set to WhiteList, tokens can be transferred from a whitelisted address with transfer or transferFrom
+If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens can be created by owner.
+If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens can be created by admin.
+If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens cannot be created by non-privileged and white listed address.
+If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens cannot be created by non-privileged and non-white listed address.
+If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by owner.
+If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by admin.
+If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens cannot be created by non-privileged and non-white listed address.
+If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by non-privileged and white listed address.
+
+**Add missing custom types (CollectionMode, FungibleItemType, ReFungibleItemType)**
+
+Follow types defined
+```
+pub struct NftItemType<AccountId> {
+ pub collection: u64,
+ pub owner: AccountId,
+ pub data: Vec<u8>,
+}
+pub struct FungibleItemType<AccountId> {
+ pub collection: u64,
+ pub owner: AccountId,
+ pub value: u128,
+}
+pub struct ReFungibleItemType<AccountId> {
+ pub collection: u64,
+ pub owner: Vec<Ownership<AccountId>>,
+ pub data: Vec<u8>,
+}
+```
+
+**Add substrate bounds for number of collections, owned tokens, and number of collection admins.**
+
+Bounds defined in chain specification and can be set with 'sudo' privileges `nft`.`set_chain_limits`.
+
+**Add/document extra genesis**
+
+Extra genesis defined in `node/src/chain_spec.rs` file. Configuration consist from 5 items:
+Collection list, Nft items list, Fungible items list, Refungible items list, Chain limits
\ No newline at end of file
node/Cargo.tomldiffbeforeafterboth--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -1,7 +1,7 @@
[build-dependencies.substrate-build-script-utils]
git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
[[bin]]
name = 'nft'
@@ -15,7 +15,7 @@
license = 'Unlicense'
name = 'nft'
repository = 'https://github.com/substrate-developer-hub/nft/'
-version = '2.0.0-rc4'
+version = '2.0.0'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
@@ -25,102 +25,38 @@
log = '0.4.8'
parking_lot = '0.10.0'
structopt = '0.3.8'
-jsonrpc-core = '14.0.5'
+jsonrpc-core = '15.0.0'
-[dependencies.nft-runtime]
-path = '../runtime'
-version = '2.0.0-rc4'
-
-[dependencies.sc-basic-authorship]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
+# Substrate dependencies
+nft-runtime = { path = '../runtime', version = '2.0.0' }
+frame-benchmarking = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+frame-benchmarking-cli = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+pallet-transaction-payment-rpc = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-basic-authorship = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-cli = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sc-client-api = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-consensus = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-consensus-aura = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-executor = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sc-finality-grandpa = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-rpc = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-rpc-api = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-service = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sc-transaction-pool = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-api = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-block-builder = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-blockchain = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-consensus = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-consensus-aura = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-core = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-finality-grandpa = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-inherents = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-runtime = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sp-transaction-pool = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+sc-network = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+substrate-frame-rpc-system = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
+pallet-contracts-rpc = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release'}
-[dependencies.sc-cli]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sc-client-api]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sc-consensus]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.pallet-contracts-rpc]
-git = 'https://github.com/usetech-llc/substrate.git'
-version = '0.8.0-rc4'
-branch = 'rc4_ext_dispatch_reenabled'
-
-[dependencies.sc-rpc]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-
-[dependencies.sc-consensus-aura]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sc-executor]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sc-finality-grandpa]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sc-network]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sc-service]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sc-transaction-pool]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-consensus]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sp-consensus-aura]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sp-core]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-finality-grandpa]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-inherents]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-runtime]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-transaction-pool]
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+[features]
+default = []
+runtime-benchmarks = ['nft-runtime/runtime-benchmarks']
node/src/chain_spec.rsdiffbeforeafterboth--- a/node/src/chain_spec.rs
+++ b/node/src/chain_spec.rs
@@ -38,70 +38,95 @@
(get_from_seed::<AuraId>(s), get_from_seed::<GrandpaId>(s))
}
-pub fn development_config() -> ChainSpec {
- ChainSpec::from_genesis(
- "Development",
- "dev",
- ChainType::Development,
- || {
- testnet_genesis(
- vec![authority_keys_from_seed("Alice")],
- get_account_id_from_seed::<sr25519::Public>("Alice"),
- vec![
- get_account_id_from_seed::<sr25519::Public>("Alice"),
- get_account_id_from_seed::<sr25519::Public>("Bob"),
- get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
- get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
- ],
- true,
- )
- },
- vec![],
- None,
- None,
- None,
- None,
- )
+pub fn development_config() -> Result<ChainSpec, String> {
+ let wasm_binary = WASM_BINARY.ok_or("Development wasm binary not available".to_string())?;
+
+ Ok(ChainSpec::from_genesis(
+ // Name
+ "Development",
+ // ID
+ "dev",
+ ChainType::Development,
+ move || testnet_genesis(
+ wasm_binary,
+ // Initial PoA authorities
+ vec![
+ authority_keys_from_seed("Alice"),
+ ],
+ // Sudo account
+ get_account_id_from_seed::<sr25519::Public>("Alice"),
+ // Pre-funded accounts
+ vec![
+ get_account_id_from_seed::<sr25519::Public>("Alice"),
+ get_account_id_from_seed::<sr25519::Public>("Bob"),
+ get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
+ ],
+ true,
+ ),
+ // Bootnodes
+ vec![],
+ // Telemetry
+ None,
+ // Protocol ID
+ None,
+ // Properties
+ None,
+ // Extensions
+ None,
+ ))
}
-pub fn local_testnet_config() -> ChainSpec {
- ChainSpec::from_genesis(
- "Local Testnet",
- "local_testnet",
- ChainType::Local,
- || {
- testnet_genesis(
- vec![
- authority_keys_from_seed("Alice"),
- authority_keys_from_seed("Bob"),
- ],
- get_account_id_from_seed::<sr25519::Public>("Alice"),
- vec![
- get_account_id_from_seed::<sr25519::Public>("Alice"),
- get_account_id_from_seed::<sr25519::Public>("Bob"),
- get_account_id_from_seed::<sr25519::Public>("Charlie"),
- get_account_id_from_seed::<sr25519::Public>("Dave"),
- get_account_id_from_seed::<sr25519::Public>("Eve"),
- get_account_id_from_seed::<sr25519::Public>("Ferdie"),
- get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
- get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
- get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),
- get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
- get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
- get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
- ],
- true,
- )
- },
- vec![],
- None,
- None,
- None,
- None,
- )
+pub fn local_testnet_config() -> Result<ChainSpec, String> {
+ let wasm_binary = WASM_BINARY.ok_or("Development wasm binary not available".to_string())?;
+
+ Ok(ChainSpec::from_genesis(
+ // Name
+ "Local Testnet",
+ // ID
+ "local_testnet",
+ ChainType::Local,
+ move || testnet_genesis(
+ wasm_binary,
+ // Initial PoA authorities
+ vec![
+ authority_keys_from_seed("Alice"),
+ authority_keys_from_seed("Bob"),
+ ],
+ // Sudo account
+ get_account_id_from_seed::<sr25519::Public>("Alice"),
+ // Pre-funded accounts
+ vec![
+ get_account_id_from_seed::<sr25519::Public>("Alice"),
+ get_account_id_from_seed::<sr25519::Public>("Bob"),
+ get_account_id_from_seed::<sr25519::Public>("Charlie"),
+ get_account_id_from_seed::<sr25519::Public>("Dave"),
+ get_account_id_from_seed::<sr25519::Public>("Eve"),
+ get_account_id_from_seed::<sr25519::Public>("Ferdie"),
+ get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
+ ],
+ true,
+ ),
+ // Bootnodes
+ vec![],
+ // Telemetry
+ None,
+ // Protocol ID
+ None,
+ // Properties
+ None,
+ // Extensions
+ None,
+ ))
}
fn testnet_genesis(
+ wasm_binary: &[u8],
initial_authorities: Vec<(AuraId, GrandpaId)>,
root_key: AccountId,
endowed_accounts: Vec<AccountId>,
@@ -109,42 +134,43 @@
) -> GenesisConfig {
GenesisConfig {
system: Some(SystemConfig {
- code: WASM_BINARY.to_vec(),
+ code: wasm_binary.to_vec(),
changes_trie_config: Default::default(),
}),
- balances: Some(BalancesConfig {
+ pallet_balances: Some(BalancesConfig {
balances: endowed_accounts
.iter()
.cloned()
.map(|k| (k, 1 << 100))
.collect(),
}),
- aura: Some(AuraConfig {
+ pallet_aura: Some(AuraConfig {
authorities: initial_authorities.iter().map(|x| (x.0.clone())).collect(),
}),
- grandpa: Some(GrandpaConfig {
+ pallet_grandpa: Some(GrandpaConfig {
authorities: initial_authorities
.iter()
.map(|x| (x.1.clone(), 1))
.collect(),
}),
- sudo: Some(SudoConfig { key: root_key }),
- nft: Some(NftConfig {
+ pallet_sudo: Some(SudoConfig { key: root_key }),
+ pallet_nft: Some(NftConfig {
collection: vec![(
1,
CollectionType {
owner: get_account_id_from_seed::<sr25519::Public>("Alice"),
- mode: CollectionMode::NFT(50),
+ mode: CollectionMode::NFT,
access: AccessMode::Normal,
decimal_points: 0,
name: vec![],
description: vec![],
token_prefix: vec![],
- custom_data_size: 50,
mint_mode: false,
offchain_schema: vec![],
sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),
unconfirmed_sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),
+ const_on_chain_schema: vec![],
+ variable_on_chain_schema: vec![]
},
)],
nft_item_id: vec![],
@@ -160,7 +186,7 @@
refungible_sponsor_transfer_timeout: 15,
},
}),
- contracts: Some(ContractsConfig {
+ pallet_contracts: Some(ContractsConfig {
current_schedule: ContractsSchedule {
enable_println,
..Default::default()
node/src/cli.rsdiffbeforeafterboth--- a/node/src/cli.rs
+++ b/node/src/cli.rs
@@ -1,11 +1,39 @@
-use sc_cli::{RunCmd, Subcommand};
use structopt::StructOpt;
+use sc_cli::RunCmd;
#[derive(Debug, StructOpt)]
pub struct Cli {
- #[structopt(subcommand)]
- pub subcommand: Option<Subcommand>,
+ #[structopt(subcommand)]
+ pub subcommand: Option<Subcommand>,
+
+ #[structopt(flatten)]
+ pub run: RunCmd,
+}
+
+#[derive(Debug, StructOpt)]
+pub enum Subcommand {
+ /// Build a chain specification.
+ BuildSpec(sc_cli::BuildSpecCmd),
+
+ /// Validate blocks.
+ CheckBlock(sc_cli::CheckBlockCmd),
+
+ /// Export blocks.
+ ExportBlocks(sc_cli::ExportBlocksCmd),
+
+ /// Export the state of a given block into a chain spec.
+ ExportState(sc_cli::ExportStateCmd),
+
+ /// Import blocks.
+ ImportBlocks(sc_cli::ImportBlocksCmd),
- #[structopt(flatten)]
- pub run: RunCmd,
+ /// Remove the whole chain.
+ PurgeChain(sc_cli::PurgeChainCmd),
+
+ /// Revert the chain to a previous state.
+ Revert(sc_cli::RevertCmd),
+
+ // The custom benchmark subcommmand benchmarking runtime pallets.
+ #[structopt(name = "benchmark", about = "Benchmark runtime pallets.")]
+ Benchmark(frame_benchmarking_cli::BenchmarkCmd),
}
node/src/command.rsdiffbeforeafterboth--- a/node/src/command.rs
+++ b/node/src/command.rs
@@ -15,63 +15,121 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-use crate::chain_spec;
-use crate::cli::Cli;
-use crate::service;
-use sc_cli::SubstrateCli;
+use crate::{chain_spec, service};
+use crate::cli::{Cli, Subcommand};
+use sc_cli::{SubstrateCli, RuntimeVersion, Role, ChainSpec};
+use sc_service::PartialComponents;
+use nft_runtime::Block;
impl SubstrateCli for Cli {
- fn impl_name() -> &'static str {
- "Substrate Node"
- }
+ fn impl_name() -> String {
+ "Substrate Node".into()
+ }
- fn impl_version() -> &'static str {
- env!("SUBSTRATE_CLI_IMPL_VERSION")
- }
+ fn impl_version() -> String {
+ env!("SUBSTRATE_CLI_IMPL_VERSION").into()
+ }
- fn description() -> &'static str {
- env!("CARGO_PKG_DESCRIPTION")
- }
+ fn description() -> String {
+ env!("CARGO_PKG_DESCRIPTION").into()
+ }
- fn author() -> &'static str {
- env!("CARGO_PKG_AUTHORS")
- }
+ fn author() -> String {
+ env!("CARGO_PKG_AUTHORS").into()
+ }
- fn support_url() -> &'static str {
- "support.anonymous.an"
- }
+ fn support_url() -> String {
+ "support.anonymous.an".into()
+ }
- fn copyright_start_year() -> i32 {
- 2017
- }
+ fn copyright_start_year() -> i32 {
+ 2017
+ }
- fn executable_name() -> &'static str {
- env!("CARGO_PKG_NAME")
- }
+ fn load_spec(&self, id: &str) -> Result<Box<dyn sc_service::ChainSpec>, String> {
+ Ok(match id {
+ "dev" => Box::new(chain_spec::development_config()?),
+ "" | "local" => Box::new(chain_spec::local_testnet_config()?),
+ path => Box::new(chain_spec::ChainSpec::from_json_file(
+ std::path::PathBuf::from(path),
+ )?),
+ })
+ }
- fn load_spec(&self, id: &str) -> Result<Box<dyn sc_service::ChainSpec>, String> {
- Ok(match id {
- "dev" => Box::new(chain_spec::development_config()),
- "" | "local" => Box::new(chain_spec::local_testnet_config()),
- path => Box::new(chain_spec::ChainSpec::from_json_file(
- std::path::PathBuf::from(path),
- )?),
- })
- }
+ fn native_runtime_version(_: &Box<dyn ChainSpec>) -> &'static RuntimeVersion {
+ &nft_runtime::VERSION
+ }
}
/// Parse and run command line arguments
pub fn run() -> sc_cli::Result<()> {
- let cli = Cli::from_args();
+ let cli = Cli::from_args();
+
+ match &cli.subcommand {
+ Some(Subcommand::BuildSpec(cmd)) => {
+ let runner = cli.create_runner(cmd)?;
+ runner.sync_run(|config| cmd.run(config.chain_spec, config.network))
+ },
+ Some(Subcommand::CheckBlock(cmd)) => {
+ let runner = cli.create_runner(cmd)?;
+ runner.async_run(|config| {
+ let PartialComponents { client, task_manager, import_queue, ..}
+ = service::new_partial(&config)?;
+ Ok((cmd.run(client, import_queue), task_manager))
+ })
+ },
+ Some(Subcommand::ExportBlocks(cmd)) => {
+ let runner = cli.create_runner(cmd)?;
+ runner.async_run(|config| {
+ let PartialComponents { client, task_manager, ..}
+ = service::new_partial(&config)?;
+ Ok((cmd.run(client, config.database), task_manager))
+ })
+ },
+ Some(Subcommand::ExportState(cmd)) => {
+ let runner = cli.create_runner(cmd)?;
+ runner.async_run(|config| {
+ let PartialComponents { client, task_manager, ..}
+ = service::new_partial(&config)?;
+ Ok((cmd.run(client, config.chain_spec), task_manager))
+ })
+ },
+ Some(Subcommand::ImportBlocks(cmd)) => {
+ let runner = cli.create_runner(cmd)?;
+ runner.async_run(|config| {
+ let PartialComponents { client, task_manager, import_queue, ..}
+ = service::new_partial(&config)?;
+ Ok((cmd.run(client, import_queue), task_manager))
+ })
+ },
+ Some(Subcommand::PurgeChain(cmd)) => {
+ let runner = cli.create_runner(cmd)?;
+ runner.sync_run(|config| cmd.run(config.database))
+ },
+ Some(Subcommand::Revert(cmd)) => {
+ let runner = cli.create_runner(cmd)?;
+ runner.async_run(|config| {
+ let PartialComponents { client, task_manager, backend, ..}
+ = service::new_partial(&config)?;
+ Ok((cmd.run(client, backend), task_manager))
+ })
+ },
+ Some(Subcommand::Benchmark(cmd)) => {
+ if cfg!(feature = "runtime-benchmarks") {
+ let runner = cli.create_runner(cmd)?;
- match &cli.subcommand {
- Some(subcommand) => {
- let runner = cli.create_runner(subcommand)?;
- runner.run_subcommand(subcommand, |config| Ok(new_full_start!(config).0))
- }
- None => {
- let runner = cli.create_runner(&cli.run)?;
- runner.run_node(service::new_light, service::new_full, nft_runtime::VERSION)
- }
- }
+ runner.sync_run(|config| cmd.run::<Block, service::Executor>(config))
+ } else {
+ Err("Benchmarking wasn't enabled when building the node. \
+ You can enable it with `--features runtime-benchmarks`.".into())
+ }
+ },
+ None => {
+ let runner = cli.create_runner(&cli.run)?;
+ runner.run_node_until_exit(|config| match config.role {
+ Role::Light => service::new_light(config),
+ _ => service::new_full(config),
+ })
+ }
+ }
}
node/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/node/src/lib.rs
@@ -0,0 +1,3 @@
+pub mod chain_spec;
+pub mod service;
+pub mod rpc;
node/src/main.rsdiffbeforeafterboth--- a/node/src/main.rs
+++ b/node/src/main.rs
@@ -6,6 +6,7 @@
mod service;
mod cli;
mod command;
+mod rpc;
fn main() -> sc_cli::Result<()> {
command::run()
node/src/rpc.rsdiffbeforeafterboth--- /dev/null
+++ b/node/src/rpc.rs
@@ -0,0 +1,69 @@
+//! A collection of node-specific RPC methods.
+//! Substrate provides the `sc-rpc` crate, which defines the core RPC layer
+//! used by Substrate nodes. This file extends those RPC definitions with
+//! capabilities that are specific to this project's runtime configuration.
+
+#![warn(missing_docs)]
+
+use std::sync::Arc;
+
+use nft_runtime::{opaque::Block, AccountId, Balance, Index, BlockNumber};
+use sp_api::ProvideRuntimeApi;
+use sp_blockchain::{Error as BlockChainError, HeaderMetadata, HeaderBackend};
+use sp_block_builder::BlockBuilder;
+pub use sc_rpc_api::DenyUnsafe;
+use sp_transaction_pool::TransactionPool;
+use pallet_contracts_rpc::{Contracts, ContractsApi};
+
+/// Full client dependencies.
+pub struct FullDeps<C, P> {
+ /// The client instance to use.
+ pub client: Arc<C>,
+ /// Transaction pool instance.
+ pub pool: Arc<P>,
+ /// Whether to deny unsafe calls
+ pub deny_unsafe: DenyUnsafe,
+}
+
+/// Instantiate all full RPC extensions.
+pub fn create_full<C, P>(
+ deps: FullDeps<C, P>,
+) -> jsonrpc_core::IoHandler<sc_rpc::Metadata> where
+ C: ProvideRuntimeApi<Block>,
+ C: HeaderBackend<Block> + HeaderMetadata<Block, Error=BlockChainError> + 'static,
+ C: Send + Sync + 'static,
+ C::Api: substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>,
+ C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
+ C::Api: BlockBuilder<Block>,
+ C::Api: pallet_contracts_rpc::ContractsRuntimeApi<Block, AccountId, Balance, BlockNumber>,
+ P: TransactionPool + 'static,
+{
+ use substrate_frame_rpc_system::{FullSystem, SystemApi};
+ use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi};
+
+ let mut io = jsonrpc_core::IoHandler::default();
+ let FullDeps {
+ client,
+ pool,
+ deny_unsafe,
+ } = deps;
+
+ io.extend_with(
+ SystemApi::to_delegate(FullSystem::new(client.clone(), pool, deny_unsafe))
+ );
+
+ io.extend_with(
+ TransactionPaymentApi::to_delegate(TransactionPayment::new(client.clone()))
+ );
+
+ io.extend_with(
+ ContractsApi::to_delegate(Contracts::new(client.clone()))
+ );
+
+ // Extend this RPC with a custom API by using the following syntax.
+ // `YourRpcStruct` should have a reference to a client, which is needed
+ // to call into the runtime.
+ // `io.extend_with(YourRpcTrait::to_delegate(YourRpcStruct::new(ReferenceToClient, ...)));`
+
+ io
+}
node/src/service.rsdiffbeforeafterboth--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -1,274 +1,303 @@
//! Service and ServiceFactory implementation. Specialized wrapper over substrate service.
+use std::sync::Arc;
+use std::time::Duration;
+use sc_client_api::{ExecutorProvider, RemoteBackend};
use nft_runtime::{self, opaque::Block, RuntimeApi};
-use sc_client_api::ExecutorProvider;
-use sc_consensus::LongestChain;
+use sc_service::{error::Error as ServiceError, Configuration, TaskManager};
+use sp_inherents::InherentDataProviders;
use sc_executor::native_executor_instance;
pub use sc_executor::NativeExecutor;
-use sc_finality_grandpa::{
- FinalityProofProvider as GrandpaFinalityProofProvider, SharedVoterState,
- StorageAndProofProvider,
-};
-use sc_service::{error::Error as ServiceError, AbstractService, Configuration, ServiceBuilder};
-use sp_consensus_aura::sr25519::AuthorityPair as AuraPair;
-use sp_inherents::InherentDataProviders;
-use std::sync::Arc;
-use std::time::Duration;
+use sp_consensus_aura::sr25519::{AuthorityPair as AuraPair};
+use sc_finality_grandpa::{FinalityProofProvider as GrandpaFinalityProofProvider, SharedVoterState};
// Our native executor instance.
native_executor_instance!(
- pub Executor,
+ pub Executor,
nft_runtime::api::dispatch,
nft_runtime::native_version,
+ frame_benchmarking::benchmarking::HostFunctions,
);
-/// Starts a `ServiceBuilder` for a full service.
-///
-/// Use this macro if you don't actually need the full service, but just the builder in order to
-/// be able to perform chain operations.
-macro_rules! new_full_start {
- ($config:expr) => {{
- use jsonrpc_core::IoHandler;
- use sp_consensus_aura::sr25519::AuthorityPair as AuraPair;
- use std::sync::Arc;
-
- let mut import_setup = None;
- let inherent_data_providers = sp_inherents::InherentDataProviders::new();
+type FullClient = sc_service::TFullClient<Block, RuntimeApi, Executor>;
+type FullBackend = sc_service::TFullBackend<Block>;
+type FullSelectChain = sc_consensus::LongestChain<FullBackend, Block>;
- let builder = sc_service::ServiceBuilder::new_full::<
- nft_runtime::opaque::Block,
- nft_runtime::RuntimeApi,
- crate::service::Executor,
- >($config)?
- .with_select_chain(|_config, backend| Ok(sc_consensus::LongestChain::new(backend.clone())))?
- .with_transaction_pool(|builder| {
- let pool_api = sc_transaction_pool::FullChainApi::new(builder.client().clone());
- Ok(sc_transaction_pool::BasicPool::new(
- builder.config().transaction_pool.clone(),
- std::sync::Arc::new(pool_api),
- builder.prometheus_registry(),
- ))
- })?
- .with_import_queue(
- |_config, client, mut select_chain, _transaction_pool, spawn_task_handle, registry| {
- let select_chain = select_chain
- .take()
- .ok_or_else(|| sc_service::Error::SelectChainRequired)?;
+pub fn new_partial(config: &Configuration) -> Result<sc_service::PartialComponents<
+ FullClient, FullBackend, FullSelectChain,
+ sp_consensus::DefaultImportQueue<Block, FullClient>,
+ sc_transaction_pool::FullPool<Block, FullClient>,
+ (
+ sc_consensus_aura::AuraBlockImport<
+ Block,
+ FullClient,
+ sc_finality_grandpa::GrandpaBlockImport<FullBackend, Block, FullClient, FullSelectChain>,
+ AuraPair
+ >,
+ sc_finality_grandpa::LinkHalf<Block, FullClient, FullSelectChain>
+ )
+>, ServiceError> {
+ let inherent_data_providers = sp_inherents::InherentDataProviders::new();
- let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import(
- client.clone(),
- &(client.clone() as Arc<_>),
- select_chain,
- )?;
+ let (client, backend, keystore, task_manager) =
+ sc_service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
+ let client = Arc::new(client);
- let aura_block_import =
- sc_consensus_aura::AuraBlockImport::<_, _, _, AuraPair>::new(
- grandpa_block_import.clone(),
- client.clone(),
- );
+ let select_chain = sc_consensus::LongestChain::new(backend.clone());
- let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _>(
- sc_consensus_aura::slot_duration(&*client)?,
- aura_block_import,
- Some(Box::new(grandpa_block_import.clone())),
- None,
- client,
- inherent_data_providers.clone(),
- spawn_task_handle,
- registry,
- )?;
+ let transaction_pool = sc_transaction_pool::BasicPool::new_full(
+ config.transaction_pool.clone(),
+ config.prometheus_registry(),
+ task_manager.spawn_handle(),
+ client.clone(),
+ );
- import_setup = Some((grandpa_block_import, grandpa_link));
+ let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import(
+ client.clone(), &(client.clone() as Arc<_>), select_chain.clone(),
+ )?;
- Ok(import_queue)
- },
- )?
- .with_rpc_extensions(|builder| -> Result<IoHandler<sc_rpc::Metadata>, _> {
- let handler = pallet_contracts_rpc::Contracts::new(builder.client().clone());
- let delegate = pallet_contracts_rpc::ContractsApi::to_delegate(handler);
+ let aura_block_import = sc_consensus_aura::AuraBlockImport::<_, _, _, AuraPair>::new(
+ grandpa_block_import.clone(), client.clone(),
+ );
- let mut io = IoHandler::default();
- io.extend_with(delegate);
- Ok(io)
- })?;
+ let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _, _>(
+ sc_consensus_aura::slot_duration(&*client)?,
+ aura_block_import.clone(),
+ Some(Box::new(grandpa_block_import.clone())),
+ None,
+ client.clone(),
+ inherent_data_providers.clone(),
+ &task_manager.spawn_handle(),
+ config.prometheus_registry(),
+ sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()),
+ )?;
- (builder, import_setup, inherent_data_providers)
- }};
+ Ok(sc_service::PartialComponents {
+ client, backend, task_manager, import_queue, keystore, select_chain, transaction_pool,
+ inherent_data_providers,
+ other: (aura_block_import, grandpa_link),
+ })
}
/// Builds a new service for a full client.
-pub fn new_full(config: Configuration) -> Result<impl AbstractService, ServiceError> {
- let role = config.role.clone();
- let force_authoring = config.force_authoring;
- let name = config.network.node_name.clone();
- let disable_grandpa = config.disable_grandpa;
+pub fn new_full(config: Configuration) -> Result<TaskManager, ServiceError> {
+ let sc_service::PartialComponents {
+ client, backend, mut task_manager, import_queue, keystore, select_chain, transaction_pool,
+ inherent_data_providers,
+ other: (block_import, grandpa_link),
+ } = new_partial(&config)?;
- let (builder, mut import_setup, inherent_data_providers) = new_full_start!(config);
+ let finality_proof_provider =
+ GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());
- let (block_import, grandpa_link) = import_setup.take().expect(
- "Link Half and Block Import are present for Full Services or setup failed before. qed",
- );
+ let (network, network_status_sinks, system_rpc_tx, network_starter) =
+ sc_service::build_network(sc_service::BuildNetworkParams {
+ config: &config,
+ client: client.clone(),
+ transaction_pool: transaction_pool.clone(),
+ spawn_handle: task_manager.spawn_handle(),
+ import_queue,
+ on_demand: None,
+ block_announce_validator_builder: None,
+ finality_proof_request_builder: None,
+ finality_proof_provider: Some(finality_proof_provider.clone()),
+ })?;
- let service = builder
- .with_finality_proof_provider(|client, backend| {
- // GenesisAuthoritySetProvider is implemented for StorageAndProofProvider
- let provider = client as Arc<dyn StorageAndProofProvider<_, _>>;
- Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _)
- })?
- .build_full()?;
+ if config.offchain_worker.enabled {
+ sc_service::build_offchain_workers(
+ &config, backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(),
+ );
+ }
- if role.is_authority() {
- let proposer = sc_basic_authorship::ProposerFactory::new(
- service.client(),
- service.transaction_pool(),
- service.prometheus_registry().as_ref(),
- );
+ let role = config.role.clone();
+ let force_authoring = config.force_authoring;
+ let name = config.network.node_name.clone();
+ let enable_grandpa = !config.disable_grandpa;
+ let prometheus_registry = config.prometheus_registry().cloned();
+ let telemetry_connection_sinks = sc_service::TelemetryConnectionSinks::default();
- let client = service.client();
- let select_chain = service
- .select_chain()
- .ok_or(ServiceError::SelectChainRequired)?;
+ let rpc_extensions_builder = {
+ let client = client.clone();
+ let pool = transaction_pool.clone();
- let can_author_with =
- sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone());
+ Box::new(move |deny_unsafe, _| {
+ let deps = crate::rpc::FullDeps {
+ client: client.clone(),
+ pool: pool.clone(),
+ deny_unsafe,
+ };
- let aura = sc_consensus_aura::start_aura::<_, _, _, _, _, AuraPair, _, _, _>(
- sc_consensus_aura::slot_duration(&*client)?,
- client,
- select_chain,
- block_import,
- proposer,
- service.network(),
- inherent_data_providers.clone(),
- force_authoring,
- service.keystore(),
- can_author_with,
- )?;
+ crate::rpc::create_full(deps)
+ })
+ };
- // the AURA authoring task is considered essential, i.e. if it
- // fails we take down the service with it.
- service
- .spawn_essential_task_handle()
- .spawn_blocking("aura", aura);
- }
+ sc_service::spawn_tasks(sc_service::SpawnTasksParams {
+ network: network.clone(),
+ client: client.clone(),
+ keystore: keystore.clone(),
+ task_manager: &mut task_manager,
+ transaction_pool: transaction_pool.clone(),
+ telemetry_connection_sinks: telemetry_connection_sinks.clone(),
+ rpc_extensions_builder: rpc_extensions_builder,
+ on_demand: None,
+ remote_blockchain: None,
+ backend, network_status_sinks, system_rpc_tx, config,
+ })?;
- // if the node isn't actively participating in consensus then it doesn't
- // need a keystore, regardless of which protocol we use below.
- let keystore = if role.is_authority() {
- Some(service.keystore() as sp_core::traits::BareCryptoStorePtr)
- } else {
- None
- };
+ if role.is_authority() {
+ let proposer = sc_basic_authorship::ProposerFactory::new(
+ client.clone(),
+ transaction_pool,
+ prometheus_registry.as_ref(),
+ );
- let grandpa_config = sc_finality_grandpa::Config {
- // FIXME #1578 make this available through chainspec
- gossip_duration: Duration::from_millis(333),
- justification_period: 512,
- name: Some(name),
- observer_enabled: false,
- keystore,
- is_authority: role.is_network_authority(),
- };
+ let can_author_with =
+ sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone());
- let enable_grandpa = !disable_grandpa;
- if enable_grandpa {
- // start the full GRANDPA voter
- // NOTE: non-authorities could run the GRANDPA observer protocol, but at
- // this point the full voter should provide better guarantees of block
- // and vote data availability than the observer. The observer has not
- // been tested extensively yet and having most nodes in a network run it
- // could lead to finality stalls.
- let grandpa_config = sc_finality_grandpa::GrandpaParams {
- config: grandpa_config,
- link: grandpa_link,
- network: service.network(),
- inherent_data_providers: inherent_data_providers.clone(),
- telemetry_on_connect: Some(service.telemetry_on_connect_stream()),
- voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(),
- prometheus_registry: service.prometheus_registry(),
- shared_voter_state: SharedVoterState::empty(),
- };
+ let aura = sc_consensus_aura::start_aura::<_, _, _, _, _, AuraPair, _, _, _>(
+ sc_consensus_aura::slot_duration(&*client)?,
+ client.clone(),
+ select_chain,
+ block_import,
+ proposer,
+ network.clone(),
+ inherent_data_providers.clone(),
+ force_authoring,
+ keystore.clone(),
+ can_author_with,
+ )?;
+
+ // the AURA authoring task is considered essential, i.e. if it
+ // fails we take down the service with it.
+ task_manager.spawn_essential_handle().spawn_blocking("aura", aura);
+ }
+
+ // if the node isn't actively participating in consensus then it doesn't
+ // need a keystore, regardless of which protocol we use below.
+ let keystore = if role.is_authority() {
+ Some(keystore as sp_core::traits::BareCryptoStorePtr)
+ } else {
+ None
+ };
+
+ let grandpa_config = sc_finality_grandpa::Config {
+ // FIXME #1578 make this available through chainspec
+ gossip_duration: Duration::from_millis(333),
+ justification_period: 512,
+ name: Some(name),
+ observer_enabled: false,
+ keystore,
+ is_authority: role.is_network_authority(),
+ };
+
+ if enable_grandpa {
+ // start the full GRANDPA voter
+ // NOTE: non-authorities could run the GRANDPA observer protocol, but at
+ // this point the full voter should provide better guarantees of block
+ // and vote data availability than the observer. The observer has not
+ // been tested extensively yet and having most nodes in a network run it
+ // could lead to finality stalls.
+ let grandpa_config = sc_finality_grandpa::GrandpaParams {
+ config: grandpa_config,
+ link: grandpa_link,
+ network,
+ inherent_data_providers,
+ telemetry_on_connect: Some(telemetry_connection_sinks.on_connect_stream()),
+ voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(),
+ prometheus_registry,
+ shared_voter_state: SharedVoterState::empty(),
+ };
- // the GRANDPA voter task is considered infallible, i.e.
- // if it fails we take down the service with it.
- service.spawn_essential_task_handle().spawn_blocking(
- "grandpa-voter",
- sc_finality_grandpa::run_grandpa_voter(grandpa_config)?,
- );
- } else {
- sc_finality_grandpa::setup_disabled_grandpa(
- service.client(),
- &inherent_data_providers,
- service.network(),
- )?;
- }
+ // the GRANDPA voter task is considered infallible, i.e.
+ // if it fails we take down the service with it.
+ task_manager.spawn_essential_handle().spawn_blocking(
+ "grandpa-voter",
+ sc_finality_grandpa::run_grandpa_voter(grandpa_config)?
+ );
+ } else {
+ sc_finality_grandpa::setup_disabled_grandpa(
+ client,
+ &inherent_data_providers,
+ network,
+ )?;
+ }
- Ok(service)
+ network_starter.start_network();
+ Ok(task_manager)
}
/// Builds a new service for a light client.
-pub fn new_light(config: Configuration) -> Result<impl AbstractService, ServiceError> {
- let inherent_data_providers = InherentDataProviders::new();
+pub fn new_light(config: Configuration) -> Result<TaskManager, ServiceError> {
+ let (client, backend, keystore, mut task_manager, on_demand) =
+ sc_service::new_light_parts::<Block, RuntimeApi, Executor>(&config)?;
+
+ let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light(
+ config.transaction_pool.clone(),
+ config.prometheus_registry(),
+ task_manager.spawn_handle(),
+ client.clone(),
+ on_demand.clone(),
+ ));
- ServiceBuilder::new_light::<Block, RuntimeApi, Executor>(config)?
- .with_select_chain(|_config, backend| Ok(LongestChain::new(backend.clone())))?
- .with_transaction_pool(|builder| {
- let fetcher = builder
- .fetcher()
- .ok_or_else(|| "Trying to start light transaction pool without active fetcher")?;
+ let grandpa_block_import = sc_finality_grandpa::light_block_import(
+ client.clone(), backend.clone(), &(client.clone() as Arc<_>),
+ Arc::new(on_demand.checker().clone()) as Arc<_>,
+ )?;
+ let finality_proof_import = grandpa_block_import.clone();
+ let finality_proof_request_builder =
+ finality_proof_import.create_finality_proof_request_builder();
+
+ let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _, _>(
+ sc_consensus_aura::slot_duration(&*client)?,
+ grandpa_block_import,
+ None,
+ Some(Box::new(finality_proof_import)),
+ client.clone(),
+ InherentDataProviders::new(),
+ &task_manager.spawn_handle(),
+ config.prometheus_registry(),
+ sp_consensus::NeverCanAuthor,
+ )?;
- let pool_api =
- sc_transaction_pool::LightChainApi::new(builder.client().clone(), fetcher.clone());
- let pool = sc_transaction_pool::BasicPool::with_revalidation_type(
- builder.config().transaction_pool.clone(),
- Arc::new(pool_api),
- builder.prometheus_registry(),
- sc_transaction_pool::RevalidationType::Light,
- );
- Ok(pool)
- })?
- .with_import_queue_and_fprb(
- |_config,
- client,
- backend,
- fetcher,
- _select_chain,
- _tx_pool,
- spawn_task_handle,
- prometheus_registry| {
- let fetch_checker = fetcher
- .map(|fetcher| fetcher.checker().clone())
- .ok_or_else(|| {
- "Trying to start light import queue without active fetch checker"
- })?;
- let grandpa_block_import = sc_finality_grandpa::light_block_import(
- client.clone(),
- backend,
- &(client.clone() as Arc<_>),
- Arc::new(fetch_checker),
- )?;
- let finality_proof_import = grandpa_block_import.clone();
- let finality_proof_request_builder =
- finality_proof_import.create_finality_proof_request_builder();
+ let finality_proof_provider =
+ GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());
+
+ let (network, network_status_sinks, system_rpc_tx, network_starter) =
+ sc_service::build_network(sc_service::BuildNetworkParams {
+ config: &config,
+ client: client.clone(),
+ transaction_pool: transaction_pool.clone(),
+ spawn_handle: task_manager.spawn_handle(),
+ import_queue,
+ on_demand: Some(on_demand.clone()),
+ block_announce_validator_builder: None,
+ finality_proof_request_builder: Some(finality_proof_request_builder),
+ finality_proof_provider: Some(finality_proof_provider),
+ })?;
+
+ if config.offchain_worker.enabled {
+ sc_service::build_offchain_workers(
+ &config, backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(),
+ );
+ }
+
+ sc_service::spawn_tasks(sc_service::SpawnTasksParams {
+ remote_blockchain: Some(backend.remote_blockchain()),
+ transaction_pool,
+ task_manager: &mut task_manager,
+ on_demand: Some(on_demand),
+ rpc_extensions_builder: Box::new(|_, _| ()),
+ telemetry_connection_sinks: sc_service::TelemetryConnectionSinks::default(),
+ config,
+ client,
+ keystore,
+ backend,
+ network,
+ network_status_sinks,
+ system_rpc_tx,
+ })?;
- let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _>(
- sc_consensus_aura::slot_duration(&*client)?,
- grandpa_block_import,
- None,
- Some(Box::new(finality_proof_import)),
- client,
- inherent_data_providers.clone(),
- spawn_task_handle,
- prometheus_registry,
- )?;
+ network_starter.start_network();
- Ok((import_queue, finality_proof_request_builder))
- },
- )?
- .with_finality_proof_provider(|client, backend| {
- // GenesisAuthoritySetProvider is implemented for StorageAndProofProvider
- let provider = client as Arc<dyn StorageAndProofProvider<_, _>>;
- Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _)
- })?
- .build_light()
+ Ok(task_manager)
}
pallets/nft/Cargo.tomldiffbeforeafterboth--- a/pallets/nft/Cargo.toml
+++ b/pallets/nft/Cargo.toml
@@ -1,37 +1,52 @@
+[package]
+authors = ['Substrate DevHub <https://github.com/substrate-developer-hub>']
+description = 'FRAME pallet nft'
+edition = '2018'
+homepage = 'https://substrate.io'
+license = 'Unlicense'
+name = 'pallet-nft'
+repository = 'https://github.com/substrate-developer-hub/nft/'
+version = '2.0.0'
+
+[package.metadata.docs.rs]
+targets = ['x86_64-unknown-linux-gnu']
+
+# alias "parity-scale-code" to "codec"
[dependencies.codec]
default-features = false
features = ['derive']
package = 'parity-scale-codec'
-version = '1.3.0'
+version = '1.3.4'
[dependencies.frame-support]
default-features = false
git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
[dependencies.frame-system]
default-features = false
git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
+
[dev-dependencies.sp-core]
default-features = false
git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
[dev-dependencies.sp-io]
default-features = false
git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
[dependencies.sp-runtime]
default-features = false
git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
[dependencies]
# third-party dependencies
@@ -41,27 +56,50 @@
[dependencies.sp-std]
default-features = false
git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
[dependencies.transaction-payment]
default-features = false
git = 'https://github.com/usetech-llc/substrate.git'
package = 'pallet-transaction-payment'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
+branch = 'v2.0.0_release'
+version = '2.0.0'
-[package]
-authors = ['Substrate DevHub <https://github.com/substrate-developer-hub>']
-description = 'FRAME pallet nft'
-edition = '2018'
-homepage = 'https://substrate.io'
-license = 'Unlicense'
-name = 'pallet-nft'
-repository = 'https://github.com/substrate-developer-hub/nft/'
-version = '2.0.0-rc4'
-[package.metadata.docs.rs]
-targets = ['x86_64-unknown-linux-gnu']
+[dependencies.frame-benchmarking]
+version = "2.0.0"
+default-features = false
+git = 'https://github.com/usetech-llc/substrate.git'
+branch = 'v2.0.0_release'
+optional = true
+
+[dependencies.pallet-contracts]
+default-features = false
+git = 'https://github.com/usetech-llc/substrate.git'
+package = 'pallet-contracts'
+branch = 'v2.0.0_release'
+version = '2.0.0'
+
+[dependencies.pallet-balances]
+default-features = false
+git = 'https://github.com/usetech-llc/substrate.git'
+package = 'pallet-balances'
+branch = 'v2.0.0_release'
+version = '2.0.0'
+
+[dependencies.pallet-timestamp]
+default-features = false
+git = 'https://github.com/usetech-llc/substrate.git'
+package = 'pallet-timestamp'
+branch = 'v2.0.0_release'
+version = '2.0.0'
+
+[dependencies.pallet-randomness-collective-flip]
+default-features = false
+git = 'https://github.com/usetech-llc/substrate.git'
+package = 'pallet-randomness-collective-flip'
+branch = 'v2.0.0_release'
+version = '2.0.0'
[features]
default = ['std']
@@ -70,6 +108,11 @@
"serde/std",
'frame-support/std',
'frame-system/std',
+ 'pallet-balances/std',
+ 'pallet-timestamp/std',
+ 'pallet-randomness-collective-flip/std',
+ 'sp-std/std',
'sp-runtime/std',
- 'sp-std/std',
+ 'frame-benchmarking/std',
]
+runtime-benchmarks = ["frame-benchmarking"]
pallets/nft/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/nft/src/benchmarking.rs
@@ -0,0 +1,353 @@
+#[cfg(feature = "runtime-benchmarks")]
+// mod benchmarking {
+ use super::*;
+ use sp_std::prelude::*;
+ use frame_system::RawOrigin;
+ // use frame_support::{ensure, traits::OnFinalize};
+ use frame_benchmarking::{benchmarks, account, whitelisted_caller}; // , TrackedStorageKey,
+ use crate::Module as Nft;
+
+ const SEED: u32 = 1;
+
+ fn default_nft_data() -> CreateItemData {
+ CreateItemData::NFT(CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })
+ }
+
+ fn default_fungible_data () -> CreateItemData {
+ CreateItemData::Fungible(CreateFungibleData { })
+ }
+
+ fn default_re_fungible_data () -> CreateItemData {
+ CreateItemData::ReFungible(CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })
+ }
+
+
+ benchmarks! {
+
+ _ {}
+
+ create_collection {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = account("caller", 0, SEED);
+ }: create_collection(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)
+ verify {
+ assert_eq!(Nft::<T>::collection(2).owner, caller);
+ }
+
+ destroy_collection {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: destroy_collection(RawOrigin::Signed(caller.clone()), 2)
+
+ add_to_white_list {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ let whitelist_account: T::AccountId = account("admin", 0, SEED);
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
+
+ remove_from_white_list {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ let whitelist_account: T::AccountId = account("admin", 0, SEED);
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;
+ }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
+
+ set_public_access_mode {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)
+
+ set_mint_permission {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)
+
+ change_collection_owner {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let new_owner: T::AccountId = account("admin", 0, SEED);
+ }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)
+
+ add_collection_admin {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let new_admin: T::AccountId = account("admin", 0, SEED);
+ }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
+
+ remove_collection_admin {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let new_admin: T::AccountId = account("admin", 0, SEED);
+ Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;
+ }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
+
+ set_collection_sponsor {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())
+
+ confirm_sponsorship {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
+ }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)
+
+ remove_collection_sponsor {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
+ Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;
+ }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)
+
+ // nft item
+ create_item_nft {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+
+ #[extra]
+ create_item_nft_large {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ let nft_data = CreateNftData {
+ const_data: vec![],
+ variable_data: vec![]
+ };
+ for i in 0..1998 {
+ nft_data.const_data.push(10);
+ nft_data.variable_data.push(10);
+ }
+ let mut data = CreateItemData::NFT(nft_data);
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+
+ // fungible item
+ create_item_fungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::Fungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_fungible_data();
+
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+
+ // refungible item
+ create_item_refungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
+
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+
+ burn_item {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+
+ }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)
+
+ transfer_nft {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+
+ }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+
+ transfer_fungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::Fungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+
+ }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+
+ transfer_refungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+
+ }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+
+ approve {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+
+ }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)
+
+ // Nft
+ transfer_from_nft {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+
+ }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+
+ // Fungible
+ transfer_from_fungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::Fungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+
+ }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+
+ // ReFungible
+ transfer_from_refungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+
+ }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+
+ set_offchain_schema {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+
+ }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
+
+ set_const_on_chain_schema {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
+
+ set_variable_on_chain_schema {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
+
+ set_variable_meta_data {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+
+ }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())
+}
\ No newline at end of file
pallets/nft/src/default_weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/nft/src/default_weights.rs
@@ -0,0 +1,115 @@
+use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
+
+impl crate::WeightInfo for () {
+ fn create_collection() -> Weight {
+ (70_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(7 as Weight))
+ .saturating_add(DbWeight::get().writes(5 as Weight))
+ }
+ fn destroy_collection() -> Weight {
+ (90_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(5 as Weight))
+ }
+ fn add_to_white_list() -> Weight {
+ (30_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_from_white_list() -> Weight {
+ (35_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_public_access_mode() -> Weight {
+ (27_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_mint_permission() -> Weight {
+ (27_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn change_collection_owner() -> Weight {
+ (27_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn add_collection_admin() -> Weight {
+ (32_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_admin() -> Weight {
+ (50_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_collection_sponsor() -> Weight {
+ (32_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn confirm_sponsorship() -> Weight {
+ (22_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_sponsor() -> Weight {
+ (24_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn create_item(s: usize, ) -> Weight {
+ (130_000_000 as Weight)
+ .saturating_add((2135 as Weight).saturating_mul(s as Weight))
+ .saturating_add(DbWeight::get().reads(10 as Weight))
+ .saturating_add(DbWeight::get().writes(8 as Weight))
+ }
+ fn burn_item() -> Weight {
+ (170_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(9 as Weight))
+ .saturating_add(DbWeight::get().writes(7 as Weight))
+ }
+ fn transfer() -> Weight {
+ (125_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(7 as Weight))
+ .saturating_add(DbWeight::get().writes(7 as Weight))
+ }
+ fn approve() -> Weight {
+ (45_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn transfer_from() -> Weight {
+ (150_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(9 as Weight))
+ .saturating_add(DbWeight::get().writes(8 as Weight))
+ }
+ fn set_offchain_schema() -> Weight {
+ (33_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_const_on_chain_schema() -> Weight {
+ (11_100_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_on_chain_schema() -> Weight {
+ (11_100_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_meta_data() -> Weight {
+ (17_500_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ // fn enable_contract_sponsoring() -> Weight {
+ // (0 as Weight)
+ // .saturating_add(DbWeight::get().reads(1 as Weight))
+ // .saturating_add(DbWeight::get().writes(1 as Weight))
+ // }
+}
pallets/nft/src/lib.rsdiffbeforeafterboth--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -27,15 +27,15 @@
use sp_runtime::sp_std::prelude::Vec;
use sp_runtime::{
traits::{
- DispatchInfoOf, Dispatchable, PostDispatchInfoOf, SaturatedConversion, Saturating,
- SignedExtension, Zero,
+ DispatchInfoOf, Dispatchable, PostDispatchInfoOf, Saturating, SignedExtension, Zero,
},
transaction_validity::{
- InvalidTransaction, TransactionPriority, TransactionValidity, TransactionValidityError,
- ValidTransaction,
+ InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction,
},
FixedPointOperand, FixedU128,
};
+use pallet_contracts::ContractAddressFor;
+use sp_runtime::traits::StaticLookup;
#[cfg(test)]
mod mock;
@@ -43,6 +43,8 @@
#[cfg(test)]
mod tests;
+mod default_weights;
+
// Structs
// #region
@@ -50,21 +52,20 @@
#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
pub enum CollectionMode {
Invalid,
- // custom data size
- NFT(u32),
+ NFT,
// decimal points
Fungible(u32),
- // custom data size and decimal points
- ReFungible(u32, u32),
+ // decimal points
+ ReFungible(u32),
}
impl Into<u8> for CollectionMode {
fn into(self) -> u8 {
match self {
CollectionMode::Invalid => 0,
- CollectionMode::NFT(_) => 1,
+ CollectionMode::NFT => 1,
CollectionMode::Fungible(_) => 2,
- CollectionMode::ReFungible(_, _) => 3,
+ CollectionMode::ReFungible(_) => 3,
}
}
}
@@ -104,11 +105,12 @@
pub name: Vec<u16>, // 64 include null escape char
pub description: Vec<u16>, // 256 include null escape char
pub token_prefix: Vec<u8>, // 16 include null escape char
- pub custom_data_size: u32,
pub mint_mode: bool,
pub offchain_schema: Vec<u8>,
pub sponsor: AccountId, // Who pays fees. If set to default address, the fees are applied to the transaction sender
pub unconfirmed_sponsor: AccountId, // Sponsor address that has not yet confirmed sponsorship
+ pub variable_on_chain_schema: Vec<u8>, //
+ pub const_on_chain_schema: Vec<u8>, //
}
#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
@@ -123,7 +125,8 @@
pub struct NftItemType<AccountId> {
pub collection: u64,
pub owner: AccountId,
- pub data: Vec<u8>,
+ pub const_data: Vec<u8>,
+ pub variable_data: Vec<u8>,
}
#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
@@ -139,7 +142,8 @@
pub struct ReFungibleItemType<AccountId> {
pub collection: u64,
pub owner: Vec<Ownership<AccountId>>,
- pub data: Vec<u8>,
+ pub const_data: Vec<u8>,
+ pub variable_data: Vec<u8>,
}
#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
@@ -181,10 +185,98 @@
pub refungible_sponsor_transfer_timeout: u32,
}
-pub trait Trait: system::Trait {
+pub trait WeightInfo {
+ fn create_collection() -> Weight;
+ fn destroy_collection() -> Weight;
+ fn add_to_white_list() -> Weight;
+ fn remove_from_white_list() -> Weight;
+ fn set_public_access_mode() -> Weight;
+ fn set_mint_permission() -> Weight;
+ fn change_collection_owner() -> Weight;
+ fn add_collection_admin() -> Weight;
+ fn remove_collection_admin() -> Weight;
+ fn set_collection_sponsor() -> Weight;
+ fn confirm_sponsorship() -> Weight;
+ fn remove_collection_sponsor() -> Weight;
+ fn create_item(s: usize) -> Weight;
+ fn burn_item() -> Weight;
+ fn transfer() -> Weight;
+ fn approve() -> Weight;
+ fn transfer_from() -> Weight;
+ fn set_offchain_schema() -> Weight;
+ fn set_const_on_chain_schema() -> Weight;
+ fn set_variable_on_chain_schema() -> Weight;
+ fn set_variable_meta_data() -> Weight;
+ // fn enable_contract_sponsoring() -> Weight;
+}
+
+#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+pub struct CreateNftData {
+ pub const_data: Vec<u8>,
+ pub variable_data: Vec<u8>,
+}
+
+#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+pub struct CreateFungibleData {
+}
+
+#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+pub struct CreateReFungibleData {
+ pub const_data: Vec<u8>,
+ pub variable_data: Vec<u8>,
+}
+
+#[derive(Encode, Decode, Debug, Clone, PartialEq)]
+#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
+pub enum CreateItemData {
+ NFT(CreateNftData),
+ Fungible(CreateFungibleData),
+ ReFungible(CreateReFungibleData)
+}
+
+impl CreateItemData {
+ pub fn len(&self) -> usize {
+ let len = match self {
+ CreateItemData::NFT(data) => data.variable_data.len() + data.const_data.len(),
+ CreateItemData::ReFungible(data) => data.variable_data.len() + data.const_data.len(),
+ _ => 0
+ };
+
+ return len;
+ }
+}
+
+impl From<CreateNftData> for CreateItemData {
+ fn from(item: CreateNftData) -> Self {
+ CreateItemData::NFT(item)
+ }
+}
+
+impl From<CreateReFungibleData> for CreateItemData {
+ fn from(item: CreateReFungibleData) -> Self {
+ CreateItemData::ReFungible(item)
+ }
+}
+
+impl From<CreateFungibleData> for CreateItemData {
+ fn from(item: CreateFungibleData) -> Self {
+ CreateItemData::Fungible(item)
+ }
+}
+
+pub trait Trait: system::Trait + Sized + transaction_payment::Trait + pallet_contracts::Trait {
type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
+
+ /// Weight information for extrinsics in this pallet.
+ type WeightInfo: WeightInfo;
}
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
+
// #endregion
decl_storage! {
@@ -227,9 +319,9 @@
pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(blake2_128_concat) u64, hasher(blake2_128_concat) u64 => Vec<BasketItem<T::AccountId, T::BlockNumber>>;
pub ReFungibleTransferBasket get(fn refungible_transfer_basket): double_map hasher(blake2_128_concat) u64, hasher(blake2_128_concat) u64 => T::BlockNumber;
- // Sponsorship
- pub ContractSponsor get(fn contract_sponsor): map hasher(identity) T::AccountId => T::AccountId;
- pub UnconfirmedContractSponsor get(fn unconfirmed_contract_sponsor): map hasher(identity) T::AccountId => T::AccountId;
+ // Contract Sponsorship and Ownership
+ pub ContractOwner get(fn contract_owner): map hasher(identity) T::AccountId => T::AccountId;
+ pub ContractSelfSponsoring get(fn contract_self_sponsoring): map hasher(identity) T::AccountId => bool;
}
add_extra_genesis {
build(|config: &GenesisConfig<T>| {
@@ -322,7 +414,7 @@
///
/// * mode: [CollectionMode] collection type and type dependent data.
// returns collection ID
- #[weight = 0]
+ #[weight = T::WeightInfo::create_collection()]
pub fn create_collection(origin,
collection_name: Vec<u16>,
collection_description: Vec<u16>,
@@ -331,25 +423,10 @@
// Anyone can create a collection
let who = ensure_signed(origin)?;
- let custom_data_size = match mode {
- CollectionMode::NFT(size) => {
-
- // bound Custom data size
- ensure!(size < ChainLimit::get().custom_data_limit, "Custom data size bound exceeded");
- size
- },
- CollectionMode::ReFungible(size, _) => {
- // bound Custom data size
- ensure!(size < ChainLimit::get().custom_data_limit, "Custom data size bound exceeded");
- size
- },
- _ => 0
- };
-
let decimal_points = match mode {
CollectionMode::Fungible(points) => points,
- CollectionMode::ReFungible(_, points) => points,
+ CollectionMode::ReFungible(points) => points,
_ => 0
};
@@ -395,9 +472,10 @@
decimal_points: decimal_points,
token_prefix: prefix,
offchain_schema: Vec::new(),
- custom_data_size: custom_data_size,
sponsor: T::AccountId::default(),
unconfirmed_sponsor: T::AccountId::default(),
+ variable_on_chain_schema: Vec::new(),
+ const_on_chain_schema: Vec::new(),
};
// Add new collection to map
@@ -418,7 +496,7 @@
/// # Arguments
///
/// * collection_id: collection to destroy.
- #[weight = 0]
+ #[weight = T::WeightInfo::destroy_collection()]
pub fn destroy_collection(origin, collection_id: u64) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -465,7 +543,7 @@
/// * collection_id.
///
/// * address.
- #[weight = 0]
+ #[weight = T::WeightInfo::add_to_white_list()]
pub fn add_to_white_list(origin, collection_id: u64, address: T::AccountId) -> DispatchResult{
let sender = ensure_signed(origin)?;
@@ -500,7 +578,7 @@
/// * collection_id.
///
/// * address.
- #[weight = 0]
+ #[weight = T::WeightInfo::remove_from_white_list()]
pub fn remove_from_white_list(origin, collection_id: u64, address: T::AccountId) -> DispatchResult{
let sender = ensure_signed(origin)?;
@@ -529,7 +607,7 @@
/// * collection_id.
///
/// * mode: [AccessMode]
- #[weight = 0]
+ #[weight = T::WeightInfo::set_public_access_mode()]
pub fn set_public_access_mode(origin, collection_id: u64, mode: AccessMode) -> DispatchResult
{
let sender = ensure_signed(origin)?;
@@ -555,7 +633,7 @@
/// * collection_id.
///
/// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
- #[weight = 0]
+ #[weight = T::WeightInfo::set_mint_permission()]
pub fn set_mint_permission(origin, collection_id: u64, mint_permission: bool) -> DispatchResult
{
let sender = ensure_signed(origin)?;
@@ -579,7 +657,7 @@
/// * collection_id.
///
/// * new_owner.
- #[weight = 0]
+ #[weight = T::WeightInfo::change_collection_owner()]
pub fn change_collection_owner(origin, collection_id: u64, new_owner: T::AccountId) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -604,7 +682,7 @@
/// * collection_id: ID of the Collection to add admin for.
///
/// * new_admin_id: Address of new admin to add.
- #[weight = 0]
+ #[weight = T::WeightInfo::add_collection_admin()]
pub fn add_collection_admin(origin, collection_id: u64, new_admin_id: T::AccountId) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -638,7 +716,7 @@
/// * collection_id: ID of the Collection to remove admin for.
///
/// * account_id: Address of admin to remove.
- #[weight = 0]
+ #[weight = T::WeightInfo::remove_collection_admin()]
pub fn remove_collection_admin(origin, collection_id: u64, account_id: T::AccountId) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -663,7 +741,7 @@
/// * collection_id.
///
/// * new_sponsor.
- #[weight = 0]
+ #[weight = T::WeightInfo::set_collection_sponsor()]
pub fn set_collection_sponsor(origin, collection_id: u64, new_sponsor: T::AccountId) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -685,7 +763,7 @@
/// # Arguments
///
/// * collection_id.
- #[weight = 0]
+ #[weight = T::WeightInfo::confirm_sponsorship()]
pub fn confirm_sponsorship(origin, collection_id: u64) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -710,7 +788,7 @@
/// # Arguments
///
/// * collection_id.
- #[weight = 0]
+ #[weight = T::WeightInfo::remove_collection_sponsor()]
pub fn remove_collection_sponsor(origin, collection_id: u64) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -739,12 +817,18 @@
/// # Arguments
///
/// * collection_id: 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.
- #[weight = 0]
- pub fn create_item(origin, collection_id: u64, properties: Vec<u8>, owner: T::AccountId) -> DispatchResult {
+ ///
+ /// * data: Token data to store on chain.
+ // #[weight =
+ // (130_000_000 as Weight)
+ // .saturating_add((2135 as Weight).saturating_mul((properties.len() as u64) as Weight))
+ // .saturating_add(RocksDbWeight::get().reads(10 as Weight))
+ // .saturating_add(RocksDbWeight::get().writes(8 as Weight))]
+
+ #[weight = T::WeightInfo::create_item(data.len())]
+ pub fn create_item(origin, collection_id: u64, owner: T::AccountId, data: CreateItemData) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -811,7 +895,7 @@
/// * collection_id: ID of the collection.
///
/// * item_id: ID of NFT to burn.
- #[weight = 0]
+ #[weight = T::WeightInfo::burn_item()]
pub fn burn_item(origin, collection_id: u64, item_id: u64) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -829,9 +913,9 @@
match target_collection.mode
{
- CollectionMode::NFT(_) => Self::burn_nft_item(collection_id, item_id)?,
+ CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,
CollectionMode::Fungible(_) => Self::burn_fungible_item(collection_id, item_id)?,
- CollectionMode::ReFungible(_, _) => Self::burn_refungible_item(collection_id, item_id, sender.clone())?,
+ CollectionMode::ReFungible(_) => Self::burn_refungible_item(collection_id, item_id, sender.clone())?,
_ => ()
};
@@ -864,7 +948,7 @@
/// * Non-Fungible Mode: Ignored
/// * Fungible Mode: Must specify transferred amount
/// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
- #[weight = 0]
+ #[weight = T::WeightInfo::transfer()]
pub fn transfer(origin, recipient: T::AccountId, collection_id: u64, item_id: u64, value: u64) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -882,9 +966,9 @@
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)?,
CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, item_id, value, sender.clone(), 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)?,
_ => ()
};
@@ -906,7 +990,7 @@
/// * collection_id.
///
/// * item_id: ID of the item.
- #[weight = 0]
+ #[weight = T::WeightInfo::approve()]
pub fn approve(origin, approved: T::AccountId, collection_id: u64, item_id: u64) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -964,7 +1048,7 @@
/// * item_id: ID of the item.
///
/// * value: Amount to transfer.
- #[weight = 0]
+ #[weight = T::WeightInfo::transfer_from()]
pub fn transfer_from(origin, from: T::AccountId, recipient: T::AccountId, collection_id: u64, item_id: u64, value: u64 ) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -974,8 +1058,11 @@
if <ApprovedList<T>>::contains_key(collection_id, (item_id, from.clone())) {
let list_itm = <ApprovedList<T>>::get(collection_id, (item_id, from.clone()));
let opt_item = list_itm.iter().find(|i| i.approved == sender.clone());
- appoved_transfer = opt_item.is_some();
- ensure!(opt_item.unwrap().amount >= value, "Requested value more than approved");
+ if opt_item.is_some()
+ {
+ appoved_transfer = true;
+ ensure!(opt_item.unwrap().amount >= value, "Requested value more than approved");
+ }
}
// Transfer permissions check
@@ -996,9 +1083,9 @@
match target_collection.mode
{
- CollectionMode::NFT(_) => Self::transfer_nft(collection_id, item_id, from, recipient)?,
+ CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, from, recipient)?,
CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, item_id, value, from.clone(), recipient)?,
- CollectionMode::ReFungible(_, _) => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,
+ CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,
_ => ()
};
@@ -1033,7 +1120,49 @@
/// * collection_id.
///
/// * schema: String representing the offchain data schema.
- #[weight = 0]
+ #[weight = T::WeightInfo::set_variable_meta_data()]
+ pub fn set_variable_meta_data (
+ origin,
+ collection_id: u64,
+ item_id: u64,
+ data: Vec<u8>
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+
+ Self::collection_exists(collection_id)?;
+
+ // Modify permissions check
+ let target_collection = <Collection<T>>::get(collection_id);
+ ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||
+ Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
+ "Only item owner, collection owner and admins can modify item");
+
+ Self::item_exists(collection_id, item_id, &target_collection.mode)?;
+
+ match target_collection.mode
+ {
+ CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,
+ CollectionMode::ReFungible(_) => Self::set_re_fungible_variable_data(collection_id, item_id, data)?,
+ _ => ()
+ };
+
+ Ok(())
+ }
+
+
+ /// Set off-chain data schema.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: String representing the offchain data schema.
+ #[weight = T::WeightInfo::set_offchain_schema()]
pub fn set_offchain_schema(
origin,
collection_id: u64,
@@ -1049,6 +1178,62 @@
Ok(())
}
+ /// Set const on-chain data schema.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: String representing the const on-chain data schema.
+ #[weight = T::WeightInfo::set_const_on_chain_schema()]
+ pub fn set_const_on_chain_schema (
+ origin,
+ collection_id: u64,
+ schema: Vec<u8>
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;
+
+ let mut target_collection = <Collection<T>>::get(collection_id);
+ target_collection.const_on_chain_schema = schema;
+ <Collection<T>>::insert(collection_id, target_collection);
+
+ Ok(())
+ }
+
+ /// Set variable on-chain data schema.
+ ///
+ /// # Permissions
+ ///
+ /// * Collection Owner
+ /// * Collection Admin
+ ///
+ /// # Arguments
+ ///
+ /// * collection_id.
+ ///
+ /// * schema: String representing the variable on-chain data schema.
+ #[weight = T::WeightInfo::set_const_on_chain_schema()]
+ pub fn set_variable_on_chain_schema (
+ origin,
+ collection_id: u64,
+ schema: Vec<u8>
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;
+
+ let mut target_collection = <Collection<T>>::get(collection_id);
+ target_collection.variable_on_chain_schema = schema;
+ <Collection<T>>::insert(collection_id, target_collection);
+
+ Ok(())
+ }
+
// Sudo permissions function
#[weight = 0]
pub fn set_chain_limits(
@@ -1058,7 +1243,37 @@
ensure_root(origin)?;
<ChainLimit>::put(limits);
Ok(())
- }
+ }
+
+ /// Enable smart contract self-sponsoring.
+ ///
+ /// # Permissions
+ ///
+ /// * Contract Owner
+ ///
+ /// # Arguments
+ ///
+ /// * contract address
+ /// * enable flag
+ ///
+ #[weight = 0]
+ pub fn enable_contract_sponsoring(
+ origin,
+ contract_address: T::AccountId,
+ enable: bool
+ ) -> DispatchResult {
+ let sender = ensure_signed(origin)?;
+ let mut is_owner = false;
+ if <ContractOwner<T>>::contains_key(contract_address.clone()) {
+ let owner = <ContractOwner<T>>::get(&contract_address);
+ is_owner = sender == owner;
+ }
+ ensure!(is_owner, "Only contract owner may call this method");
+
+ <ContractSelfSponsoring<T>>::insert(contract_address, enable);
+ Ok(())
+ }
+
}
}
@@ -1356,13 +1571,13 @@
let target_collection = <Collection<T>>::get(collection_id);
match target_collection.mode {
- CollectionMode::NFT(_) => {
+ CollectionMode::NFT => {
<NftItemList<T>>::get(collection_id, item_id).owner == subject
}
CollectionMode::Fungible(_) => {
<FungibleItemList<T>>::get(collection_id, item_id).owner == subject
}
- CollectionMode::ReFungible(_, _) => {
+ CollectionMode::ReFungible(_) => {
<ReFungibleItemList<T>>::get(collection_id, item_id)
.owner
.iter()
@@ -1597,7 +1812,50 @@
<ApprovedList<T>>::remove(collection_id, (item_id, old_owner));
Ok(())
}
+
+ fn item_exists(
+ collection_id: u64,
+ item_id: u64,
+ mode: &CollectionMode
+ ) -> DispatchResult {
+ match mode {
+ CollectionMode::NFT => ensure!(<NftItemList<T>>::contains_key(collection_id, item_id), "Item does not exists"),
+ CollectionMode::ReFungible(_) => ensure!(<ReFungibleItemList<T>>::contains_key(collection_id, item_id), "Item does not exists"),
+ CollectionMode::Fungible(_) => ensure!(<FungibleItemList<T>>::contains_key(collection_id, item_id), "Item does not exists"),
+ _ => ()
+ };
+
+ Ok(())
+ }
+
+ fn set_re_fungible_variable_data(
+ collection_id: u64,
+ item_id: u64,
+ data: Vec<u8>
+ ) -> DispatchResult {
+ let mut item = <ReFungibleItemList<T>>::get(collection_id, item_id);
+
+ item.variable_data = data;
+ <ReFungibleItemList<T>>::insert(collection_id, item_id, item);
+
+ Ok(())
+ }
+
+ fn set_nft_variable_data(
+ collection_id: u64,
+ item_id: u64,
+ data: Vec<u8>
+ ) -> DispatchResult {
+ let mut item = <NftItemList<T>>::get(collection_id, item_id);
+
+ item.variable_data = data;
+
+ <NftItemList<T>>::insert(collection_id, item_id, item);
+
+ Ok(())
+ }
+
fn init_collection(item: &CollectionType<T::AccountId>) {
// check params
assert!(
@@ -1771,11 +2029,11 @@
/// Require the transactor pay for themselves and maybe include a tip to gain additional priority
/// in the queue.
#[derive(Encode, Decode, Clone, Eq, PartialEq)]
-pub struct ChargeTransactionPayment<T: transaction_payment::Trait + Send + Sync>(
- #[codec(compact)] BalanceOf<T>,
+pub struct ChargeTransactionPayment<T: Trait + Send + Sync>(
+ #[codec(compact)] BalanceOf<T>
);
-impl<T: Trait + transaction_payment::Trait + Send + Sync> sp_std::fmt::Debug
+impl<T: Trait + Send + Sync> sp_std::fmt::Debug
for ChargeTransactionPayment<T>
{
#[cfg(feature = "std")]
@@ -1788,10 +2046,9 @@
}
}
-impl<T: Trait + transaction_payment::Trait + Send + Sync> ChargeTransactionPayment<T>
+impl<T: Trait + Send + Sync> ChargeTransactionPayment<T>
where
- T::Call:
- Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + IsSubType<Module<T>, T>,
+ T::Call: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + IsSubType<Call<T>> + IsSubType<pallet_contracts::Call<T>>,
BalanceOf<T>: Send + Sync + FixedPointOperand,
{
/// utility constructor. Used only in client/factory code.
@@ -1821,15 +2078,16 @@
// Set fee based on call type. Creating collection costs 1 Unique.
// All other transactions have traditional fees so far
- let fee = match call.is_sub_type() {
- Some(Call::create_collection(..)) => <BalanceOf<T>>::from(1_000_000_000),
- _ => Self::traditional_fee(len, info, tip), // Flat fee model, use only for testing purposes
- // _ => <BalanceOf<T>>::from(100)
- };
+ // let fee = match call.is_sub_type() {
+ // Some(Call::create_collection(..)) => <BalanceOf<T>>::from(1_000_000_000),
+ // _ => Self::traditional_fee(len, info, tip), // Flat fee model, use only for testing purposes
+ // // _ => <BalanceOf<T>>::from(100)
+ // };
+ let fee = Self::traditional_fee(len, info, tip);
// Determine who is paying transaction fee based on ecnomic model
// Parse call to extract collection ID and access collection sponsor
- let sponsor: T::AccountId = match call.is_sub_type() {
+ let mut sponsor: T::AccountId = match IsSubType::<Call<T>>::is_sub_type(call) {
Some(Call::create_item(collection_id, _properties, _owner)) => {
<Collection<T>>::get(collection_id).sponsor
}
@@ -1838,7 +2096,7 @@
// sponsor timeout
let sponsor_transfer = match _collection_mode {
- CollectionMode::NFT(_) => {
+ CollectionMode::NFT => {
let basket = <NftTransferBasket<T>>::get(collection_id, _item_id);
let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
let limit_time = basket + ChainLimit::get().nft_sponsor_transfer_timeout.into();
@@ -1872,7 +2130,7 @@
true
}
}
- CollectionMode::ReFungible(_, _) => {
+ CollectionMode::ReFungible(_) => {
let basket = <ReFungibleTransferBasket<T>>::get(collection_id, _item_id);
let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
let limit_time = basket + ChainLimit::get().nft_sponsor_transfer_timeout.into();
@@ -1898,6 +2156,39 @@
_ => T::AccountId::default(),
};
+ // Sponsor smart contracts
+ sponsor = match IsSubType::<pallet_contracts::Call<T>>::is_sub_type(call) {
+
+ // On instantiation: set the contract owner
+ Some(pallet_contracts::Call::instantiate(_endowment, _gas_limit, code_hash, data)) => {
+
+ let new_contract_address = <T as pallet_contracts::Trait>::DetermineContractAddress::contract_address_for(
+ code_hash,
+ &data,
+ &who,
+ );
+ <ContractOwner<T>>::insert(new_contract_address.clone(), who.clone());
+
+ T::AccountId::default()
+ },
+
+ // When the contract is called, check if the sponsoring is enabled and pay fees from contract endowment if it is
+ Some(pallet_contracts::Call::call(dest, _value, _gas_limit, _data)) => {
+
+ let mut sp = T::AccountId::default();
+ let called_contract: T::AccountId = T::Lookup::lookup((*dest).clone()).unwrap_or(T::AccountId::default());
+ if <ContractSelfSponsoring<T>>::contains_key(called_contract.clone()) {
+ if <ContractSelfSponsoring<T>>::get(called_contract.clone()) {
+ sp = called_contract;
+ }
+ }
+
+ sp
+ },
+
+ _ => sponsor,
+ };
+
let mut who_pays_fee: T::AccountId = sponsor.clone();
if sponsor == T::AccountId::default() {
who_pays_fee = who.clone();
@@ -1924,12 +2215,12 @@
}
}
-impl<T: Trait + transaction_payment::Trait + Send + Sync> SignedExtension
+
+impl<T: Trait + Send + Sync> SignedExtension
for ChargeTransactionPayment<T>
where
BalanceOf<T>: Send + Sync + From<u64> + FixedPointOperand,
- T::Call:
- Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + IsSubType<Module<T>, T>,
+ T::Call: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + IsSubType<Call<T>> + IsSubType<pallet_contracts::Call<T>>,
{
const IDENTIFIER: &'static str = "ChargeTransactionPayment";
type AccountId = T::AccountId;
@@ -1947,18 +2238,12 @@
fn validate(
&self,
- who: &Self::AccountId,
- call: &Self::Call,
- info: &DispatchInfoOf<Self::Call>,
- len: usize,
+ _who: &Self::AccountId,
+ _call: &Self::Call,
+ _info: &DispatchInfoOf<Self::Call>,
+ _len: usize,
) -> TransactionValidity {
- let (fee, _) = self.withdraw_fee(who, call, info, len)?;
-
- let mut r = ValidTransaction::default();
- // NOTE: we probably want to maximize the _fee (of any type) per weight unit_ here, which
- // will be a bit more than setting the priority to tip. For now, this is enough.
- r.priority = fee.saturated_into::<TransactionPriority>();
- Ok(r)
+ Ok(ValidTransaction::default())
}
fn pre_dispatch(
@@ -2009,4 +2294,5 @@
Ok(())
}
}
+
// #endregion
pallets/nft/src/mock.rsdiffbeforeafterboth--- a/pallets/nft/src/mock.rs
+++ b/pallets/nft/src/mock.rs
@@ -1,20 +1,27 @@
// Creating mock runtime here
use crate::{Module, Trait};
+
+use pallet_contracts::{
+ ContractAddressFor, TrieId, TrieIdGenerator,
+};
+
use frame_support::{
impl_outer_origin, parameter_types,
weights::{
- constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight},
- Weight,
+ // constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight},
+ Weight, IdentityFee,
},
};
use frame_system as system;
+use transaction_payment;
use sp_core::H256;
use sp_runtime::{
testing::Header,
traits::{BlakeTwo256, IdentityLookup, Saturating},
Perbill,
};
+pub use pallet_balances;
impl_outer_origin! {
pub enum Origin for Test {}
@@ -35,33 +42,122 @@
}
impl system::Trait for Test {
- type Origin = Origin;
- type Call = ();
- type Index = u64;
- type BlockNumber = u64;
- type Hash = H256;
- type Hashing = BlakeTwo256;
- type AccountId = u64;
- type Lookup = IdentityLookup<Self::AccountId>;
- type Header = Header;
+ type BaseCallFilter = ();
+ type Origin = Origin;
+ type Call = ();
+ type Index = u64;
+ type BlockNumber = u64;
+ type Hash = H256;
+ type Hashing = BlakeTwo256;
+ type AccountId = u64;
+ type Lookup = IdentityLookup<Self::AccountId>;
+ type Header = Header;
+ type Event = ();
+ type BlockHashCount = BlockHashCount;
+ type MaximumBlockWeight = MaximumBlockWeight;
+ type DbWeight = ();
+ type BlockExecutionWeight = ();
+ type ExtrinsicBaseWeight = ();
+ type MaximumExtrinsicWeight = MaximumBlockWeight;
+ type MaximumBlockLength = MaximumBlockLength;
+ type AvailableBlockRatio = AvailableBlockRatio;
+ type Version = ();
+ type PalletInfo = ();
+ type AccountData = pallet_balances::AccountData<u64>;
+ type OnNewAccount = ();
+ type OnKilledAccount = ();
+ type SystemWeightInfo = ();
+}
+
+parameter_types! {
+ pub const ExistentialDeposit: u64 = 1;
+ pub const MaxLocks: u32 = 50;
+}
+
+type System = frame_system::Module<Test>;
+impl pallet_balances::Trait for Test {
+ type AccountStore = System;
+ type Balance = u64;
+ type DustRemoval = ();
type Event = ();
- type BlockHashCount = BlockHashCount;
- type MaximumBlockWeight = MaximumBlockWeight;
- type MaximumBlockLength = MaximumBlockLength;
- type AvailableBlockRatio = AvailableBlockRatio;
- type BaseCallFilter = ();
- type DbWeight = RocksDbWeight;
- type BlockExecutionWeight = BlockExecutionWeight;
- type ExtrinsicBaseWeight = ExtrinsicBaseWeight;
- type MaximumExtrinsicWeight = MaximumExtrinsicWeight;
- type Version = ();
- type ModuleToIndex = ();
- type AccountData = ();
- type OnNewAccount = ();
- type OnKilledAccount = ();
+ type ExistentialDeposit = ExistentialDeposit;
+ type WeightInfo = ();
+ type MaxLocks = MaxLocks;
+}
+
+parameter_types! {
+ pub const TransactionByteFee: u64 = 1;
+}
+impl transaction_payment::Trait for Test {
+ type Currency = pallet_balances::Module<Test>;
+ type OnTransactionPayment = ();
+ type TransactionByteFee = TransactionByteFee;
+ type WeightToFee = IdentityFee<u64>;
+ type FeeMultiplierUpdate = ();
+}
+
+
+parameter_types! {
+ pub const MinimumPeriod: u64 = 1;
+}
+impl pallet_timestamp::Trait for Test {
+ type Moment = u64;
+ type OnTimestampSet = ();
+ type MinimumPeriod = MinimumPeriod;
+ type WeightInfo = ();
+}
+
+type Timestamp = pallet_timestamp::Module<Test>;
+type Randomness = pallet_randomness_collective_flip::Module<Test>;
+
+parameter_types! {
+ pub const TombstoneDeposit: u64 = 1;
+ pub const RentByteFee: u64 = 1;
+ pub const RentDepositOffset: u64 = 1;
+ pub const SurchargeReward: u64 = 1;
+}
+
+pub struct DummyTrieIdGenerator;
+impl TrieIdGenerator<u64> for DummyTrieIdGenerator {
+ fn trie_id(account_id: &u64) -> TrieId {
+ let new_seed = *account_id + 1;
+ let mut res = vec![];
+ res.extend_from_slice(&new_seed.to_le_bytes());
+ res.extend_from_slice(&account_id.to_le_bytes());
+ res
+ }
+}
+
+pub struct DummyContractAddressFor;
+impl ContractAddressFor<H256, u64> for DummyContractAddressFor {
+ fn contract_address_for(_code_hash: &H256, _data: &[u8], origin: &u64) -> u64 {
+ *origin + 1
+ }
+}
+
+impl pallet_contracts::Trait for Test {
+ type Time = Timestamp;
+ type Randomness = Randomness;
+ type Currency = pallet_balances::Module<Test>;
+ type Event = ();
+ type DetermineContractAddress = DummyContractAddressFor;
+ type TrieIdGenerator = DummyTrieIdGenerator;
+ type RentPayment = ();
+ type SignedClaimHandicap = pallet_contracts::DefaultSignedClaimHandicap;
+ type TombstoneDeposit = TombstoneDeposit;
+ type StorageSizeOffset = pallet_contracts::DefaultStorageSizeOffset;
+ type RentByteFee = RentByteFee;
+ type RentDepositOffset = RentDepositOffset;
+ type SurchargeReward = SurchargeReward;
+ type MaxDepth = pallet_contracts::DefaultMaxDepth;
+ type MaxValueSize = pallet_contracts::DefaultMaxValueSize;
+ type WeightPrice = ();
}
+
impl Trait for Test {
- type Event = ();
+ type Event = ();
+ type WeightInfo = ();
+
}
pub type TemplateModule = Module<Test>;
pallets/nft/src/tests.rsdiffbeforeafterboth--- a/pallets/nft/src/tests.rs
+++ b/pallets/nft/src/tests.rs
@@ -1,21 +1,16 @@
// Tests to be written here
use crate::mock::*;
-use crate::{AccessMode, ApprovePermissions, CollectionMode, Ownership, ChainLimits};
+use crate::{AccessMode, ApprovePermissions, CollectionMode, Ownership, ChainLimits, CreateItemData, CreateNftData, CreateFungibleData, CreateReFungibleData};
use frame_support::{assert_noop, assert_ok};
use frame_system::{ RawOrigin };
-// Use cases tests region
-// #region
-#[test]
-fn create_nft_item() {
- new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+fn default_collection_numbers_limit() -> u64 {
+ 10
+}
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
+fn default_limits() {
+ assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
+ collection_numbers_limit: default_collection_numbers_limit(),
account_token_ownership_limit: 10,
collections_admins_limit: 5,
custom_data_limit: 2048,
@@ -23,24 +18,72 @@
fungible_sponsor_transfer_timeout: 15,
refungible_sponsor_transfer_timeout: 15,
}));
+}
+
+fn default_nft_data() -> CreateNftData {
+ CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] }
+}
+
+fn default_fungible_data () -> CreateFungibleData {
+ CreateFungibleData { }
+}
+
+fn default_re_fungible_data () -> CreateReFungibleData {
+ CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] }
+}
+
+fn create_test_collection_for_owner(mode: &CollectionMode, owner: u64, id: u64) -> u64 {
+ let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
+ let origin1 = Origin::signed(owner);
+ assert_ok!(TemplateModule::create_collection(
origin1.clone(),
col_name1.clone(),
col_desc1.clone(),
token_prefix1.clone(),
- mode
+ mode.clone()
));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
+ let saved_col_name: Vec<u16> = "Test1\0\0".encode_utf16().collect::<Vec<u16>>();
+ let saved_description: Vec<u16> = "TestDescription1\0\0".encode_utf16().collect::<Vec<u16>>();
+ let saved_prefix: Vec<u8> = b"token_prefix1\0\0".to_vec();
+ assert_eq!(TemplateModule::collection(id).owner, owner);
+ assert_eq!(TemplateModule::collection(id).name, saved_col_name);
+ assert_eq!(TemplateModule::collection(id).mode, *mode);
+ assert_eq!(TemplateModule::collection(id).description, saved_description);
+ assert_eq!(TemplateModule::collection(id).token_prefix, saved_prefix);
+ id
+}
+
+fn create_test_collection(mode: &CollectionMode, id: u64) -> u64 {
+ create_test_collection_for_owner(&mode, 1, id)
+}
+
+fn create_test_item(collection_id: u64, data: &CreateItemData) {
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::create_item(
origin1.clone(),
+ collection_id,
1,
- [1, 2, 3].to_vec(),
- 1
+ data.clone()
));
- assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
+
+}
+
+// Use cases tests region
+// #region
+#[test]
+fn create_nft_item() {
+ new_test_ext().execute_with(|| {
+ default_limits();
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
+ assert_eq!(TemplateModule::nft_item_id(collection_id, 1).const_data, data.const_data);
+ assert_eq!(TemplateModule::nft_item_id(collection_id, 1).variable_data, data.variable_data);
});
}
@@ -91,43 +134,21 @@
#[test]
fn create_refungible_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);
+ default_limits();
+ let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.clone().into());
+ assert_eq!(
+ TemplateModule::refungible_item_id(collection_id, 1).const_data,
+ data.const_data
+ );
assert_eq!(
- TemplateModule::refungible_item_id(1, 1).data,
- [1, 2, 3].to_vec()
+ TemplateModule::refungible_item_id(collection_id, 1).variable_data,
+ data.variable_data
);
assert_eq!(
- TemplateModule::refungible_item_id(1, 1).owner[0],
+ TemplateModule::refungible_item_id(collection_id, 1).owner[0],
Ownership {
owner: 1,
fraction: 1000
@@ -190,38 +211,14 @@
#[test]
fn create_fungible_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::Fungible(3);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [].to_vec(),
- 1
- ));
- assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);
+ assert_eq!(TemplateModule::fungible_item_id(collection_id, 1).owner, 1);
});
}
@@ -273,38 +270,16 @@
#[test]
fn transfer_fungible_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::Fungible(3);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [].to_vec(),
- 1
- ));
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
+
assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);
assert_eq!(TemplateModule::balance_count(1, 1), 1000);
assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
@@ -315,7 +290,7 @@
assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 1000);
assert_eq!(TemplateModule::balance_count(1, 1), 0);
assert_eq!(TemplateModule::balance_count(1, 2), 1000);
- assert_eq!(TemplateModule::address_tokens(1, 1), []);
+ // assert_eq!(TemplateModule::address_tokens(1, 1), []);
assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
// split item scenario
@@ -341,44 +316,25 @@
#[test]
fn transfer_refungible_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.clone().into());
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
assert_eq!(
- TemplateModule::refungible_item_id(1, 1).data,
- [1, 2, 3].to_vec()
+ TemplateModule::refungible_item_id(collection_id, 1).const_data,
+ data.const_data
+ );
+ assert_eq!(
+ TemplateModule::refungible_item_id(collection_id, 1).variable_data,
+ data.variable_data
);
assert_eq!(
- TemplateModule::refungible_item_id(1, 1).owner[0],
+ TemplateModule::refungible_item_id(collection_id, 1).owner[0],
Ownership {
owner: 1,
fraction: 1000
@@ -398,7 +354,7 @@
);
assert_eq!(TemplateModule::balance_count(1, 1), 0);
assert_eq!(TemplateModule::balance_count(1, 2), 1000);
- assert_eq!(TemplateModule::address_tokens(1, 1), []);
+ // assert_eq!(TemplateModule::address_tokens(1, 1), []);
assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
// split item scenario
@@ -448,47 +404,22 @@
#[test]
fn transfer_nft_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
- assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
assert_eq!(TemplateModule::balance_count(1, 1), 1);
assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+ let origin1 = Origin::signed(1);
// default scenario
assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));
assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 2);
assert_eq!(TemplateModule::balance_count(1, 1), 0);
assert_eq!(TemplateModule::balance_count(1, 2), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), []);
+ // assert_eq!(TemplateModule::address_tokens(1, 1), []);
assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
});
}
@@ -496,39 +427,65 @@
#[test]
fn nft_approve_and_transfer_from() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
+ assert_eq!(TemplateModule::balance_count(1, 1), 1);
+ assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+
+ // neg transfer
+ assert_noop!(TemplateModule::transfer_from(
+ origin2.clone(),
1,
- [1, 2, 3].to_vec(),
+ 2,
+ 1,
+ 1,
+ 1), "Only item owner, collection owner and admins can modify items");
+
+ // do approve
+ assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
+ assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);
+ assert_eq!(
+ TemplateModule::approved(1, (1, 1))[0],
+ ApprovePermissions {
+ approved: 2,
+ amount: 100000000
+ }
+ );
+
+ assert_ok!(TemplateModule::transfer_from(
+ origin2.clone(),
+ 1,
+ 2,
+ 1,
+ 1,
1
));
- assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
+ assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 0);
+ });
+}
+
+#[test]
+fn nft_approve_and_transfer_from_white_list() {
+ new_test_ext().execute_with(|| {
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
+
+ assert_eq!(TemplateModule::nft_item_id(1, 1).const_data, data.const_data);
assert_eq!(TemplateModule::balance_count(1, 1), 1);
assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
@@ -574,49 +531,16 @@
#[test]
fn refungible_approve_and_transfer_from() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
+
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
- assert_eq!(
- TemplateModule::refungible_item_id(1, 1).data,
- [1, 2, 3].to_vec()
- );
- assert_eq!(
- TemplateModule::refungible_item_id(1, 1).owner[0],
- Ownership {
- owner: 1,
- fraction: 1000
- }
- );
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.into());
+
assert_eq!(TemplateModule::balance_count(1, 1), 1000);
assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
@@ -674,39 +598,16 @@
#[test]
fn fungible_approve_and_transfer_from() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::Fungible(3);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [].to_vec(),
- 1
- ));
- assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);
assert_eq!(TemplateModule::balance_count(1, 1), 1000);
assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
@@ -770,7 +671,7 @@
));
assert_eq!(TemplateModule::balance_count(1, 1), 0);
assert_eq!(TemplateModule::balance_count(1, 3), 1000);
- assert_eq!(TemplateModule::address_tokens(1, 1), []);
+ // assert_eq!(TemplateModule::address_tokens(1, 1), []);
assert_eq!(TemplateModule::address_tokens(1, 3), [2]);
assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 0);
@@ -780,103 +681,44 @@
#[test]
fn change_collection_owner() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::change_collection_owner(
origin1.clone(),
- 1,
+ collection_id,
2
));
- assert_eq!(TemplateModule::collection(1).owner, 2);
+ assert_eq!(TemplateModule::collection(collection_id).owner, 2);
});
}
#[test]
fn destroy_collection() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));
+ assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id));
});
}
#[test]
fn burn_nft_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
-
- assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
// check balance (collection with id = 1, user id = 1)
assert_eq!(TemplateModule::balance_count(1, 1), 1);
@@ -895,36 +737,15 @@
#[test]
fn burn_fungible_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::Fungible(3);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
+
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [].to_vec(),
- 1
- ));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
+
+ let data = default_fungible_data();
+ create_test_item(collection_id, &data.into());
// check balance (collection with id = 1, user id = 1)
assert_eq!(TemplateModule::balance_count(1, 1), 1000);
@@ -943,55 +764,27 @@
#[test]
fn burn_refungible_item() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(200, 3);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
true
));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));
assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::create_item(
- origin2.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
-
- assert_eq!(
- TemplateModule::refungible_item_id(1, 1).data,
- [1, 2, 3].to_vec()
- );
+
+ let data = default_re_fungible_data();
+ create_test_item(collection_id, &data.into());
// check balance (collection with id = 1, user id = 2)
assert_eq!(TemplateModule::balance_count(1, 1), 1000);
@@ -1010,110 +803,38 @@
#[test]
fn add_collection_admin() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
+ create_test_collection_for_owner(&CollectionMode::NFT, 2, 2);
+ create_test_collection_for_owner(&CollectionMode::NFT, 3, 3);
+
let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
- let origin3 = Origin::signed(3);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode.clone()
- ));
- assert_ok!(TemplateModule::create_collection(
- origin2.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode.clone()
- ));
- assert_ok!(TemplateModule::create_collection(
- origin3.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode.clone()
- ));
-
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_eq!(TemplateModule::collection(2).owner, 2);
- assert_eq!(TemplateModule::collection(3).owner, 3);
// collection admin
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 2));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 3));
- assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);
- assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);
+ assert_eq!(TemplateModule::admin_list_collection(collection1_id).contains(&2), true);
+ assert_eq!(TemplateModule::admin_list_collection(collection1_id).contains(&3), true);
});
}
#[test]
fn remove_collection_admin() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
+ create_test_collection_for_owner(&CollectionMode::NFT, 2, 2);
+ create_test_collection_for_owner(&CollectionMode::NFT, 3, 3);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- let origin3 = Origin::signed(3);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode.clone()
- ));
- assert_ok!(TemplateModule::create_collection(
- origin2.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode.clone()
- ));
- assert_ok!(TemplateModule::create_collection(
- origin3.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode.clone()
- ));
-
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_eq!(TemplateModule::collection(2).owner, 2);
- assert_eq!(TemplateModule::collection(3).owner, 3);
-
// collection admin
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 2));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 3));
assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);
assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);
@@ -1131,125 +852,48 @@
#[test]
fn balance_of() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let nft_mode: CollectionMode = CollectionMode::NFT(2000);
- let furg_mode: CollectionMode = CollectionMode::Fungible(3);
- let refung_mode: CollectionMode = CollectionMode::ReFungible(2000, 3);
-
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- nft_mode.clone()
- ));
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- furg_mode.clone()
- ));
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- refung_mode.clone()
- ));
-
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_eq!(TemplateModule::collection(2).owner, 1);
- assert_eq!(TemplateModule::collection(3).owner, 1);
-
+ default_limits();
+
+ let nft_collection_id = create_test_collection(&CollectionMode::NFT, 1);
+ let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3), 2);
+ let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible(3), 3);
+
// check balance before
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- assert_eq!(TemplateModule::balance_count(2, 1), 0);
- assert_eq!(TemplateModule::balance_count(3, 1), 0);
-
- // create item
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 1, 1].to_vec(),
- 1
- ));
+ assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 0);
+ assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 0);
+ assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 0);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 2,
- [].to_vec(),
- 1
- ));
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 3,
- [1, 1, 1].to_vec(),
- 1
- ));
+ let nft_data = default_nft_data();
+ create_test_item(nft_collection_id, &nft_data.into());
+
+ let fungible_data = default_fungible_data();
+ create_test_item(fungible_collection_id, &fungible_data.into());
+
+ let re_fungible_data = default_re_fungible_data();
+ create_test_item(re_fungible_collection_id, &re_fungible_data.into());
// check balance (collection with id = 1, user id = 1)
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::balance_count(2, 1), 1000);
- assert_eq!(TemplateModule::balance_count(3, 1), 1000);
- assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 1);
- assert_eq!(TemplateModule::fungible_item_id(2, 1).owner, 1);
- assert_eq!(TemplateModule::refungible_item_id(3, 1).owner[0].owner, 1);
+ assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);
+ assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 1000);
+ assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1000);
+ assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).owner, 1);
+ assert_eq!(TemplateModule::fungible_item_id(fungible_collection_id, 1).owner, 1);
+ assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).owner[0].owner, 1);
});
}
#[test]
fn approve() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let nft_mode: CollectionMode = CollectionMode::NFT(2000);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- nft_mode.clone()
- ));
-
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- // create item
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 1, 1].to_vec(),
- 1
- ));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ let origin1 = Origin::signed(1);
+
// approve
assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
assert_eq!(TemplateModule::approved(1, (1, 1))[0].approved, 2);
@@ -1259,40 +903,14 @@
#[test]
fn transfer_from() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- // create item
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 1, 1].to_vec(),
- 1
- ));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
// approve
assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
@@ -1335,99 +953,41 @@
#[test]
fn owner_can_add_address_to_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
- assert_eq!(TemplateModule::white_list(1)[0], 2);
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
+ assert_eq!(TemplateModule::white_list(collection_id)[0], 2);
});
}
#[test]
fn admin_can_add_address_to_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::add_to_white_list(origin2.clone(), 1, 3));
- assert_eq!(TemplateModule::white_list(1)[0], 3);
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin2.clone(), collection_id, 3));
+ assert_eq!(TemplateModule::white_list(collection_id)[0], 3);
});
}
#[test]
fn nonprivileged_user_cannot_add_address_to_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+ let origin2 = Origin::signed(2);
assert_noop!(
- TemplateModule::add_to_white_list(origin2.clone(), 1, 3),
+ TemplateModule::add_to_white_list(origin2.clone(), collection_id, 3),
"You do not have permissions to modify this collection"
);
});
@@ -1436,17 +996,9 @@
#[test]
fn nobody_can_add_address_to_white_list_of_nonexisting_collection() {
new_test_ext().execute_with(|| {
+ default_limits();
+
let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
assert_noop!(
TemplateModule::add_to_white_list(origin1.clone(), 1, 2),
@@ -1458,33 +1010,14 @@
#[test]
fn nobody_can_add_address_to_white_list_of_deleted_collection() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id));
assert_noop!(
- TemplateModule::add_to_white_list(origin1.clone(), 1, 2),
+ TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2),
"This collection does not exist"
);
});
@@ -1494,166 +1027,81 @@
#[test]
fn address_is_already_added_to_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
- assert_eq!(TemplateModule::white_list(1)[0], 2);
- assert_eq!(TemplateModule::white_list(1).len(), 1);
+
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
+ assert_eq!(TemplateModule::white_list(collection_id)[0], 2);
+ assert_eq!(TemplateModule::white_list(collection_id).len(), 1);
});
}
#[test]
fn owner_can_remove_address_from_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
- let origin1 = Origin::signed(1);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
assert_ok!(TemplateModule::remove_from_white_list(
origin1.clone(),
- 1,
+ collection_id,
2
));
- assert_eq!(TemplateModule::white_list(1).len(), 0);
+ assert_eq!(TemplateModule::white_list(collection_id).len(), 0);
});
}
#[test]
fn admin_can_remove_address_from_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 3));
assert_ok!(TemplateModule::remove_from_white_list(
origin2.clone(),
- 1,
+ collection_id,
3
));
- assert_eq!(TemplateModule::white_list(1).len(), 0);
+ assert_eq!(TemplateModule::white_list(collection_id).len(), 0);
});
}
#[test]
fn nonprivileged_user_cannot_remove_address_from_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
assert_noop!(
- TemplateModule::remove_from_white_list(origin2.clone(), 1, 2),
+ TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2),
"You do not have permissions to modify this collection"
);
- assert_eq!(TemplateModule::white_list(1)[0], 2);
+ assert_eq!(TemplateModule::white_list(collection_id)[0], 2);
});
}
#[test]
fn nobody_can_remove_address_from_white_list_of_nonexisting_collection() {
new_test_ext().execute_with(|| {
+ default_limits();
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
assert_noop!(
TemplateModule::remove_from_white_list(origin1.clone(), 1, 2),
"This collection does not exist"
@@ -1664,38 +1112,19 @@
#[test]
fn nobody_can_remove_address_from_white_list_of_deleted_collection() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
+ assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id));
assert_noop!(
- TemplateModule::remove_from_white_list(origin2.clone(), 1, 2),
+ TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2),
"This collection does not exist"
);
- assert_eq!(TemplateModule::white_list(1).len(), 0);
+ assert_eq!(TemplateModule::white_list(collection_id).len(), 0);
});
}
@@ -1703,42 +1132,23 @@
#[test]
fn address_is_already_removed_from_white_list() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
assert_ok!(TemplateModule::remove_from_white_list(
origin1.clone(),
- 1,
+ collection_id,
2
));
assert_ok!(TemplateModule::remove_from_white_list(
origin1.clone(),
- 1,
+ collection_id,
2
));
- assert_eq!(TemplateModule::white_list(1).len(), 0);
+ assert_eq!(TemplateModule::white_list(collection_id).len(), 0);
});
}
@@ -1746,44 +1156,21 @@
#[test]
fn white_list_test_1() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
assert_noop!(
TemplateModule::transfer(origin1.clone(), 3, 1, 1, 1),
@@ -1795,41 +1182,17 @@
#[test]
fn white_list_test_2() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));
@@ -1856,41 +1219,18 @@
#[test]
fn white_list_test_3() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
+
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
-
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));
@@ -1905,45 +1245,22 @@
#[test]
fn white_list_test_4() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 1));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
// do approve
assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1));
@@ -1951,7 +1268,7 @@
assert_ok!(TemplateModule::remove_from_white_list(
origin1.clone(),
- 1,
+ collection_id,
2
));
@@ -1966,41 +1283,18 @@
#[test]
fn white_list_test_5() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_noop!(
@@ -2014,32 +1308,14 @@
#[test]
fn white_list_test_6() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
@@ -2056,45 +1332,22 @@
#[test]
fn white_list_test_7() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
-
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 1));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1));
});
@@ -2103,45 +1356,22 @@
#[test]
fn white_list_test_8() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_eq!(TemplateModule::collection(1).owner, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
-
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 1));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
// do approve
assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1));
@@ -2162,47 +1392,24 @@
#[test]
fn white_list_test_9() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
false
));
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
});
}
@@ -2210,49 +1417,31 @@
#[test]
fn white_list_test_10() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
false
));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
assert_ok!(TemplateModule::create_item(
origin2.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 2
+ collection_id,
+ 2,
+ default_nft_data().into()
));
});
}
@@ -2261,46 +1450,28 @@
#[test]
fn white_list_test_11() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
false
));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
assert_noop!(
- TemplateModule::create_item(origin2.clone(), 1, [1, 2, 3].to_vec(), 2),
- "Collection is not in mint mode"
+ TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()),
+ "Public minting is not allowed for this collection."
);
});
}
@@ -2309,45 +1480,27 @@
#[test]
fn white_list_test_12() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
false
));
assert_noop!(
- TemplateModule::create_item(origin2.clone(), 1, [1, 2, 3].to_vec(), 2),
- "Collection is not in mint mode"
+ TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()),
+ "Public minting is not allowed for this collection."
);
});
}
@@ -2356,47 +1509,25 @@
#[test]
fn white_list_test_13() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
true
));
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
});
}
@@ -2404,49 +1535,31 @@
#[test]
fn white_list_test_14() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
true
));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
assert_ok!(TemplateModule::create_item(
origin2.clone(),
1,
- [1, 2, 3].to_vec(),
- 2
+ 2,
+ default_nft_data().into()
));
});
}
@@ -2455,44 +1568,26 @@
#[test]
fn white_list_test_15() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
true
));
assert_noop!(
- TemplateModule::create_item(origin2.clone(), 1, [1, 2, 3].to_vec(), 2),
+ TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()),
"Address is not in white list"
);
});
@@ -2502,48 +1597,30 @@
#[test]
fn white_list_test_16() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
assert_ok!(TemplateModule::set_public_access_mode(
origin1.clone(),
- 1,
+ collection_id,
AccessMode::WhiteList
));
assert_ok!(TemplateModule::set_mint_permission(
origin1.clone(),
- 1,
+ collection_id,
true
));
- assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));
+ assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
assert_ok!(TemplateModule::create_item(
origin2.clone(),
1,
- [1, 2, 3].to_vec(),
- 2
+ 2,
+ default_nft_data().into()
));
});
}
@@ -2552,29 +1629,9 @@
#[test]
fn total_number_collections_bound() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
+ default_limits();
+
+ create_test_collection(&CollectionMode::NFT, 1);
});
}
@@ -2582,41 +1639,25 @@
#[test]
fn total_number_collections_bound_neg() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
+ default_limits();
let origin1 = Origin::signed(1);
-
- for _ in 0..10 {
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode.clone()
- ));
+ for i in 0..default_collection_numbers_limit() {
+ create_test_collection(&CollectionMode::NFT, i + 1);
}
+ let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
+
// 11-th collection in chain. Expects error
assert_noop!(TemplateModule::create_collection(
origin1.clone(),
col_name1.clone(),
col_desc1.clone(),
token_prefix1.clone(),
- mode.clone()
+ CollectionMode::NFT
), "Total collections bound exceeded");
});
}
@@ -2625,43 +1666,13 @@
#[test]
fn owned_tokens_bound() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
- assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
- collection_numbers_limit: 10,
- account_token_ownership_limit: 10,
- collections_admins_limit: 5,
- custom_data_limit: 2048,
- nft_sponsor_transfer_timeout: 15,
- fungible_sponsor_transfer_timeout: 15,
- refungible_sponsor_transfer_timeout: 15,
- }));
-
- let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
+ create_test_item(collection_id, &data.into());
});
}
@@ -2669,11 +1680,6 @@
#[test]
fn owned_tokens_bound_neg() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
collection_numbers_limit: 10,
account_token_ownership_limit: 1,
@@ -2683,28 +1689,18 @@
fungible_sponsor_transfer_timeout: 15,
refungible_sponsor_transfer_timeout: 15,
}));
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::create_item(
- origin1.clone(),
- 1,
- [1, 2, 3].to_vec(),
- 1
- ));
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.clone().into());
assert_noop!(TemplateModule::create_item(
origin1.clone(),
1,
- [1, 2, 3].to_vec(),
- 1
+ 1,
+ data.into()
), "Owned tokens by a single address bound exceeded");
});
}
@@ -2713,11 +1709,6 @@
#[test]
fn collection_admins_bound() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
collection_numbers_limit: 10,
account_token_ownership_limit: 10,
@@ -2727,18 +1718,13 @@
fungible_sponsor_transfer_timeout: 15,
refungible_sponsor_transfer_timeout: 15,
}));
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
-
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));
+
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 3));
});
}
@@ -2746,11 +1732,6 @@
#[test]
fn collection_admins_bound_neg() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
-
assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
collection_numbers_limit: 10,
account_token_ownership_limit: 1,
@@ -2760,78 +1741,167 @@
fungible_sponsor_transfer_timeout: 15,
refungible_sponsor_transfer_timeout: 15,
}));
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
- origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
- assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
- assert_noop!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3), "Number of collection admins bound exceeded");
+ assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
+ assert_noop!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 3), "Number of collection admins bound exceeded");
});
}
-// Custom data size. Positive test
+// NFT custom data size. Negative test const_data.
#[test]
-fn custom_data_size_bound() {
+fn custom_data_size_nft_const_data_bound_neg() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
+ collection_numbers_limit: 10,
+ account_token_ownership_limit: 10,
+ collections_admins_limit: 5,
+ custom_data_limit: 2,
+ nft_sponsor_transfer_timeout: 15,
+ fungible_sponsor_transfer_timeout: 15,
+ refungible_sponsor_transfer_timeout: 15,
+ }));
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+ let origin1 = Origin::signed(1);
+ let too_big_const_data = CreateItemData::NFT(CreateNftData{
+ const_data: vec![1, 2, 3, 4],
+ variable_data: vec![]
+ });
+
+ assert_noop!(TemplateModule::create_item(
+ origin1.clone(),
+ collection_id,
+ 1,
+ too_big_const_data
+ ), "const_data exceeded data limit.");
+ });
+}
+
+// NFT custom data size. Negative test variable_data.
+#[test]
+fn custom_data_size_nft_variable_data_bound_neg() {
+ new_test_ext().execute_with(|| {
assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
collection_numbers_limit: 10,
account_token_ownership_limit: 10,
collections_admins_limit: 5,
- custom_data_limit: 2048,
+ custom_data_limit: 2,
nft_sponsor_transfer_timeout: 15,
fungible_sponsor_transfer_timeout: 15,
refungible_sponsor_transfer_timeout: 15,
}));
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
let origin1 = Origin::signed(1);
- assert_ok!(TemplateModule::create_collection(
+ let too_big_const_data = CreateItemData::NFT(CreateNftData{
+ const_data: vec![],
+ variable_data: vec![1, 2, 3, 4]
+ });
+
+ assert_noop!(TemplateModule::create_item(
origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ));
+ collection_id,
+ 1,
+ too_big_const_data
+ ), "variable_data exceeded data limit.");
});
}
-// Custom data size. Negotive test
+// Re fungible custom data size. Negative test const_data.
#[test]
-fn custom_data_size_bound_neg() {
+fn custom_data_size_re_fungible_const_data_bound_neg() {
new_test_ext().execute_with(|| {
- let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
- let mode: CollectionMode = CollectionMode::NFT(2000);
+ assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
+ collection_numbers_limit: 10,
+ account_token_ownership_limit: 10,
+ collections_admins_limit: 5,
+ custom_data_limit: 2,
+ nft_sponsor_transfer_timeout: 15,
+ fungible_sponsor_transfer_timeout: 15,
+ refungible_sponsor_transfer_timeout: 15,
+ }));
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
+ let origin1 = Origin::signed(1);
+ let too_big_const_data = CreateItemData::NFT(CreateNftData{
+ const_data: vec![1, 2, 3, 4],
+ variable_data: vec![]
+ });
+
+ assert_noop!(TemplateModule::create_item(
+ origin1.clone(),
+ collection_id,
+ 1,
+ too_big_const_data
+ ), "const_data exceeded data limit.");
+ });
+}
+// Re fungible custom data size. Negative test variable_data.
+#[test]
+fn custom_data_size_re_fungible_variable_data_bound_neg() {
+ new_test_ext().execute_with(|| {
assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits {
collection_numbers_limit: 10,
account_token_ownership_limit: 10,
collections_admins_limit: 5,
- custom_data_limit: 200,
+ custom_data_limit: 2,
nft_sponsor_transfer_timeout: 15,
fungible_sponsor_transfer_timeout: 15,
refungible_sponsor_transfer_timeout: 15,
}));
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
let origin1 = Origin::signed(1);
- assert_noop!(TemplateModule::create_collection(
+ let too_big_const_data = CreateItemData::NFT(CreateNftData{
+ const_data: vec![],
+ variable_data: vec![1, 2, 3, 4]
+ });
+
+ assert_noop!(TemplateModule::create_item(
origin1.clone(),
- col_name1.clone(),
- col_desc1.clone(),
- token_prefix1.clone(),
- mode
- ), "Custom data size bound exceeded");
+ collection_id,
+ 1,
+ too_big_const_data
+ ), "variable_data exceeded data limit.");
});
}
// #endregion
+
+#[test]
+fn set_const_on_chain_schema() {
+ new_test_ext().execute_with(|| {
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::set_const_on_chain_schema(origin1, collection_id, b"test const on chain schema".to_vec()));
+
+ assert_eq!(TemplateModule::collection(collection_id).const_on_chain_schema, b"test const on chain schema".to_vec());
+ assert_eq!(TemplateModule::collection(collection_id).variable_on_chain_schema, b"".to_vec());
+ });
+}
+
+#[test]
+fn set_variable_on_chain_schema() {
+ new_test_ext().execute_with(|| {
+ default_limits();
+
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+
+ let origin1 = Origin::signed(1);
+ assert_ok!(TemplateModule::set_variable_on_chain_schema(origin1, collection_id, b"test variable on chain schema".to_vec()));
+
+ assert_eq!(TemplateModule::collection(collection_id).const_on_chain_schema, b"".to_vec());
+ assert_eq!(TemplateModule::collection(collection_id).variable_on_chain_schema, b"test variable on chain schema".to_vec());
+ });
+}
\ No newline at end of file
runtime/Cargo.tomldiffbeforeafterboth--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -1,186 +1,3 @@
-[dependencies.aura]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'pallet-aura'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.balances]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'pallet-balances'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.codec]
-default-features = false
-features = ['derive']
-package = 'parity-scale-codec'
-version = '1.3.0'
-
-[dependencies.contracts]
-git = 'https://github.com/usetech-llc/substrate.git'
-default-features = false
-package = 'pallet-contracts'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.contracts-primitives]
-git = 'https://github.com/usetech-llc/substrate.git'
-default-features = false
-package = 'pallet-contracts-primitives'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.contracts-rpc-runtime-api]
-git = 'https://github.com/usetech-llc/substrate.git'
-default-features = false
-package = 'pallet-contracts-rpc-runtime-api'
-version = '0.8.0-rc4'
-branch = 'rc4_ext_dispatch_reenabled'
-
-[dependencies.frame-executive]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.frame-support]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.grandpa]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'pallet-grandpa'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.randomness-collective-flip]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'pallet-randomness-collective-flip'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.serde]
-features = ['derive']
-optional = true
-version = '1.0.101'
-
-[dependencies.sp-api]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-block-builder]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-consensus-aura]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '0.8.0-rc4'
-
-[dependencies.sp-core]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-inherents]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-io]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-offchain]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-runtime]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-session]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-std]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-transaction-pool]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sp-version]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.sudo]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'pallet-sudo'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.system]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'frame-system'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.nft]
-default-features = false
-package = 'pallet-nft'
-path = '../pallets/nft'
-version = '2.0.0-rc4'
-
-[dependencies.timestamp]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'pallet-timestamp'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-
-[dependencies.transaction-payment]
-default-features = false
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'pallet-transaction-payment'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '2.0.0-rc4'
-[build-dependencies.wasm-builder-runner]
-git = 'https://github.com/usetech-llc/substrate.git'
-package = 'substrate-wasm-builder-runner'
-branch = 'rc4_ext_dispatch_reenabled'
-version = '1.0.5'
-
[package]
authors = ['Substrate DevHub <https://github.com/substrate-developer-hub>']
edition = '2018'
@@ -188,39 +5,99 @@
license = 'Unlicense'
name = 'nft-runtime'
repository = 'https://github.com/usetech-llc/nft_parachain/'
-version = '2.0.0-rc4'
+version = '2.0.0'
+
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
+[build-dependencies]
+wasm-builder-runner = { package = 'substrate-wasm-builder-runner', version = '1.0.5' }
+
+# alias "parity-scale-code" to "codec"
+[dependencies.codec]
+default-features = false
+features = ['derive']
+package = 'parity-scale-codec'
+version = '1.3.4'
+
+[dependencies]
+hex-literal = { optional = true, version = '0.3.1' }
+serde = { features = ['derive'], optional = true, version = '1.0.101' }
+
+# local dependencies
+pallet-nft = { path = '../pallets/nft', default-features = false, version = '2.0.0' }
+
+# Substrate dependencies
+frame-benchmarking = { default-features = false, optional = true, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+frame-executive = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+frame-support = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+frame-system = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+frame-system-benchmarking = { default-features = false, optional = true, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+frame-system-rpc-runtime-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-aura = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-balances = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-contracts = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-contracts-primitives = { default-features = false, version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-contracts-rpc-runtime-api = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-grandpa = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-randomness-collective-flip = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-sudo = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-timestamp = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-transaction-payment = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-block-builder = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-consensus-aura = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-core = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-inherents = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-offchain = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-runtime = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-session = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-std = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-transaction-pool = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+sp-version = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' }
+
[features]
default = ['std']
+runtime-benchmarks = [
+ 'hex-literal',
+ 'frame-benchmarking',
+ 'frame-support/runtime-benchmarks',
+ 'frame-system-benchmarking',
+ 'frame-system/runtime-benchmarks',
+ 'pallet-balances/runtime-benchmarks',
+ 'pallet-timestamp/runtime-benchmarks',
+ 'pallet-nft/runtime-benchmarks',
+ 'sp-runtime/runtime-benchmarks',
+]
std = [
- 'aura/std',
- 'balances/std',
'codec/std',
- 'contracts/std',
- 'contracts-primitives/std',
- 'contracts-rpc-runtime-api/std',
+ 'serde',
'frame-executive/std',
'frame-support/std',
- 'grandpa/std',
- 'randomness-collective-flip/std',
- 'serde',
+ 'frame-system/std',
+ 'frame-system-rpc-runtime-api/std',
+ 'pallet-aura/std',
+ 'pallet-balances/std',
+ 'pallet-contracts/std',
+ 'pallet-contracts-primitives/std',
+ 'pallet-contracts-rpc-runtime-api/std',
+ 'pallet-grandpa/std',
+ 'pallet-randomness-collective-flip/std',
+ 'pallet-sudo/std',
+ 'pallet-timestamp/std',
+ 'pallet-transaction-payment/std',
+ 'pallet-transaction-payment-rpc-runtime-api/std',
+ 'pallet-nft/std',
'sp-api/std',
'sp-block-builder/std',
'sp-consensus-aura/std',
'sp-core/std',
'sp-inherents/std',
- 'sp-io/std',
'sp-offchain/std',
'sp-runtime/std',
'sp-session/std',
'sp-std/std',
'sp-transaction-pool/std',
'sp-version/std',
- 'sudo/std',
- 'system/std',
- 'timestamp/std',
- 'transaction-payment/std',
- 'nft/std',
]
runtime/build.rsdiffbeforeafterboth--- a/runtime/build.rs
+++ b/runtime/build.rs
@@ -3,7 +3,7 @@
fn main() {
WasmBuilder::new()
.with_current_project()
- .with_wasm_builder_from_crates("1.0.11")
+ .with_wasm_builder_from_crates("2.0.0")
.export_heap_base()
.import_memory()
.build()
runtime/src/lib.rsdiffbeforeafterboth--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -8,9 +8,9 @@
#[cfg(feature = "std")]
include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
-use contracts_rpc_runtime_api::ContractExecResult;
-use grandpa::fg_primitives;
-use grandpa::{AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList};
+use pallet_contracts_rpc_runtime_api::ContractExecResult;
+use pallet_grandpa::fg_primitives;
+use pallet_grandpa::{AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList};
use sp_api::impl_runtime_apis;
use sp_consensus_aura::sr25519::AuthorityId as AuraId;
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
@@ -29,8 +29,8 @@
use sp_version::RuntimeVersion;
// A few exports that help ease life for downstream crates.
-pub use balances::Call as BalancesCall;
-pub use contracts::Schedule as ContractsSchedule;
+pub use pallet_balances::Call as BalancesCall;
+pub use pallet_contracts::Schedule as ContractsSchedule;
pub use frame_support::{
construct_runtime,
dispatch::DispatchResult,
@@ -49,14 +49,14 @@
#[cfg(any(feature = "std", test))]
pub use sp_runtime::BuildStorage;
use sp_runtime::Perbill;
-use system::{self as system};
+use frame_system::{self as system};
-pub use timestamp::Call as TimestampCall;
+pub use pallet_timestamp::Call as TimestampCall;
/// Re-export a nft pallet
/// TODO: Check this re-export. Is this safe and good style?
-extern crate nft;
-pub use nft::*;
+extern crate pallet_nft;
+pub use pallet_nft::*;
/// An index to a block.
pub type BlockNumber = u32;
@@ -84,6 +84,8 @@
/// Digest item type.
pub type DigestItem = generic::DigestItem<Hash>;
+mod nft_weights;
+
/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know
/// the specifics of the runtime. They can then be made to be agnostic over specific formats
/// of data like extrinsics, allowing for them to continue syncing the network through upgrades
@@ -194,62 +196,69 @@
type AvailableBlockRatio = AvailableBlockRatio;
/// Version of the runtime.
type Version = Version;
- /// Converts a module to the index of the module in `construct_runtime!`.
- /// This type is being generated by `construct_runtime!`.
- type ModuleToIndex = ModuleToIndex;
+ /// This type is being generated by `construct_runtime!`.
+ type PalletInfo = PalletInfo;
/// What to do if a new account is created.
type OnNewAccount = ();
/// What to do if an account is fully reaped from the system.
type OnKilledAccount = ();
/// The data to be stored in an account.
- type AccountData = balances::AccountData<Balance>;
+ type AccountData = pallet_balances::AccountData<Balance>;
+ /// Weight information for the extrinsics of this pallet.
+ type SystemWeightInfo = ();
}
-impl aura::Trait for Runtime {
+impl pallet_aura::Trait for Runtime {
type AuthorityId = AuraId;
}
-impl grandpa::Trait for Runtime {
- type Event = Event;
- type Call = Call;
+impl pallet_grandpa::Trait for Runtime {
+ type Event = Event;
+ type Call = Call;
- type KeyOwnerProofSystem = ();
+ type KeyOwnerProofSystem = ();
- type KeyOwnerProof =
- <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(KeyTypeId, GrandpaId)>>::Proof;
+ type KeyOwnerProof =
+ <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(KeyTypeId, GrandpaId)>>::Proof;
- type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
- KeyTypeId,
- GrandpaId,
- )>>::IdentificationTuple;
+ type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
+ KeyTypeId,
+ GrandpaId,
+ )>>::IdentificationTuple;
+
+ type HandleEquivocation = ();
- type HandleEquivocation = ();
+ type WeightInfo = ();
}
parameter_types! {
pub const MinimumPeriod: u64 = SLOT_DURATION / 2;
}
-impl timestamp::Trait for Runtime {
- /// A timestamp: milliseconds since the unix epoch.
- type Moment = u64;
- type OnTimestampSet = Aura;
- type MinimumPeriod = MinimumPeriod;
+impl pallet_timestamp::Trait for Runtime {
+ /// A timestamp: milliseconds since the unix epoch.
+ type Moment = u64;
+ type OnTimestampSet = Aura;
+ type MinimumPeriod = MinimumPeriod;
+ type WeightInfo = ();
}
parameter_types! {
// pub const ExistentialDeposit: u128 = 500;
pub const ExistentialDeposit: u128 = 0;
+ pub const MaxLocks: u32 = 50;
}
-impl balances::Trait for Runtime {
- /// The type for recording an account's balance.
- type Balance = Balance;
- /// The ubiquitous event type.
- type Event = Event;
- type DustRemoval = ();
- type ExistentialDeposit = ExistentialDeposit;
- type AccountStore = System;
+impl pallet_balances::Trait for Runtime {
+ type MaxLocks = MaxLocks;
+ /// The type for recording an account's balance.
+ type Balance = Balance;
+ /// The ubiquitous event type.
+ type Event = Event;
+ type DustRemoval = ();
+ type ExistentialDeposit = ExistentialDeposit;
+ type AccountStore = System;
+ type WeightInfo = ();
}
pub const MILLICENTS: Balance = 1_000_000_000;
@@ -263,46 +272,46 @@
pub const SurchargeReward: Balance = 150 * MILLICENTS;
}
-impl contracts::Trait for Runtime {
- type Call = Call;
- type Time = Timestamp;
- type Randomness = RandomnessCollectiveFlip;
- type Currency = Balances;
- type Event = Event;
- type DetermineContractAddress = contracts::SimpleAddressDeterminer<Runtime>;
- type TrieIdGenerator = contracts::TrieIdFromParentCounter<Runtime>;
- type RentPayment = ();
- type SignedClaimHandicap = contracts::DefaultSignedClaimHandicap;
- type TombstoneDeposit = TombstoneDeposit;
- type StorageSizeOffset = contracts::DefaultStorageSizeOffset;
- type RentByteFee = RentByteFee;
- type RentDepositOffset = RentDepositOffset;
- type SurchargeReward = SurchargeReward;
- type MaxDepth = contracts::DefaultMaxDepth;
- type MaxValueSize = contracts::DefaultMaxValueSize;
- type WeightPrice = transaction_payment::Module<Self>;
+impl pallet_contracts::Trait for Runtime {
+ type Time = Timestamp;
+ type Randomness = RandomnessCollectiveFlip;
+ type Currency = Balances;
+ type Event = Event;
+ type DetermineContractAddress = pallet_contracts::SimpleAddressDeterminer<Runtime>;
+ type TrieIdGenerator = pallet_contracts::TrieIdFromParentCounter<Runtime>;
+ type RentPayment = ();
+ type SignedClaimHandicap = pallet_contracts::DefaultSignedClaimHandicap;
+ type TombstoneDeposit = TombstoneDeposit;
+ type StorageSizeOffset = pallet_contracts::DefaultStorageSizeOffset;
+ type RentByteFee = RentByteFee;
+ type RentDepositOffset = RentDepositOffset;
+ type SurchargeReward = SurchargeReward;
+ type MaxDepth = pallet_contracts::DefaultMaxDepth;
+ type MaxValueSize = pallet_contracts::DefaultMaxValueSize;
+ type WeightPrice = pallet_transaction_payment::Module<Self>;
}
parameter_types! {
- pub const TransactionByteFee: Balance = 1;
+ pub const TransactionByteFee: Balance = 10 * MILLICENTS;
}
-impl transaction_payment::Trait for Runtime {
- type Currency = balances::Module<Runtime>;
+impl pallet_transaction_payment::Trait for Runtime {
+ type Currency = pallet_balances::Module<Runtime>;
type OnTransactionPayment = ();
type TransactionByteFee = TransactionByteFee;
type WeightToFee = IdentityFee<Balance>;
- type FeeMultiplierUpdate = ();
+ type FeeMultiplierUpdate = ();
}
-impl sudo::Trait for Runtime {
+impl pallet_sudo::Trait for Runtime {
type Event = Event;
type Call = Call;
}
/// Used for the module nft in `./nft.rs`
-impl nft::Trait for Runtime {
+impl pallet_nft::Trait for Runtime {
type Event = Event;
+ type WeightInfo = nft_weights::WeightInfo;
}
construct_runtime!(
@@ -312,15 +321,15 @@
UncheckedExtrinsic = UncheckedExtrinsic
{
System: system::{Module, Call, Config, Storage, Event<T>},
- RandomnessCollectiveFlip: randomness_collective_flip::{Module, Call, Storage},
- Contracts: contracts::{Module, Call, Config, Storage, Event<T>},
- Timestamp: timestamp::{Module, Call, Storage, Inherent},
- Aura: aura::{Module, Config<T>, Inherent(Timestamp)},
- Grandpa: grandpa::{Module, Call, Storage, Config, Event},
- Balances: balances::{Module, Call, Storage, Config<T>, Event<T>},
- TransactionPayment: transaction_payment::{Module, Storage},
- Sudo: sudo::{Module, Call, Config<T>, Storage, Event<T>},
- Nft: nft::{Module, Call, Config<T>, Storage, Event<T>},
+ RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage},
+ Contracts: pallet_contracts::{Module, Call, Config, Storage, Event<T>},
+ Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent},
+ Aura: pallet_aura::{Module, Config<T>, Inherent},
+ Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event},
+ Balances: pallet_balances::{Module, Call, Storage, Config<T>, Event<T>},
+ TransactionPayment: pallet_transaction_payment::{Module, Storage},
+ Sudo: pallet_sudo::{Module, Call, Config<T>, Storage, Event<T>},
+ Nft: pallet_nft::{Module, Call, Config<T>, Storage, Event<T>},
}
);
@@ -342,7 +351,7 @@
system::CheckEra<Runtime>,
system::CheckNonce<Runtime>,
system::CheckWeight<Runtime>,
- nft::ChargeTransactionPayment<Runtime>,
+ pallet_nft::ChargeTransactionPayment<Runtime>,
);
/// Unchecked extrinsic type as expected by this runtime.
pub type UncheckedExtrinsic = generic::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;
@@ -354,7 +363,7 @@
impl_runtime_apis! {
- impl contracts_rpc_runtime_api::ContractsApi<Block, AccountId, Balance, BlockNumber>
+ impl pallet_contracts_rpc_runtime_api::ContractsApi<Block, AccountId, Balance, BlockNumber>
for Runtime
{
fn call(
@@ -364,27 +373,28 @@
gas_limit: u64,
input_data: Vec<u8>,
) -> ContractExecResult {
- let exec_result =
- Contracts::bare_call(origin, dest.into(), value, gas_limit, input_data);
- match exec_result {
- Ok(v) => ContractExecResult::Success {
- status: v.status,
- data: v.data,
- },
- Err(_) => ContractExecResult::Error,
- }
+ let (exec_result, gas_consumed) =
+ Contracts::bare_call(origin, dest.into(), value, gas_limit, input_data);
+ match exec_result {
+ Ok(v) => ContractExecResult::Success {
+ flags: v.flags.bits(),
+ data: v.data,
+ gas_consumed: gas_consumed,
+ },
+ Err(_) => ContractExecResult::Error,
+ }
}
fn get_storage(
address: AccountId,
key: [u8; 32],
- ) -> contracts_primitives::GetStorageResult {
+ ) -> pallet_contracts_primitives::GetStorageResult {
Contracts::get_storage(address, key)
}
fn rent_projection(
address: AccountId,
- ) -> contracts_primitives::RentProjectionResult<BlockNumber> {
+ ) -> pallet_contracts_primitives::RentProjectionResult<BlockNumber> {
Contracts::rent_projection(address)
}
}
@@ -471,29 +481,74 @@
}
}
- impl fg_primitives::GrandpaApi<Block> for Runtime {
- fn grandpa_authorities() -> GrandpaAuthorityList {
- Grandpa::grandpa_authorities()
- }
+ impl fg_primitives::GrandpaApi<Block> for Runtime {
+ fn grandpa_authorities() -> GrandpaAuthorityList {
+ Grandpa::grandpa_authorities()
+ }
- fn submit_report_equivocation_extrinsic(
- _equivocation_proof: fg_primitives::EquivocationProof<
- <Block as BlockT>::Hash,
- NumberFor<Block>,
- >,
- _key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof,
- ) -> Option<()> {
- None
- }
+ fn submit_report_equivocation_unsigned_extrinsic(
+ _equivocation_proof: fg_primitives::EquivocationProof<
+ <Block as BlockT>::Hash,
+ NumberFor<Block>,
+ >,
+ _key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof,
+ ) -> Option<()> {
+ None
+ }
- fn generate_key_ownership_proof(
- _set_id: fg_primitives::SetId,
- _authority_id: GrandpaId,
- ) -> Option<fg_primitives::OpaqueKeyOwnershipProof> {
- // NOTE: this is the only implementation possible since we've
- // defined our key owner proof type as a bottom type (i.e. a type
- // with no values).
- None
- }
+ fn generate_key_ownership_proof(
+ _set_id: fg_primitives::SetId,
+ _authority_id: GrandpaId,
+ ) -> Option<fg_primitives::OpaqueKeyOwnershipProof> {
+ // NOTE: this is the only implementation possible since we've
+ // defined our key owner proof type as a bottom type (i.e. a type
+ // with no values).
+ None
+ }
}
+
+ impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {
+ fn account_nonce(account: AccountId) -> Index {
+ System::account_nonce(account)
+ }
+ }
+
+ impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> for Runtime {
+ fn query_info(
+ uxt: <Block as BlockT>::Extrinsic,
+ len: u32,
+ ) -> pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo<Balance> {
+ TransactionPayment::query_info(uxt, len)
+ }
+ }
+
+ #[cfg(feature = "runtime-benchmarks")]
+ impl frame_benchmarking::Benchmark<Block> for Runtime {
+ fn dispatch_benchmark(
+ config: frame_benchmarking::BenchmarkConfig
+ ) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {
+ use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey};
+
+ let whitelist: Vec<TrackedStorageKey> = vec![
+ // Alice account
+ hex_literal::hex!("d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d").to_vec().into(),
+ // // Total Issuance
+ // hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),
+ // // Execution Phase
+ // hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),
+ // // Event Count
+ // hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),
+ // // System Events
+ // hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),
+ ];
+
+ let mut batches = Vec::<BenchmarkBatch>::new();
+ let params = (&config, &whitelist);
+
+ add_benchmark!(params, batches, pallet_nft, Nft);
+
+ if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
+ Ok(batches)
+ }
+ }
}
runtime/src/nft_weights.rsdiffbeforeafterboth--- /dev/null
+++ b/runtime/src/nft_weights.rs
@@ -0,0 +1,111 @@
+use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
+
+pub struct WeightInfo;
+impl pallet_nft::WeightInfo for WeightInfo {
+ fn create_collection() -> Weight {
+ (70_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(7 as Weight))
+ .saturating_add(DbWeight::get().writes(5 as Weight))
+ }
+ fn destroy_collection() -> Weight {
+ (90_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(5 as Weight))
+ }
+ fn add_to_white_list() -> Weight {
+ (30_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_from_white_list() -> Weight {
+ (35_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_public_access_mode() -> Weight {
+ (27_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_mint_permission() -> Weight {
+ (27_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn change_collection_owner() -> Weight {
+ (27_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn add_collection_admin() -> Weight {
+ (32_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_admin() -> Weight {
+ (50_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_collection_sponsor() -> Weight {
+ (32_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn confirm_sponsorship() -> Weight {
+ (22_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_sponsor() -> Weight {
+ (24_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(1 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn create_item(s: usize, ) -> Weight {
+ (130_000_000 as Weight)
+ .saturating_add((2135 as Weight).saturating_mul(s as Weight))
+ .saturating_add(DbWeight::get().reads(10 as Weight))
+ .saturating_add(DbWeight::get().writes(8 as Weight))
+ }
+ fn burn_item() -> Weight {
+ (170_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(9 as Weight))
+ .saturating_add(DbWeight::get().writes(7 as Weight))
+ }
+ fn transfer() -> Weight {
+ (125_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(7 as Weight))
+ .saturating_add(DbWeight::get().writes(7 as Weight))
+ }
+ fn approve() -> Weight {
+ (45_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(3 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn transfer_from() -> Weight {
+ (150_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(9 as Weight))
+ .saturating_add(DbWeight::get().writes(8 as Weight))
+ }
+ fn set_offchain_schema() -> Weight {
+ (33_000_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_const_on_chain_schema() -> Weight {
+ (11_100_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_on_chain_schema() -> Weight {
+ (11_100_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_meta_data() -> Weight {
+ (17_500_000 as Weight)
+ .saturating_add(DbWeight::get().reads(2 as Weight))
+ .saturating_add(DbWeight::get().writes(1 as Weight))
+ }
+}
tests/flipper-src/.gitignorediffbeforeafterboth--- a/tests/flipper-src/.gitignore
+++ b/tests/flipper-src/.gitignore
@@ -6,4 +6,4 @@
# Remove Cargo.lock when creating an executable, leave it for libraries
# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock
-Cargo.lock
+Cargo.lock
\ No newline at end of file
tests/flipper-src/.ink/abi_gen/Cargo.tomldiffbeforeafterboth--- a/tests/flipper-src/.ink/abi_gen/Cargo.toml
+++ /dev/null
@@ -1,16 +0,0 @@
-[package]
-name = "abi-gen"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
-publish = false
-
-[[bin]]
-name = "abi-gen"
-path = "main.rs"
-
-[dependencies]
-contract = { path = "../..", package = "flipper", default-features = false, features = ["ink-generate-abi"] }
-ink_lang = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_lang", default-features = false, features = ["ink-generate-abi"] }
-serde = "1.0"
-serde_json = "1.0"
tests/flipper-src/.ink/abi_gen/main.rsdiffbeforeafterboth--- a/tests/flipper-src/.ink/abi_gen/main.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-fn main() -> Result<(), std::io::Error> {
- let abi = <contract::Flipper as ink_lang::GenerateAbi>::generate_abi();
- let contents = serde_json::to_string_pretty(&abi)?;
- std::fs::create_dir("target").ok();
- std::fs::write("target/metadata.json", contents)?;
- Ok(())
-}
tests/flipper-src/Cargo.tomldiffbeforeafterboth--- a/tests/flipper-src/Cargo.toml
+++ b/tests/flipper-src/Cargo.toml
@@ -1,67 +1,35 @@
[package]
name = "flipper"
-version = "0.1.0"
-authors = ["[your_name] <[your_email]>"]
+version = "3.0.0-rc1"
+authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[dependencies]
-ink_abi = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_abi", default-features = false, features = ["derive"], optional = true }
-ink_primitives = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_primitives", default-features = false }
-ink_core = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_core", default-features = false }
-ink_lang = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_lang", default-features = false }
+ink_primitives = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false }
+ink_metadata = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false, features = ["derive"], optional = true }
+ink_env = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false }
+ink_storage = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false }
+ink_lang = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false }
-scale = { package = "parity-scale-codec", version = "1.2", default-features = false, features = ["derive"] }
-
-[dependencies.type-metadata]
-git = "https://github.com/type-metadata/type-metadata.git"
-rev = "02eae9f35c40c943b56af5b60616219f2b72b47d"
-default-features = false
-features = ["derive"]
-optional = true
+scale = { package = "parity-scale-codec", version = "1.3", default-features = false, features = ["derive"] }
+scale-info = { version = "0.4", default-features = false, features = ["derive"], optional = true }
[lib]
name = "flipper"
path = "lib.rs"
-crate-type = [
- # Used for normal contract Wasm blobs.
- "cdylib",
- # Required for ABI generation, and using this contract as a dependency.
- # If using `cargo contract build`, it will be automatically disabled to produce a smaller Wasm binary
- "rlib",
-]
+crate-type = ["cdylib"]
[features]
-default = ["test-env"]
+default = ["std"]
std = [
- "ink_abi/std",
- "ink_core/std",
"ink_primitives/std",
+ "ink_metadata",
+ "ink_metadata/std",
+ "ink_env/std",
+ "ink_storage/std",
+ "ink_lang/std",
"scale/std",
- "type-metadata/std",
-]
-test-env = [
- "std",
- "ink_lang/test-env",
-]
-ink-generate-abi = [
- "std",
- "ink_abi",
- "type-metadata",
- "ink_core/ink-generate-abi",
- "ink_lang/ink-generate-abi",
-]
-ink-as-dependency = []
-
-[profile.release]
-panic = "abort"
-lto = true
-opt-level = "z"
-overflow-checks = true
-
-[workspace]
-members = [
- ".ink/abi_gen"
+ "scale-info",
+ "scale-info/std",
]
-exclude = [
- ".ink"
-]
+ink-as-dependency = []
\ No newline at end of file
tests/flipper-src/build.shdiffbeforeafterboth--- a/tests/flipper-src/build.sh
+++ b/tests/flipper-src/build.sh
@@ -1,2 +1,3 @@
+rustup component add rust-src --toolchain nightly
cargo +nightly contract build
cargo +nightly contract generate-metadata
tests/flipper-src/lib.rsdiffbeforeafterboth--- a/tests/flipper-src/lib.rs
+++ b/tests/flipper-src/lib.rs
@@ -1,70 +1,64 @@
+// Copyright 2018-2020 Parity Technologies (UK) Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
#![cfg_attr(not(feature = "std"), no_std)]
use ink_lang as ink;
-#[ink::contract(version = "0.1.0")]
-mod flipper {
- use ink_core::storage;
-
- /// Defines the storage of your contract.
- /// Add new fields to the below struct in order
- /// to add new static storage fields to your contract.
+#[ink::contract]
+pub mod flipper {
#[ink(storage)]
- struct Flipper {
- /// Stores a single `bool` value on the storage.
- value: storage::Value<bool>,
+ pub struct Flipper {
+ value: bool,
}
impl Flipper {
- /// Constructor that initializes the `bool` value to the given `init_value`.
+ /// Creates a new flipper smart contract initialized with the given value.
#[ink(constructor)]
- fn new(&mut self, init_value: bool) {
- self.value.set(init_value);
+ pub fn new(init_value: bool) -> Self {
+ Self { value: init_value }
}
- /// Constructor that initializes the `bool` value to `false`.
- ///
- /// Constructors can delegate to other constructors.
+ /// Creates a new flipper smart contract initialized to `false`.
#[ink(constructor)]
- fn default(&mut self) {
- self.new(false)
+ pub fn default() -> Self {
+ Self::new(Default::default())
}
- /// A message that can be called on instantiated contracts.
- /// This one flips the value of the stored `bool` from `true`
- /// to `false` and vice versa.
+ /// Flips the current value of the Flipper's bool.
#[ink(message)]
- fn flip(&mut self) {
- *self.value = !self.get();
+ pub fn flip(&mut self) {
+ self.value = !self.value;
}
- /// Simply returns the current value of our `bool`.
+ /// Returns the current value of the Flipper's bool.
#[ink(message)]
- fn get(&self) -> bool {
- *self.value
+ pub fn get(&self) -> bool {
+ self.value
}
}
- /// Unit tests in Rust are normally defined within such a `#[cfg(test)]`
- /// module and test functions are marked with a `#[test]` attribute.
- /// The below code is technically just normal Rust code.
#[cfg(test)]
mod tests {
- /// Imports all the definitions from the outer scope so we can use them here.
use super::*;
- /// We test if the default constructor does its job.
#[test]
fn default_works() {
- // Note that even though we defined our `#[ink(constructor)]`
- // above as `&mut self` functions that return nothing we can call
- // them in test code as if they were normal Rust constructors
- // that take no `self` argument but return `Self`.
let flipper = Flipper::default();
assert_eq!(flipper.get(), false);
}
- /// We test a simple use case of our contract.
#[test]
fn it_works() {
let mut flipper = Flipper::new(false);
@@ -73,4 +67,4 @@
assert_eq!(flipper.get(), true);
}
}
-}
+}
\ No newline at end of file
tests/package-lock.jsondiffbeforeafterboth--- a/tests/package-lock.json
+++ b/tests/package-lock.json
@@ -3916,282 +3916,143 @@
}
},
"@polkadot/api": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-1.34.1.tgz",
- "integrity": "sha512-3gCibNRchH+XbEdULS1bwiV1RgarZW1PDw1Y1mAQBVqPrUpkYqntp1D52SQOpAbRzldkwk296Sj+mx9/IeDRXA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-2.3.1.tgz",
+ "integrity": "sha512-B9ZOb1PiPaAlke4wQHoivVQ5ZCQWn5bgLjhVIGdcEZ4WjIcxApmzTV4ruSfqVoRKpRiVOyV3Dx/VUQDD/WgBFw==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/api-derive": "1.34.1",
- "@polkadot/keyring": "^3.4.1",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/rpc-core": "1.34.1",
- "@polkadot/rpc-provider": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/api-derive": "2.3.1",
+ "@polkadot/keyring": "^3.6.1",
+ "@polkadot/metadata": "2.3.1",
+ "@polkadot/rpc-core": "2.3.1",
+ "@polkadot/rpc-provider": "2.3.1",
+ "@polkadot/types": "2.3.1",
+ "@polkadot/types-known": "2.3.1",
+ "@polkadot/util": "^3.6.1",
+ "@polkadot/util-crypto": "^3.6.1",
"bn.js": "^5.1.3",
"eventemitter3": "^4.0.7",
"rxjs": "^6.6.3"
},
"dependencies": {
- "@polkadot/metadata": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.34.1.tgz",
- "integrity": "sha512-uoaOhNHjECDaLBYvGRaLvF0mhZBFmsV3oikYDP4sZx3a5oD0xYsyXtr5bFPQDImwPFASP8/ltrMVqcYTX42xFg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "bn.js": "^5.1.3"
- }
- },
- "@polkadot/types": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-1.34.1.tgz",
- "integrity": "sha512-jPwix2y+ZXKYB4ghODXlqYmcI3Tnsl3iO3xIkiGsZhhs9PdrKibcNeAv4LUiRpPuGRnAM+mrlPrBbCuzguKSGg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "@types/bn.js": "^4.11.6",
- "bn.js": "^5.1.3",
- "memoizee": "^0.4.14",
- "rxjs": "^6.6.3"
- }
- },
- "@polkadot/types-known": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.34.1.tgz",
- "integrity": "sha512-H9V8u9cqbKjxU/dxEyLl7kJwoBImXpRskQ5+X0fq3BH7g1nQ6jrIg/buRPpbc3GxKivdFYUZWshPY9hbqE8y8A==",
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "bn.js": "^5.1.3"
+ "regenerator-runtime": "^0.13.4"
}
},
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
"@polkadot/api-contract": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/api-contract/-/api-contract-1.34.1.tgz",
- "integrity": "sha512-oXh7An6E9wdbczXQhw+TfIkoKLQr4t0j3OwxubrhS5Qn6f99xGoAkk0BIKjsHPGIbMHEJoywmmLrDUAeTxExgg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/api-contract/-/api-contract-2.3.1.tgz",
+ "integrity": "sha512-hqRU2mGkHK84dtqZSX71tFCuBmBiV/6H7pJwj5E7UPcd124LM2ETXYJ9T0ElxbAHmZQD7yv+2ZM/ncvGC/A68Q==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/api": "1.34.1",
- "@polkadot/rpc-core": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/api": "2.3.1",
+ "@polkadot/rpc-core": "2.3.1",
+ "@polkadot/types": "2.3.1",
+ "@polkadot/util": "^3.6.1",
"bn.js": "^5.1.3",
"rxjs": "^6.6.3"
},
"dependencies": {
- "@polkadot/api": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-1.34.1.tgz",
- "integrity": "sha512-3gCibNRchH+XbEdULS1bwiV1RgarZW1PDw1Y1mAQBVqPrUpkYqntp1D52SQOpAbRzldkwk296Sj+mx9/IeDRXA==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/api-derive": "1.34.1",
- "@polkadot/keyring": "^3.4.1",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/rpc-core": "1.34.1",
- "@polkadot/rpc-provider": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "bn.js": "^5.1.3",
- "eventemitter3": "^4.0.7",
- "rxjs": "^6.6.3"
- }
- },
- "@polkadot/api-derive": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.34.1.tgz",
- "integrity": "sha512-LMlCkNJRp29MwKa36crYuY6cZpnkHCFrPCv9dmJEuDbMqrK+EAhXM9/6sTDYJ4uKNhyetJKe9rXslkXdI6pidA==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/api": "1.34.1",
- "@polkadot/rpc-core": "1.34.1",
- "@polkadot/rpc-provider": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "bn.js": "^5.1.3",
- "memoizee": "^0.4.14",
- "rxjs": "^6.6.3"
- }
- },
- "@polkadot/metadata": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.34.1.tgz",
- "integrity": "sha512-uoaOhNHjECDaLBYvGRaLvF0mhZBFmsV3oikYDP4sZx3a5oD0xYsyXtr5bFPQDImwPFASP8/ltrMVqcYTX42xFg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "bn.js": "^5.1.3"
- }
- },
- "@polkadot/rpc-core": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.34.1.tgz",
- "integrity": "sha512-BVQDyBEkbRe5b/u8p9UPpTCj0sDZ32sTmPEP43Klc4s9+oHtiNvOFYvkjK5oyW9dlcOwXi8HpLsQxGAeMtM7Tw==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/rpc-provider": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "memoizee": "^0.4.14",
- "rxjs": "^6.6.3"
- }
- },
- "@polkadot/rpc-provider": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.34.1.tgz",
- "integrity": "sha512-bebeis9mB4LS9Spk1WSHoadZHsyHmK4gyyC6uKSLZxHZmnopWna6zWnOBIrYHRz7qDHSZC5eNTseuU8NJXtscA==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "@polkadot/x-fetch": "^0.3.2",
- "@polkadot/x-ws": "^0.3.2",
- "bn.js": "^5.1.3",
- "eventemitter3": "^4.0.7"
- }
- },
- "@polkadot/types": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-1.34.1.tgz",
- "integrity": "sha512-jPwix2y+ZXKYB4ghODXlqYmcI3Tnsl3iO3xIkiGsZhhs9PdrKibcNeAv4LUiRpPuGRnAM+mrlPrBbCuzguKSGg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "@types/bn.js": "^4.11.6",
- "bn.js": "^5.1.3",
- "memoizee": "^0.4.14",
- "rxjs": "^6.6.3"
- }
- },
- "@polkadot/types-known": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.34.1.tgz",
- "integrity": "sha512-H9V8u9cqbKjxU/dxEyLl7kJwoBImXpRskQ5+X0fq3BH7g1nQ6jrIg/buRPpbc3GxKivdFYUZWshPY9hbqE8y8A==",
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "bn.js": "^5.1.3"
+ "regenerator-runtime": "^0.13.4"
}
},
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
"@polkadot/api-derive": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.34.1.tgz",
- "integrity": "sha512-LMlCkNJRp29MwKa36crYuY6cZpnkHCFrPCv9dmJEuDbMqrK+EAhXM9/6sTDYJ4uKNhyetJKe9rXslkXdI6pidA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-2.3.1.tgz",
+ "integrity": "sha512-FcDEx+/1Io7zOHPjbQAEzXB0KenA9emgY+96aHS4yPV/OVmAifU0IAxudZdMVp7uVC2dWq9iFvjxx84yCXgVRA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/api": "1.34.1",
- "@polkadot/rpc-core": "1.34.1",
- "@polkadot/rpc-provider": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/api": "2.3.1",
+ "@polkadot/rpc-core": "2.3.1",
+ "@polkadot/rpc-provider": "2.3.1",
+ "@polkadot/types": "2.3.1",
+ "@polkadot/util": "^3.6.1",
+ "@polkadot/util-crypto": "^3.6.1",
"bn.js": "^5.1.3",
"memoizee": "^0.4.14",
"rxjs": "^6.6.3"
},
"dependencies": {
- "@polkadot/metadata": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.34.1.tgz",
- "integrity": "sha512-uoaOhNHjECDaLBYvGRaLvF0mhZBFmsV3oikYDP4sZx3a5oD0xYsyXtr5bFPQDImwPFASP8/ltrMVqcYTX42xFg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "bn.js": "^5.1.3"
- }
- },
- "@polkadot/types": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-1.34.1.tgz",
- "integrity": "sha512-jPwix2y+ZXKYB4ghODXlqYmcI3Tnsl3iO3xIkiGsZhhs9PdrKibcNeAv4LUiRpPuGRnAM+mrlPrBbCuzguKSGg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "@types/bn.js": "^4.11.6",
- "bn.js": "^5.1.3",
- "memoizee": "^0.4.14",
- "rxjs": "^6.6.3"
- }
- },
- "@polkadot/types-known": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.34.1.tgz",
- "integrity": "sha512-H9V8u9cqbKjxU/dxEyLl7kJwoBImXpRskQ5+X0fq3BH7g1nQ6jrIg/buRPpbc3GxKivdFYUZWshPY9hbqE8y8A==",
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "bn.js": "^5.1.3"
+ "regenerator-runtime": "^0.13.4"
}
},
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
@@ -4277,193 +4138,193 @@
}
},
"@polkadot/keyring": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-3.4.1.tgz",
- "integrity": "sha512-x8FxzDzyFX5ai+tnPaxAFUBV/2Mw/om8sRoMh+fT6Jzh3nC7pXfecH5ticJPKe73v/y42hn9xM0tiAI5P8Ohcw==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-3.6.1.tgz",
+ "integrity": "sha512-JbW4M5Ct3HaX3vgoa/UWAQVF/0sc1PbbA2D6v0KKaJkXl+EYVP9uyOYAoRCppB6ENZThz7CUJVQp8trs8WTrFQ==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/util": "3.4.1",
- "@polkadot/util-crypto": "3.4.1"
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/util": "3.6.1",
+ "@polkadot/util-crypto": "3.6.1"
},
"dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
"@polkadot/metadata": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.34.1.tgz",
- "integrity": "sha512-uoaOhNHjECDaLBYvGRaLvF0mhZBFmsV3oikYDP4sZx3a5oD0xYsyXtr5bFPQDImwPFASP8/ltrMVqcYTX42xFg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-2.3.1.tgz",
+ "integrity": "sha512-F/QwDDR/d9mcqToDqndRTUYvMt/GYzjQ+kNGjQYBOIDRqF9zDbPHAXruqcHd0Y5MMpPMRBZGNaqPOb3BMrIdOQ==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/types": "2.3.1",
+ "@polkadot/types-known": "2.3.1",
+ "@polkadot/util": "^3.6.1",
+ "@polkadot/util-crypto": "^3.6.1",
"bn.js": "^5.1.3"
},
"dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
+ "@polkadot/networks": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-3.6.1.tgz",
+ "integrity": "sha512-PEEw/vTZaKf32vuAUeFXYNJei+b/s3hr7msMKfvoYeKDU/otgt9Mgkqrh6VCaE6+lHHgX8vLbH70pCqQrGG/uA==",
+ "requires": {
+ "@babel/runtime": "^7.12.1"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ },
"@polkadot/rpc-core": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.34.1.tgz",
- "integrity": "sha512-BVQDyBEkbRe5b/u8p9UPpTCj0sDZ32sTmPEP43Klc4s9+oHtiNvOFYvkjK5oyW9dlcOwXi8HpLsQxGAeMtM7Tw==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-2.3.1.tgz",
+ "integrity": "sha512-SWYU6azxNwWkhz6bm/wpRPQZ/5KJ2hnEXPS4EN77q7EFH4c4k9mNtVyjUQFkKJsG7T85vxaCCWwhx60aYCZVeA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/rpc-provider": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/metadata": "2.3.1",
+ "@polkadot/rpc-provider": "2.3.1",
+ "@polkadot/types": "2.3.1",
+ "@polkadot/util": "^3.6.1",
"memoizee": "^0.4.14",
"rxjs": "^6.6.3"
},
"dependencies": {
- "@polkadot/metadata": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.34.1.tgz",
- "integrity": "sha512-uoaOhNHjECDaLBYvGRaLvF0mhZBFmsV3oikYDP4sZx3a5oD0xYsyXtr5bFPQDImwPFASP8/ltrMVqcYTX42xFg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "bn.js": "^5.1.3"
- }
- },
- "@polkadot/types": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-1.34.1.tgz",
- "integrity": "sha512-jPwix2y+ZXKYB4ghODXlqYmcI3Tnsl3iO3xIkiGsZhhs9PdrKibcNeAv4LUiRpPuGRnAM+mrlPrBbCuzguKSGg==",
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "@types/bn.js": "^4.11.6",
- "bn.js": "^5.1.3",
- "memoizee": "^0.4.14",
- "rxjs": "^6.6.3"
+ "regenerator-runtime": "^0.13.4"
}
},
- "@polkadot/types-known": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.34.1.tgz",
- "integrity": "sha512-H9V8u9cqbKjxU/dxEyLl7kJwoBImXpRskQ5+X0fq3BH7g1nQ6jrIg/buRPpbc3GxKivdFYUZWshPY9hbqE8y8A==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "bn.js": "^5.1.3"
- }
- },
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
"@polkadot/rpc-provider": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.34.1.tgz",
- "integrity": "sha512-bebeis9mB4LS9Spk1WSHoadZHsyHmK4gyyC6uKSLZxHZmnopWna6zWnOBIrYHRz7qDHSZC5eNTseuU8NJXtscA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-2.3.1.tgz",
+ "integrity": "sha512-lRN68RosWvtBA844PWqhYEV2ifT3T9SUyAP2WvRYyWVPiMmXjw57qG1zHKQWgZk5aFzeaHKSYgsKTmkWz9IM4g==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "@polkadot/x-fetch": "^0.3.2",
- "@polkadot/x-ws": "^0.3.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/metadata": "2.3.1",
+ "@polkadot/types": "2.3.1",
+ "@polkadot/util": "^3.6.1",
+ "@polkadot/util-crypto": "^3.6.1",
+ "@polkadot/x-fetch": "^0.3.3",
+ "@polkadot/x-ws": "^0.3.3",
"bn.js": "^5.1.3",
"eventemitter3": "^4.0.7"
},
"dependencies": {
- "@polkadot/metadata": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.34.1.tgz",
- "integrity": "sha512-uoaOhNHjECDaLBYvGRaLvF0mhZBFmsV3oikYDP4sZx3a5oD0xYsyXtr5bFPQDImwPFASP8/ltrMVqcYTX42xFg==",
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/types-known": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "bn.js": "^5.1.3"
- }
- },
- "@polkadot/types": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-1.34.1.tgz",
- "integrity": "sha512-jPwix2y+ZXKYB4ghODXlqYmcI3Tnsl3iO3xIkiGsZhhs9PdrKibcNeAv4LUiRpPuGRnAM+mrlPrBbCuzguKSGg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
- "@types/bn.js": "^4.11.6",
- "bn.js": "^5.1.3",
- "memoizee": "^0.4.14",
- "rxjs": "^6.6.3"
- }
- },
- "@polkadot/types-known": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.34.1.tgz",
- "integrity": "sha512-H9V8u9cqbKjxU/dxEyLl7kJwoBImXpRskQ5+X0fq3BH7g1nQ6jrIg/buRPpbc3GxKivdFYUZWshPY9hbqE8y8A==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "bn.js": "^5.1.3"
+ "regenerator-runtime": "^0.13.4"
}
},
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
@@ -4477,58 +4338,88 @@
}
},
"@polkadot/types": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-1.34.1.tgz",
- "integrity": "sha512-jPwix2y+ZXKYB4ghODXlqYmcI3Tnsl3iO3xIkiGsZhhs9PdrKibcNeAv4LUiRpPuGRnAM+mrlPrBbCuzguKSGg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-2.3.1.tgz",
+ "integrity": "sha512-G3cyYYV+vYmpkMjPirwOA/zLreb1uBrKpEMWTvtTuCz/sNwcbCT5hI/KZCzNo1PueOQAowroKPe4yQ793dqVPw==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/metadata": "1.34.1",
- "@polkadot/util": "^3.4.1",
- "@polkadot/util-crypto": "^3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/metadata": "2.3.1",
+ "@polkadot/util": "^3.6.1",
+ "@polkadot/util-crypto": "^3.6.1",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"memoizee": "^0.4.14",
"rxjs": "^6.6.3"
},
"dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
"@polkadot/types-known": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.34.1.tgz",
- "integrity": "sha512-H9V8u9cqbKjxU/dxEyLl7kJwoBImXpRskQ5+X0fq3BH7g1nQ6jrIg/buRPpbc3GxKivdFYUZWshPY9hbqE8y8A==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-2.3.1.tgz",
+ "integrity": "sha512-34yuvDraW9Sjy5ookQZf55sBKLOsTqos+WQdTu6DUxtRuwvMP9DEAGcs2m6AFvWxwZps+3zFGUvzn6SMHsSJ5Q==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/types": "1.34.1",
- "@polkadot/util": "^3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/types": "2.3.1",
+ "@polkadot/util": "^3.6.1",
"bn.js": "^5.1.3"
},
"dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
@@ -4546,12 +4437,13 @@
}
},
"@polkadot/util-crypto": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-3.4.1.tgz",
- "integrity": "sha512-RdTAiJ6dFE8nQJ7/wQkvYa6aNZG3Lusf/r7UmPJ56dZldvDTP3OdekzcfYdogU8hSJrE/xX84ii4DrHLnXXfAQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-3.6.1.tgz",
+ "integrity": "sha512-mRCijOXrxTa2JD5vpNvr1MHSj3NaSGaImg1yzAf3l7nw7zNGjLy1K3qQNcFgr8+0NHyPKk5lCIehtwGTRZYsiA==",
"requires": {
- "@babel/runtime": "^7.11.2",
- "@polkadot/util": "3.4.1",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/networks": "3.6.1",
+ "@polkadot/util": "3.6.1",
"@polkadot/wasm-crypto": "^1.4.1",
"base-x": "^3.0.8",
"bip39": "^3.0.2",
@@ -4565,18 +4457,33 @@
"xxhashjs": "^0.2.2"
},
"dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
"@polkadot/util": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.4.1.tgz",
- "integrity": "sha512-CJo0wAzXR8vjAzs9mHDooZr5a3XRW8LlYWik8d/+bv1VDwCC/metSiBrYBOapFhYUjlS5IYIw5bhWS5dnpkXvQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-3.6.1.tgz",
+ "integrity": "sha512-ToGVghmTtC8s8cg8mCGG3I88UasrCg9VNm5JoUvBH4nTZCxc/dQEkU24nULXwHUpmd7d39p3RLpVbkLCVYIMZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
+ "@polkadot/x-textdecoder": "^0.3.3",
+ "@polkadot/x-textencoder": "^0.3.3",
"@types/bn.js": "^4.11.6",
"bn.js": "^5.1.3",
"camelcase": "^5.3.1",
"chalk": "^4.1.0",
- "ip-regex": "^4.1.0"
+ "ip-regex": "^4.2.0"
}
+ },
+ "ip-regex": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.2.0.tgz",
+ "integrity": "sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A=="
}
}
},
@@ -4586,30 +4493,79 @@
"integrity": "sha512-GPBCh8YvQmA5bobI4rqRkUhrEHkEWU1+lcJVPbZYsa7jiHFaZpzCLrGQfiqW/vtbU1aBS2wmJ0x1nlt33B9QqQ=="
},
"@polkadot/x-fetch": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-0.3.2.tgz",
- "integrity": "sha512-lk9M8ql/kBBqiZ8KOWj7LFK7P9OxDgVn2fZPNELJzQbfFZwFF8umBPDIWlQIK7wTnlRsQlzOuf6MGEyMK5p42w==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-0.3.3.tgz",
+ "integrity": "sha512-Osa+ifkqlndIW5U5jLnuugLYTd6q/cHkjdfisyYgNev/etsEtXkqesbGvF/UKw5FgZBxhK8sj6jjfProfh2NZw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
"@types/node-fetch": "^2.5.7",
"node-fetch": "^2.6.1"
},
"dependencies": {
- "node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ },
+ "@polkadot/x-textdecoder": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-0.3.3.tgz",
+ "integrity": "sha512-ehbPUUNn34kJh/RV8eQwyLnAFcMQSbtGPKqGRB7GSa/bL7P6hh1QGxB4DwvtlFU//bDTlofsv44ydpjDNmfWLg==",
+ "requires": {
+ "@babel/runtime": "^7.12.1"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ },
+ "@polkadot/x-textencoder": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-0.3.3.tgz",
+ "integrity": "sha512-klbz82L5LxDJTFoCO64G/EFfY1mKXHDlteJMDGFTOim/1oK1ypLOG8/7BmncmQAw2BevA0r1YkvWN+F3muJSag==",
+ "requires": {
+ "@babel/runtime": "^7.12.1"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
}
}
},
"@polkadot/x-ws": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-0.3.2.tgz",
- "integrity": "sha512-1aiG11Py8sgzJsz19melMzvBOn5zeMmfjCPoMryX4//063E0mcfnkujg4O6pTMygxJdFGAV1INB9wvMU9Dg9Wg==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-0.3.3.tgz",
+ "integrity": "sha512-t06ID5QLYi5B8bzlT2fcYsQ09yfLf5Uq9idunKRZj13EwSELaqvZFfn2UmiDFiIB1H5u7c2y+VDWbIdqE8ZxKw==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.12.1",
"@types/websocket": "^1.0.1",
"websocket": "^1.0.32"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
}
},
"@sindresorhus/is": {
@@ -16840,6 +16796,11 @@
"lower-case": "^1.1.1"
}
},
+ "node-fetch": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ },
"node-fetch-npm": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz",
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -23,9 +23,9 @@
"license": "Apache 2.0",
"homepage": "",
"dependencies": {
- "@polkadot/api": "^1.34.1",
- "@polkadot/api-contract": "^1.34.1",
- "@polkadot/types": "^1.34.1",
+ "@polkadot/api": "^2.3.1",
+ "@polkadot/api-contract": "^2.3.1",
+ "@polkadot/types": "^2.3.1",
"@polkadot/util": "^3.4.1",
"@types/bn.js": "^4.11.6",
"chai-as-promised": "^7.1.1"
tests/src/contracts.test.tsdiffbeforeafterboth--- a/tests/src/contracts.test.ts
+++ b/tests/src/contracts.test.ts
@@ -1,129 +1,91 @@
import { expect } from "chai";
import usingApi from "./substrate/substrate-api";
-import promisifySubstrate from "./substrate/promisify-substrate";
import fs from "fs";
-import privateKey from "./substrate/privateKey";
-import { compactAddLength, u8aToU8a } from '@polkadot/util';
-import { Hash, AccountId } from "@polkadot/types/interfaces";
-import { Abi, PromiseContract } from "@polkadot/api-contract";
-import { ISubmittableResult, IKeyringPair } from "@polkadot/types/types";
-import BN from "bn.js";
-import { alicesPublicKey, bobsPublicKey } from "./accounts";
-import { ApiPromise } from "@polkadot/api";
-import { GenericAccountId, u128 } from "@polkadot/types";
-import getBalance from "./substrate/get-balance";
+import { Abi, BlueprintPromise, CodePromise } from "@polkadot/api-contract";
+import { IKeyringPair } from "@polkadot/types/types";
+import { Keyring } from "@polkadot/api";
+import { ApiTypes, SubmittableExtrinsic } from "@polkadot/api/types";
+const value = 0;
+const gasLimit = 3000n * 1000000n;
-function deployContract(api: ApiPromise, contract: Uint8Array, privateKey: IKeyringPair): Promise<Hash> {
- return promisifySubstrate(api, () => {
- return new Promise<Hash>(async (resolve, reject) => {
- const unsubscribe = api.tx.contracts.putCode(contract).signAndSend(privateKey, async result => {
- if(!result.isInBlock){
- return;
+function deployBlueprint(alice: IKeyringPair, code: CodePromise): Promise<BlueprintPromise> {
+ return new Promise<BlueprintPromise>(async (resolve, reject) => {
+ const unsub = await code
+ .createBlueprint()
+ .signAndSend(alice, (result) => {
+ if (result.status.isInBlock || result.status.isFinalized) {
+ // here we have an additional field in the result, containing the blueprint
+ resolve(result.blueprint);
+ unsub();
}
+ })
+ });
+}
- const record = result.findRecord('contracts', 'CodeStored');
+function deployContract(alice: IKeyringPair, blueprint: BlueprintPromise) : Promise<any> {
+ return new Promise<any>(async (resolve, reject) => {
+ const endowment = 1000000000000000n;
+ const initValue = true;
- if(record) {
- (await unsubscribe)();
- resolve(record.event.data[0] as unknown as Hash);
- } else {
- reject('Failed to find contract hash in putCode transaction result.');
- }
- });
- })
- })();
+ const unsub = await blueprint.tx
+ .new(endowment, gasLimit, initValue)
+ .signAndSend(alice, (result) => {
+ if (result.status.isInBlock || result.status.isFinalized) {
+ unsub();
+ resolve(result);
+ }
+ });
+ });
}
-function instantiateContract(api: ApiPromise, contractHash: Hash, args: Uint8Array, privateKey: IKeyringPair): Promise<AccountId> {
- return promisifySubstrate(api, () => {
- return new Promise<AccountId>((resolve, reject) => {
- const unsubscribe = api.tx.contracts.instantiate(1000000000000000n, 1000000000000n, contractHash, args)
- .signAndSend(privateKey, async (result:ISubmittableResult) => {
- if(!result.isInBlock) {
- return;
- }
- const record = result.findRecord('contracts', 'Instantiated');
- if(record) {
- (await unsubscribe)();
- expect(alicesPublicKey).to.be.equal(record.event.data[0].toString());
- resolve(record.event.data[1] as AccountId);
- } else {
- reject('Failed to find instantiated event.');
- }
- });
- });
- })();
-}
-
-function txContractCall(api: ApiPromise, privateKey: IKeyringPair, address: string, call: Uint8Array): Promise<void> {
- return promisifySubstrate(api, async () => {
- return new Promise<void>(async (resolve, reject) => {
- api.tx.contracts.call(address, 0, 1000000000000n, call)
- .signAndSend(privateKey, async result => {
- if(!result.isInBlock) {
- return;
- }
+function runTransaction(privateKey: IKeyringPair, extrinsic: SubmittableExtrinsic<ApiTypes>) {
+ return new Promise<void>(async (resolve, reject) => {
+ extrinsic.signAndSend(privateKey, async result => {
+ if(!result.isInBlock) {
+ return;
+ }
- if(result.findRecord('system', 'ExtrinsicSuccess')) {
- resolve();
- }
- else {
- reject('Failed to execute tx call.');
- }
- })
- });
- })();
+ if(result.findRecord('system', 'ExtrinsicSuccess')) {
+ resolve();
+ }
+ else {
+ reject('Failed to flip value.');
+ }
+ })
+ });
}
describe('Contracts', () => {
it(`Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.`, async () => {
await usingApi(async api => {
+ const keyring = new Keyring({ type: 'sr25519' });
+ const alice = keyring.addFromUri("//Alice");
+
const wasm = fs.readFileSync('./src/flipper/flipper.wasm');
- const contract = compactAddLength(u8aToU8a(wasm));
-
+
const metadata = JSON.parse(fs.readFileSync('./src/flipper/metadata.json').toString('utf-8'));
- const abi = new Abi(api.registry as any, metadata);
+ const abi = new Abi(metadata);
- const alicesPrivateKey = privateKey('//Alice');
+ const code = new CodePromise(api, abi, wasm);
- const contractHash = await deployContract(api, contract, alicesPrivateKey);
-
- const args = abi.constructors[0](true);
- const instanceAccountId = await instantiateContract(api, contractHash, args, alicesPrivateKey);
+ const blueprint = await deployBlueprint(alice, code);
+ const contract = (await deployContract(alice, blueprint))['contract'];
- const contractInstance = new PromiseContract(api, abi, instanceAccountId);
const getFlipValue = async () => {
- return await promisifySubstrate(api, async () => {
- const result = await contractInstance.call('rpc', 'get', 0, new BN('1000000000000'))
- .send(alicesPublicKey);
- if(!result.isSuccess) {
- throw 'Failed to get flipper value';
- }
- return result.output && result.output.valueOf && result.output.valueOf();
- })();
+ const result = await contract.query.get(alice.address, value, gasLimit);
+
+ if(!result.result.isSuccess) {
+ throw `Failed to get flipper value`;
+ }
+ return (result.result.asSuccess.data[0] == 0x00) ? false : true;
}
const initialGetResponse = await getFlipValue();
expect(initialGetResponse).to.be.true;
- await promisifySubstrate(api, async () => {
- return new Promise<void>(async (resolve, reject) => {
- api.tx.contracts.call(contractInstance.address.toString(), 0, 1000000000000n, contractInstance.getMessage('flip').fn())
- .signAndSend(alicesPrivateKey, async result => {
- if(!result.isInBlock) {
- return;
- }
-
- if(result.findRecord('system', 'ExtrinsicSuccess')) {
- resolve();
- }
- else {
- reject('Failed to flip value.');
- }
- })
- });
- })();
+ const flip = contract.exec('flip', value, gasLimit);
+ await runTransaction(alice, flip);
const afterFlipGetResponse = await getFlipValue();
@@ -131,30 +93,31 @@
});
});
- it('Can transfer balance using smart contract.', async () => {
+ it.skip('Can transfer balance using smart contract.', async () => {
await usingApi(async api => {
- const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
- const wasm = fs.readFileSync('./src/balance-transfer-contract/calls.wasm');
- const contract = compactAddLength(u8aToU8a(wasm));
+ // const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
+ // const wasm = fs.readFileSync('./src/balance-transfer-contract/calls.wasm');
+ // const contract = compactAddLength(u8aToU8a(wasm));
+
+ // const metadata = JSON.parse(fs.readFileSync('./src/balance-transfer-contract/metadata.json').toString('utf-8'));
+ // const abi = new Abi(api.registry as any, metadata);
- const metadata = JSON.parse(fs.readFileSync('./src/balance-transfer-contract/metadata.json').toString('utf-8'));
- const abi = new Abi(api.registry as any, metadata);
+ // const alicesPrivateKey = privateKey('//Alice');
- const alicesPrivateKey = privateKey('//Alice');
+ // const contractHash = await deployContract(api, contract, alicesPrivateKey);
- const contractHash = await deployContract(api, contract, alicesPrivateKey);
+ // // const args = abi.constructors[0]();
+ // const instanceAccountId = await instantiateContract(api, contractHash, /*args,*/ alicesPrivateKey);
+ // const contractInstance = new ContractPromise(api, abi, instanceAccountId);
+ // const bob = new GenericAccountId(api.registry, bobsPublicKey);
- const args = abi.constructors[0]();
- const instanceAccountId = await instantiateContract(api, contractHash, args, alicesPrivateKey);
- const contractInstance = new PromiseContract(api, abi, instanceAccountId);
- const bob = new GenericAccountId(api.registry, bobsPublicKey);
- const call = contractInstance.getMessage('balance_transfer').fn(bob, new u128(api.registry, 1000000));
- await txContractCall(api, alicesPrivateKey, contractInstance.address.toString(), call);
+ // const transfer = contractInstance.exec('balance_transfer', 0, 1000000000000n, [bob, new u128(api.registry, 1000000)]);
+ // await runTransaction(alicesPrivateKey, transfer);
- const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
+ // const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
- expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;
- expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;
+ // expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;
+ // expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;
});
})
});
tests/src/flipper/flipper.wasmdiffbeforeafterbothbinary blob — no preview
tests/src/flipper/metadata.jsondiffbeforeafterboth--- a/tests/src/flipper/metadata.json
+++ b/tests/src/flipper/metadata.json
@@ -1,204 +1,106 @@
{
- "registry": {
- "strings": [
- "Storage",
- "flipper",
- "__ink_private",
- "__ink_storage",
- "value",
- "Value",
- "ink_core",
- "storage",
- "cell",
- "SyncCell",
- "sync_cell",
- "Key",
- "ink_primitives",
- "new",
- "init_value",
- "bool",
- "default",
- "flip",
- "get"
- ],
- "types": [
- {
- "id": {
- "custom.name": 1,
- "custom.namespace": [
- 2,
- 2,
- 3,
- 4
- ],
- "custom.params": []
- },
- "def": {
- "struct.fields": [
- {
- "name": 5,
- "type": 2
- }
- ]
- }
- },
- {
- "id": {
- "custom.name": 6,
- "custom.namespace": [
- 7,
- 8,
- 5
- ],
- "custom.params": [
- 3
- ]
- },
- "def": {
- "struct.fields": [
- {
- "name": 9,
- "type": 4
- }
- ]
- }
- },
- {
- "id": "bool",
- "def": "builtin"
- },
- {
- "id": {
- "custom.name": 10,
- "custom.namespace": [
- 7,
- 8,
- 9,
- 11
- ],
- "custom.params": [
- 3
- ]
- },
- "def": {
- "struct.fields": [
- {
- "name": 9,
- "type": 5
- }
- ]
- }
- },
- {
- "id": {
- "custom.name": 12,
- "custom.namespace": [
- 13
- ],
- "custom.params": []
- },
- "def": {
- "tuple_struct.types": [
- 6
- ]
- }
- },
- {
- "id": {
- "array.len": 32,
- "array.type": 7
- },
- "def": "builtin"
- },
- {
- "id": "u8",
- "def": "builtin"
- }
- ]
+ "metadataVersion": "0.1.0",
+ "source": {
+ "hash": "0x36431d9da78a6bb099474e49c9e35a9c3a04272b58815634082626109826cac6",
+ "language": "ink! 3.0.0-rc1",
+ "compiler": "rustc 1.49.0-nightly"
},
- "storage": {
- "struct.type": 1,
- "struct.fields": [
- {
- "name": 5,
- "layout": {
- "struct.type": 2,
- "struct.fields": [
- {
- "name": 9,
- "layout": {
- "range.offset": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "range.len": 1,
- "range.elem_type": 3
- }
- }
- ]
- }
- }
+ "contract": {
+ "name": "flipper",
+ "version": "3.0.0-rc1",
+ "authors": [
+ "Parity Technologies <admin@parity.io>"
]
},
- "contract": {
- "name": 2,
+ "spec": {
"constructors": [
{
- "name": 14,
- "selector": "[\"0x5E\",\"0xBD\",\"0x88\",\"0xD6\"]",
"args": [
{
- "name": 15,
+ "name": "init_value",
"type": {
- "ty": 3,
- "display_name": [
- 16
- ]
+ "displayName": [
+ "bool"
+ ],
+ "type": 1
}
}
],
"docs": [
- "Constructor that initializes the `bool` value to the given `init_value`."
- ]
+ " Creates a new flipper smart contract initialized with the given value."
+ ],
+ "name": [
+ "new"
+ ],
+ "selector": "0xd183512b"
},
{
- "name": 17,
- "selector": "[\"0x02\",\"0x22\",\"0xFF\",\"0x18\"]",
"args": [],
"docs": [
- "Constructor that initializes the `bool` value to `false`.",
- "",
- "Constructors can delegate to other constructors."
- ]
+ " Creates a new flipper smart contract initialized to `false`."
+ ],
+ "name": [
+ "default"
+ ],
+ "selector": "0x6a3712e2"
}
],
+ "docs": [],
+ "events": [],
"messages": [
{
- "name": 18,
- "selector": "[\"0x8C\",\"0x97\",\"0xDB\",\"0x39\"]",
- "mutates": true,
"args": [],
- "return_type": null,
"docs": [
- "A message that can be called on instantiated contracts.",
- "This one flips the value of the stored `bool` from `true`",
- "to `false` and vice versa."
- ]
+ " Flips the current value of the Flipper's bool."
+ ],
+ "mutates": true,
+ "name": [
+ "flip"
+ ],
+ "payable": false,
+ "returnType": null,
+ "selector": "0xc096a5f3"
},
{
- "name": 19,
- "selector": "[\"0x25\",\"0x44\",\"0x4A\",\"0xFE\"]",
- "mutates": false,
"args": [],
- "return_type": {
- "ty": 3,
- "display_name": [
- 16
- ]
- },
"docs": [
- "Simply returns the current value of our `bool`."
- ]
+ " Returns the current value of the Flipper's bool."
+ ],
+ "mutates": false,
+ "name": [
+ "get"
+ ],
+ "payable": false,
+ "returnType": {
+ "displayName": [
+ "bool"
+ ],
+ "type": 1
+ },
+ "selector": "0x1e5ca456"
}
- ],
- "events": [],
- "docs": []
- }
+ ]
+ },
+ "storage": {
+ "struct": {
+ "fields": [
+ {
+ "layout": {
+ "cell": {
+ "key": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "ty": 1
+ }
+ },
+ "name": "value"
+ }
+ ]
+ }
+ },
+ "types": [
+ {
+ "def": {
+ "primitive": "bool"
+ }
+ }
+ ]
}
\ No newline at end of file