difftreelog
merge develop into test/playground-migration
in: master
79 files changed
Cargo.lockdiffbeforeafterboth967 packageslockfile v3
Might be heavy and slow!
addr2line
0.17.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816bdepends onadler
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35feused byaead
0.4.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877depends onaes
0.7.5crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8used byaes-gcm
0.9.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6used byahash
0.7.6crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47aho-corasick
0.7.18crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656fdepends onused byalways-assert
0.1.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbf688625d06217d5b1bb0ea9d9c44a1635fd0ee3534466388d18203174f4d11android_system_properties
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9edepends onused byansi_term
0.12.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanyhow
1.0.61crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum508b352bb5c066aac251f6daf6b36eccd03e8a88e8081cd44959ea277a3af9a8approx
0.5.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6depends onarrayref
0.3.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544arrayvec
0.4.12crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9depends onarrayvec
0.5.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068barrayvec
0.7.2crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6asn1_der
0.7.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21used byassert_matches
1.5.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9async-attributes
1.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5depends onused byasync-channel
1.7.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28async-executor
1.4.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965depends onused byasync-global-executor
2.2.0crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5262ed948da60dd8956c6c5aca4d4163593dddb7b32d73267c93dab7b2e98940depends onasync-io
1.7.0crates.io↘ 11↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5e18f61464ae81cde0a23e713ae8fd299580c54d697a35820cfd0625b8b0e07depends onasync-lock
2.5.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6depends onasync-process
1.4.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60cdepends onasync-std
1.12.0crates.io↘ 20↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5ddepends on- async-attributes
1.1.2 - async-channel
1.7.1 - async-global-executor
2.2.0 - async-io
1.7.0 - async-lock
2.5.0 - async-process
1.4.0 - crossbeam-utils
0.8.11 - futures-channel
0.3.23 - futures-core
0.3.23 - futures-io
0.3.23 - futures-lite
1.12.0 - gloo-timers
0.2.4 - kv-log-macro
1.0.7 - log
0.4.17 - memchr
2.5.0 - once_cell
1.13.0 - pin-project-lite
0.2.9 - pin-utils
0.1.0 - slab
0.4.7 - wasm-bindgen-futures
0.4.32
- async-attributes
async-std-resolver
0.21.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f2f8a4a203be3325981310ab243a28e6e4ea55b6519bffce05d41ab60e09ad8depends onused byasync-task
4.3.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524async-trait
0.1.57crates.io↘ 3↖ 41sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826fdepends onused by- async-std-resolver
0.21.2 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - jsonrpsee-core
0.14.0 - libp2p-autonat
0.5.0 - libp2p-request-response
0.19.0 - orchestra
0.0.1 - polkadot-network-bridge
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-service
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-service
0.10.0-dev - sp-authorship
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-test-client
2.0.1 - trust-dns-proto
0.21.2
- async-std-resolver
asynchronous-codec
0.6.0crates.io↘ 5↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690atomic-waker
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2aused byatty
0.2.14crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onauto_impl
0.5.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4used byautocfg
1.1.0crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fabackoff
0.4.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1backtrace
0.3.66crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7depends onbase-x
0.2.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270used bybase16ct
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cceused bybase58
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581used bybase64
0.13.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fdbeef
0.5.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1depends onbeefy-gadget
4.0.0-devgithub.com/paritytech/substrate↘ 27↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- beefy-primitives
4.0.0-dev - fnv
1.0.7 - futures
0.3.23 - futures-timer
3.0.2 - hex
0.4.3 - log
0.4.17 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32 - wasm-timer
0.2.5
- beefy-primitives
beefy-gadget-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bybeefy-merkle-tree
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onbeefy-primitives
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-merkle-tree
4.0.0-dev - kusama-runtime
0.9.27 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - polkadot-client
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - rococo-runtime
0.9.27 - westend-runtime
0.9.27
- beefy-gadget
bimap
0.6.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc0455254eb5c6964c4545d8bac815e1a1be4f3afe0ae695ea539c12d728d44bused bybincode
1.3.3crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcaddepends onbindgen
0.59.2crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8depends onused bybitflags
1.3.2crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718abitvec
0.20.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848depends onused bybitvec
1.0.1crates.io↘ 4↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9cdepends onused by- kusama-runtime
0.9.27 - parity-scale-codec
3.1.5 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - scale-info
2.1.2 - westend-runtime
0.9.27
- kusama-runtime
blake2
0.10.4crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388depends onblake2-rfc
0.2.18crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400depends onused byblake2b_simd
1.0.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127used byblake2s_simd
1.0.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4used byblake3
1.3.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183fused byblock-buffer
0.7.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bused byblock-buffer
0.9.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-buffer
0.10.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324depends onused byblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused byblock-padding
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2caeused byblocking
1.2.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728accccdepends onbounded-vec
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3372be4090bf9d4da36bd8ba7ce6ca1669503d0cf6e667236c6df7f053153eb6depends onbs58
0.4.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
0.2.17crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223depends onused bybuild-helper
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5fdepends onbumpalo
3.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3used bybyte-slice-cast
1.2.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067ebyte-tools
0.3.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7byteorder
1.4.3crates.io↘ 0↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610used by- block-buffer
0.7.3 - cuckoofilter
0.5.0 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-pre.1 - dns-parser
0.8.0 - fixed-hash
0.7.0 - fxhash
0.2.1 - libp2p-gossipsub
0.39.0 - merlin
2.0.1 - multiaddr
0.14.0 - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-packet-utils
0.5.1 - parity-wasm
0.32.0 - sp-core
6.0.0 - sp-core-hashing
4.0.0 - thrift
0.15.0 - uint
0.9.3
- block-buffer
bytes
1.2.1crates.io↘ 0↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856dbused by- asynchronous-codec
0.6.0 - ethereum
0.12.0 - h2
0.3.13 - http
0.2.8 - http-body
0.4.5 - hyper
0.14.20 - libp2p
0.46.1 - libp2p-gossipsub
0.39.0 - libp2p-kad
0.38.0 - libp2p-mplex
0.34.0 - libp2p-noise
0.37.0 - libp2p-plaintext
0.34.0 - libp2p-relay
0.10.0 - libp2p-request-response
0.19.0 - multistream-select
0.11.0 - netlink-proto
0.10.0 - netlink-sys
0.8.3 - polkadot-network-bridge
0.9.27 - prost
0.10.4 - prost-build
0.10.4 - prost-codec
0.1.0 - prost-types
0.10.1 - rlp
0.5.1 - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - soketto
0.7.1 - tokio
1.20.1 - tokio-util
0.7.3 - unsigned-varint
0.7.1
- asynchronous-codec
bzip2-sys
0.1.11+1.0.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdcdepends onused bycache-padded
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692cused bycamino
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1edepends onused bycargo_metadata
0.14.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181facargo-platform
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27depends onused bycc
1.0.73crates.io↘ 1↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11depends oncexpr
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766depends onused bycfg_aliases
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89ecfg-if
0.1.10crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822cfg-if
1.0.0crates.io↘ 0↖ 44sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- aes
0.7.5 - async-process
1.4.0 - backtrace
0.3.66 - blake3
1.3.1 - chacha20
0.8.2 - cpp_demangle
0.3.5 - crc32fast
1.3.2 - crossbeam-channel
0.5.6 - crossbeam-deque
0.8.2 - crossbeam-epoch
0.9.10 - crossbeam-queue
0.3.6 - crossbeam-utils
0.8.11 - directories-next
2.0.0 - filetime
0.2.17 - frame-metadata
15.0.0 - getrandom
0.1.16 - getrandom
0.2.7 - instant
0.1.12 - k256
0.10.4 - libloading
0.7.3 - log
0.4.17 - nix
0.24.2 - parity-util-mem
0.11.0 - parking_lot_core
0.8.5 - parking_lot_core
0.9.3 - polling
2.2.0 - polyval
0.5.3 - prometheus
0.13.1 - prost-build
0.10.4 - sc-executor-wasmtime
0.10.0-dev - scale-info
2.1.2 - sha-1
0.9.8 - sha-1
0.10.0 - sha2
0.9.9 - sha2
0.10.2 - tempfile
3.3.0 - tracing
0.1.36 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - wasm-bindgen
0.2.82 - wasm-bindgen-futures
0.4.32 - wasmtime
0.38.3 - wasmtime-jit
0.38.3 - wasmtime-runtime
0.38.3
- aes
chacha20
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6used bychacha20poly1305
0.9.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5used bychrono
0.4.22crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1depends oncid
0.8.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2used bycipher
0.3.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7depends onckb-merkle-mountain-range
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f061f97d64fd1822664bdfb722f7ae5469a97b77567390f7442be5b5dc82a5bdepends onused byclang-sys
1.3.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69bdepends onused byclap
3.2.17crates.io↘ 9↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum29e724a68d9319343bb3328c9cc2dfde263f4b3142ee1059a9980580171c954bdepends onclap_derive
3.2.17crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum13547f7012c01ab4a0e8f8967730ada8f9fdf419e8b6c792788f39cf4e46eefaused byclap_lex
0.2.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5depends onused bycmake
0.1.48crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443adepends onused bycoarsetime
0.1.22crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum454038500439e141804c655b4cd1bc6a70bcb95cd2bc9463af5661b6956f0e46comfy-table
6.0.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum121d8a5b0346092c18a4b2fd6f620d7a06f0eb7ac0a45860939a0884bc579c56concurrent-queue
1.2.4crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9cdepends onconstant_time_eq
0.1.5crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbcconvert_case
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0eused bycore-foundation
0.9.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146depends oncore-foundation-sys
0.8.3crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dccore2
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505depends onused bycpp_demangle
0.3.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710fdepends onused bycpufeatures
0.2.2crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4bdepends oncranelift-bforest
0.85.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum749d0d6022c9038dccf480bdde2a38d435937335bf2bb0f14e815d94517cdce8depends onused bycranelift-codegen
0.85.3crates.io↘ 10↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume94370cc7b37bf652ccd8bb8f09bd900997f7ccf97520edfc75554bb5c4abbeadepends oncranelift-codegen-meta
0.85.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume0a3cea8fdab90e44018c5b9a1dfd460d8ee265ac354337150222a354628bdb6depends onused bycranelift-entity
0.85.3crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09eaeacfcd2356fe0e66b295e8f9d59fdd1ac3ace53ba50de14d628ec902f72ddepends oncranelift-frontend
0.85.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdba69c9980d5ffd62c18a2bde927855fcd7c8dc92f29feaf8636052662cbd99ccranelift-isle
0.85.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2920dc1e05cac40304456ed3301fde2c09bd6a9b0210bcfa2f101398d628d5bused bycranelift-native
0.85.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf04dfa45f9b2a6f587c564d6b63388e00cd6589d2df6ea2758cf79e1a13285e6used bycranelift-wasm
0.85.3crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31a46513ae6f26f3f267d8d75b5373d555fbbd1e68681f348d99df43f747ec54depends onused bycrc32fast
1.3.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880ddepends oncrossbeam-channel
0.5.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521depends onused bycrossbeam-deque
0.8.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fcused bycrossbeam-epoch
0.9.10crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1used bycrossbeam-queue
0.3.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7depends oncrossbeam-utils
0.8.11crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bcdepends oncrunchy
0.2.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-bigint
0.3.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21crypto-common
0.1.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3depends onused bycrypto-mac
0.8.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onused bycrypto-mac
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714depends onused byctor
0.1.23crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cbdepends onused byctr
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761eadepends onused bycuckoofilter
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb810a8449931679f64cd7eef1bbd0fa315801b6d5d9cdc1ace2804d6529eee18depends onused bycumulus-client-cli
0.1.0github.com/paritytech/cumulus↘ 8↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-client-collator
0.1.0github.com/paritytech/cumulus↘ 17↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.23 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-overseer
0.9.27 - polkadot-primitives
0.9.27 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - tracing
0.1.36
- cumulus-client-consensus-common
cumulus-client-consensus-aura
0.1.0github.com/paritytech/cumulus↘ 22↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- async-trait
0.1.57 - cumulus-client-consensus-common
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.23 - parity-scale-codec
3.1.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tracing
0.1.36
used by- async-trait
cumulus-client-consensus-common
0.1.0github.com/paritytech/cumulus↘ 14↖ 4sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-client-network
0.1.0github.com/paritytech/cumulus↘ 18↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- async-trait
0.1.57 - cumulus-relay-chain-interface
0.1.0 - derive_more
0.99.17 - futures
0.3.23 - futures-timer
3.0.2 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - tracing
0.1.36
- async-trait
cumulus-client-pov-recovery
0.1.0github.com/paritytech/cumulus↘ 17↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.23 - futures-timer
3.0.2 - parity-scale-codec
3.1.5 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-overseer
0.9.27 - polkadot-primitives
0.9.27 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-maybe-compressed-blob
4.1.0-dev - sp-runtime
6.0.0 - tracing
0.1.36
used by- cumulus-primitives-core
cumulus-client-service
0.1.0github.com/paritytech/cumulus↘ 21↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - parking_lot
0.12.1 - polkadot-overseer
0.9.27 - polkadot-primitives
0.9.27 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - tracing
0.1.36
used by- cumulus-client-cli
cumulus-pallet-aura-ext
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-pallet-dmp-queue
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-pallet-parachain-system
0.1.0github.com/paritytech/cumulus↘ 23↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- cumulus-pallet-parachain-system-proc-macro
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - environmental
1.1.3 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - log
0.4.17 - pallet-balances
4.0.0-dev - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - scale-info
2.1.2 - serde
1.0.143 - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-std
4.0.0 - sp-trie
6.0.0 - sp-version
5.0.0 - xcm
0.9.27
- cumulus-pallet-parachain-system-proc-macro
cumulus-pallet-parachain-system-proc-macro
0.1.0github.com/paritytech/cumulus↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbcumulus-pallet-xcm
0.1.0github.com/paritytech/cumulus↘ 10↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-pallet-xcmp-queue
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-primitives-core
0.1.0github.com/paritytech/cumulus↘ 9↖ 20sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - opal-runtime
0.9.27 - parachain-info
0.1.0 - quartz-runtime
0.9.27 - unique-node
0.9.27 - unique-runtime
0.9.27
- cumulus-client-collator
cumulus-primitives-parachain-inherent
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- async-trait
0.1.57 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - parity-scale-codec
3.1.5 - sc-client-api
4.0.0-dev - scale-info
2.1.2 - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-std
4.0.0 - sp-storage
6.0.0 - sp-trie
6.0.0 - tracing
0.1.36
- async-trait
cumulus-primitives-timestamp
0.1.0github.com/paritytech/cumulus↘ 6↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-primitives-utility
0.1.0github.com/paritytech/cumulus↘ 12↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncumulus-relay-chain-inprocess-interface
0.1.0github.com/paritytech/cumulus↘ 23↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- async-trait
0.1.57 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.23 - futures-timer
3.0.2 - parking_lot
0.12.1 - polkadot-cli
0.9.27 - polkadot-client
0.9.27 - polkadot-service
0.9.27 - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
0.10.0-dev - sc-network
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - tracing
0.1.36
used by- async-trait
cumulus-relay-chain-interface
0.1.0github.com/paritytech/cumulus↘ 16↖ 9sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- async-trait
0.1.57 - cumulus-primitives-core
0.1.0 - derive_more
0.99.17 - futures
0.3.23 - jsonrpsee-core
0.14.0 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-overseer
0.9.27 - polkadot-service
0.9.27 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - thiserror
1.0.32
- async-trait
cumulus-relay-chain-rpc-interface
0.1.0github.com/paritytech/cumulus↘ 20↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends on- async-trait
0.1.57 - backoff
0.4.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.23 - futures-timer
3.0.2 - jsonrpsee
0.14.0 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-service
0.9.27 - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-storage
6.0.0 - tokio
1.20.1 - tracing
0.1.36 - url
2.2.2
used by- async-trait
cumulus-test-relay-sproof-builder
0.1.0github.com/paritytech/cumulus↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends oncurve25519-dalek
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216used bycurve25519-dalek
3.2.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61curve25519-dalek
4.0.0-pre.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcfused bydata-encoding
2.3.2crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57data-encoding-macro
0.1.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029acaused bydata-encoding-macro-internal
0.1.10crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038dbdepends onused byder
0.5.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705cdepends onderivative
2.2.0crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770bdepends onderive_more
0.99.17crates.io↘ 5↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321used by- cumulus-client-network
0.1.0 - cumulus-relay-chain-interface
0.1.0 - polkadot-availability-distribution
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-parachain
0.9.27 - polkadot-runtime-parachains
0.9.27 - prioritized-metered-channel
0.2.0 - reed-solomon-novelpoly
1.0.0 - scale-info
2.1.2
- cumulus-client-network
digest
0.8.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondigest
0.10.3crates.io↘ 3↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506directories
4.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210depends onused bydirectories-next
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbcdepends onused bydirs-sys
0.3.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6depends onused bydirs-sys-next
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4ddepends onused bydns-parser
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbeadepends onused bydowncast-rs
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650used bydtoa
1.0.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6053ff46b5639ceb91756a85a4c8914668393a03170efd79c8884a529d80656used bydyn-clonable
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4depends onused bydyn-clonable-impl
0.9.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5depends onused bydyn-clone
1.0.9crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f94fa09c2aeea5b8839e414b7b841bf429fd25b9c522116ac97ee87856d88b2ecdsa
0.13.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9used byed25519
1.5.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369depends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9deither
1.7.0crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781beelliptic-curve
0.11.12crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6depends onused byenum-as-inner
0.4.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73used byenumflags2
0.7.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccbdepends onused byenumflags2_derive
0.7.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5aedepends onused byenumn
0.1.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum038b1afa59052df211f9efd58f8b1d84c242935ede1c3dbaed26b018a9e06ae2depends onused byenv_logger
0.9.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3environmental
1.1.3crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797errno
0.2.8crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1used byerrno-dragonfly
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bfdepends onused byethbloom
0.12.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007efdepends onused byethereum
0.12.0crates.io↘ 11↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23750149fe8834c0e24bb9adcbacbe06c45b9861f15df53e09f26cb7c4ab91efdepends onethereum-types
0.13.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6depends onevent-listener
2.5.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0evm
0.35.0github.com/uniquenetwork/evm↘ 13↖ 4sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.27#e9252ed42dc26fc85b6703b1ba50660a08209e55depends onevm-coder
0.1.3workspace↘ 8↖ 11depends onevm-coder-procedural
0.2.0workspace↘ 6↖ 1evm-core
0.35.0github.com/uniquenetwork/evm↘ 4↖ 4sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.27#e9252ed42dc26fc85b6703b1ba50660a08209e55evm-gasometer
0.35.0github.com/uniquenetwork/evm↘ 4↖ 1sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.27#e9252ed42dc26fc85b6703b1ba50660a08209e55used byevm-runtime
0.35.0github.com/uniquenetwork/evm↘ 5↖ 2sourcegit+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.27#e9252ed42dc26fc85b6703b1ba50660a08209e55used byexit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byexpander
0.0.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881used byexpander
0.0.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3774182a5df13c3d1690311ad32fbe913feef26baba609fa2dd5f72042bd2ab6fallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.8.0crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499depends onfatality
0.0.6crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ad875162843b0d046276327afe0136e9ed3a23d5a754210fb6f1f33610d39abdepends onused by- polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-statement-distribution
0.9.27
- polkadot-availability-distribution
fatality-proc-macro
0.0.6crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bddepends onused byfc-consensus
2.0.0-devgithub.com/uniquenetwork/frontier↘ 12↖ 1sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onused byfc-db
2.0.0-devgithub.com/uniquenetwork/frontier↘ 9↖ 5sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onfc-mapping-sync
2.0.0-devgithub.com/uniquenetwork/frontier↘ 10↖ 2sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onfc-rpc
2.0.0-devgithub.com/uniquenetwork/frontier↘ 33↖ 2sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends on- ethereum
0.12.0 - ethereum-types
0.13.1 - evm
0.35.0 - fc-db
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.23 - hex
0.4.3 - jsonrpsee
0.14.0 - libsecp256k1
0.7.1 - log
0.4.17 - lru
0.7.8 - parity-scale-codec
3.1.5 - prometheus
0.13.1 - rand
0.8.5 - rlp
0.5.1 - rustc-hex
2.1.0 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-storage
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.20.1
- ethereum
fc-rpc-core
1.1.0-devgithub.com/uniquenetwork/frontier↘ 7↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byff
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum131655483be284720a17d74ff97592b8e76576dc25563148601df2d7c9080924depends onfile-per-thread-logger
0.1.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02fdepends onused byfiletime
0.2.17crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86cfinality-grandpa
0.16.0crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5depends onfixed-hash
0.7.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493cfixedbitset
0.4.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80used byflate2
1.0.24crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6flexi_logger
0.22.6crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c76a80dd14a27fc3d8bc696502132cb52b3f227256fd8601166c3a35e45f409depends onused byfnv
1.0.7crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
3.0.0github.com/paritytech/substrate↘ 1↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onform_urlencoded
1.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191depends onused byfp-consensus
2.0.0-devgithub.com/uniquenetwork/frontier↘ 5↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cfp-evm
3.0.0-devgithub.com/uniquenetwork/frontier↘ 7↖ 7sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onfp-evm-mapping
0.1.0github.com/uniquenetwork/frontier↘ 2↖ 9sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onfp-rpc
3.0.0-devgithub.com/uniquenetwork/frontier↘ 10↖ 10sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onfp-self-contained
1.0.0-devgithub.com/uniquenetwork/frontier↘ 9↖ 4sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onfp-storage
2.0.0github.com/uniquenetwork/frontier↘ 1↖ 4sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onframe-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 15↖ 61sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- frame-benchmarking-cli
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-migration
0.1.1 - pallet-fungible
0.1.5 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.5 - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.2 - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm-benchmarks
0.9.27 - polkadot-client
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - unique-node
0.9.27 - unique-runtime
0.9.27 - westend-runtime
0.9.27 - xcm-executor
0.9.27
- frame-benchmarking-cli
frame-benchmarking-cli
4.0.0-devgithub.com/paritytech/substrate↘ 44↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- Inflector
0.11.4 - chrono
0.4.22 - clap
3.2.17 - comfy-table
6.0.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - gethostname
0.2.3 - handlebars
4.3.3 - hash-db
0.15.2 - hex
0.4.3 - itertools
0.10.3 - kvdb
0.11.0 - lazy_static
1.4.0 - linked-hash-map
0.5.6 - log
0.4.17 - memory-db
0.29.0 - parity-scale-codec
3.1.5 - rand
0.8.5 - rand_pcg
0.3.1 - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - serde
1.0.143 - serde_json
1.0.83 - serde_nanos
0.1.2 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-database
4.0.0-dev - sp-externalities
0.12.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-trie
6.0.0 - tempfile
3.3.0 - thiserror
1.0.32 - thousands
0.2.0
- Inflector
frame-election-provider-solution-type
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05frame-election-provider-support
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- kusama-runtime
0.9.27 - pallet-bags-list
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-test-runtime
0.9.27 - westend-runtime
0.9.27
- kusama-runtime
frame-executive
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onframe-metadata
15.0.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2dused byframe-support
4.0.0-devgithub.com/paritytech/substrate↘ 23↖ 103sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- bitflags
1.3.2 - frame-metadata
15.0.0 - frame-support-procedural
4.0.0-dev - impl-trait-for-tuples
0.2.2 - k256
0.10.4 - log
0.4.17 - once_cell
1.13.0 - parity-scale-codec
3.1.5 - paste
1.0.8 - scale-info
2.1.2 - serde
1.0.143 - smallvec
1.9.0 - sp-arithmetic
5.0.0 - sp-core
6.0.0 - sp-core-hashing-proc-macro
5.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-state-machine
0.12.0 - sp-std
4.0.0 - sp-tracing
5.0.0 - tt-call
1.0.8
used by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.27 - kusama-runtime-constants
0.9.27 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.5 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - parachain-info
0.1.0 - polkadot-parachain
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-constants
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - rococo-runtime-constants
0.9.27 - test-runtime-constants
0.9.27 - tests
0.1.1 - unique-runtime
0.9.27 - up-common
0.9.27 - up-data-structs
0.2.2 - westend-runtime
0.9.27 - westend-runtime-constants
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- bitflags
frame-support-procedural
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused byframe-support-procedural-tools
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onframe-support-procedural-tools-derive
3.0.0github.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onframe-system
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 92sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.5 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - parachain-info
0.1.0 - polkadot-client
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - tests
0.1.1 - unique-runtime
0.9.27 - up-data-structs
0.2.2 - westend-runtime
0.9.27 - xcm-builder
0.9.27
- cumulus-pallet-aura-ext
frame-system-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onframe-system-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onframe-try-runtime
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05fs_extra
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394fs-err
2.7.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5bd79fa345a495d3ae89fb7165fec01c0e72f41821d642dda363a1e97975652efs-swap
0.2.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03d47dad3685eceed8488986cad3d5027165ea5edb164331770e2059555f10a5used byfs2
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213depends onused byfunty
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7used byfunty
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9cused byfutures
0.1.31crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678used byfutures
0.3.23crates.io↘ 7↖ 122sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab30e97ab6aacfe635fad58f22c2bb06c8b685f7421eb1e064a729e2a5f481fadepends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - exit-future
0.2.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.16.0 - if-watch
1.1.1 - libp2p
0.46.1 - libp2p-autonat
0.5.0 - libp2p-core
0.34.0 - libp2p-deflate
0.34.0 - libp2p-dns
0.34.0 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-mdns
0.38.0 - libp2p-mplex
0.34.0 - libp2p-noise
0.37.0 - libp2p-ping
0.37.0 - libp2p-plaintext
0.34.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - libp2p-request-response
0.19.0 - libp2p-swarm
0.37.0 - libp2p-tcp
0.34.0 - libp2p-uds
0.33.0 - libp2p-wasm-ext
0.34.0 - libp2p-websocket
0.36.0 - libp2p-yamux
0.38.0 - mick-jaeger
0.1.8 - multistream-select
0.11.0 - netlink-proto
0.10.0 - netlink-sys
0.8.3 - orchestra
0.0.1 - polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-cli
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27 - polkadot-test-service
0.9.27 - prioritized-metered-channel
0.2.0 - rtnetlink
0.10.1 - rw-stream-sink
0.3.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-io
6.0.0 - sp-keystore
0.12.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - substrate-test-utils
4.0.0-dev - unique-node
0.9.27 - unique-rpc
0.1.1 - wasm-timer
0.2.5 - yamux
0.10.2
- beefy-gadget
futures-channel
0.3.23crates.io↘ 2↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bfc52cbddcfd745bf1740338492bb0bd83d76c67b445f91c5fb29fae29ecaa1depends onfutures-core
0.3.23crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2acedae88d38235936c3922476b10fced7b2b68136f5e3c03c2d5be348a1115futures-executor
0.3.23crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d11aa21b5b587a64682c0094c2bdd4df0076c5324961a40cc3abd7f37930528used byfutures-io
0.3.23crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93a66fc6d035a26a3ae255a6d2bca35eda63ae4c5512bef54449113f7a1228e5futures-lite
1.12.0crates.io↘ 7↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48depends onfutures-macro
0.3.23crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045ddepends onused byfutures-rustls
0.22.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bddepends onused byfutures-sink
0.3.23crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765futures-task
0.3.23crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum842fc63b931f4056a24d59de13fb1272134ce261816e063e634ad0c15cdc5306futures-timer
3.0.2crates.io↘ 0↖ 44sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cused by- beefy-gadget
4.0.0-dev - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.16.0 - jsonrpsee-core
0.14.0 - libp2p
0.46.1 - libp2p-autonat
0.5.0 - libp2p-core
0.34.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-ping
0.37.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - libp2p-swarm
0.37.0 - libp2p-tcp
0.34.0 - orchestra
0.0.1 - polkadot-collator-protocol
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-overseer
0.9.27 - prioritized-metered-channel
0.2.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-consensus
0.10.0-dev - sp-timestamp
4.0.0-dev
- beefy-gadget
futures-util
0.3.23crates.io↘ 11↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0828a5471e340229c11c77ca80017937ce3c58cb788a17e5f1c2d5c485a9577depends onused by- async-std-resolver
0.21.2 - asynchronous-codec
0.6.0 - futures
0.3.23 - futures-executor
0.3.23 - h2
0.3.13 - hyper
0.14.20 - jsonrpsee-client-transport
0.14.0 - jsonrpsee-core
0.14.0 - jsonrpsee-http-server
0.14.0 - jsonrpsee-ws-server
0.14.0 - substrate-prometheus-endpoint
0.10.0-dev - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - unsigned-varint
0.7.1
- async-std-resolver
fxhash
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50cdepends onused bygeneric-array
0.12.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bddepends onused bygeneric-array
0.14.6crates.io↘ 2↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9depends ongethostname
0.2.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862edepends ongetrandom
0.1.16crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.7crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6ghash
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99depends onused bygimli
0.26.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5dglob
0.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574globset
0.4.9crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0aused bygloo-timers
0.2.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9used bygroup
0.11.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89depends onused byh2
0.3.13crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57depends onused byhandlebars
4.3.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum360d9740069b2f6cbb63ce2dbaa71a20d3185350cbb990d7bebeb9318415eb17hash-db
0.15.2crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364ahash256-std-hasher
0.15.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2depends onhashbrown
0.11.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726edepends onused byhashbrown
0.12.3crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888depends onheck
0.4.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9hermit-abi
0.1.19crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhex
0.4.3crates.io↘ 0↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70used by- beefy-gadget
4.0.0-dev - evm-coder
0.1.3 - evm-coder-procedural
0.2.0 - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-evm
6.0.0-dev - parity-db
0.3.16 - polkadot-test-service
0.9.27 - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sp-core
6.0.0 - substrate-test-client
2.0.1 - uint
0.9.3
- beefy-gadget
hex_fmt
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336fused byhex-literal
0.3.4crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0hmac
0.8.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840depends onhmac
0.11.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69bdepends onhmac-drbg
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1depends onused byhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhttp
0.2.8crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399depends onhttp-body
0.4.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1depends onused byhttparse
1.7.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04cused byhttpdate
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421used byhumantime
2.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4used byhyper
0.14.20crates.io↘ 16↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbacdepends onhyper-rustls
0.23.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cacdepends onused byiana-time-zone
0.1.45crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef5528d9c2817db4e10cc78f8d4c8228906e5854f389ff6b076cee3572a09d35depends onused byidna
0.2.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8if-addrs
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9depends onused byif-watch
1.1.1crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum015a7df1eb6dda30df37f34b63ada9b7b352984b0e84de2a20ed526345000791depends onimpl-codec
0.6.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2fdepends onimpl-rlp
0.3.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808depends onimpl-serde
0.3.2crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5cdepends onimpl-trait-for-tuples
0.2.2crates.io↘ 3↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395ebdepends onused by- cumulus-pallet-parachain-system
0.1.0 - evm-coder
0.1.3 - fp-evm
3.0.0-dev - frame-support
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-session
4.0.0-dev - pallet-treasury
4.0.0-dev - parity-scale-codec
2.3.1 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - polkadot-runtime-common
0.9.27 - sc-chain-spec
4.0.0-dev - sp-inherents
4.0.0-dev - sp-runtime
6.0.0 - sp-runtime-interface
6.0.0 - sp-wasm-interface
6.0.0 - up-sponsorship
0.1.0 - xcm
0.9.27 - xcm-executor
0.9.27
- cumulus-pallet-parachain-system
indexmap
1.9.1crates.io↘ 3↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41edepends onInflector
0.11.4crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninstant
0.1.12crates.io↘ 1↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends oninteger-encoding
3.0.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02used byinteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byio-lifetimes
0.5.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec58677acfea8a15352d42fc87d11d63596ade9239e0a7c9352914417515dbe6used byio-lifetimes
0.7.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24c3f4eff5495aee4c0399d7b6a0dc2b6e81be84242ffbfcf253ebacccc1d0cbused byip_network
0.4.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1ipconfig
0.3.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98used byipnet
2.5.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592bitertools
0.10.3crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3depends onitoa
0.4.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4used byitoa
1.0.3crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754jobserver
0.1.24crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fadepends onused byjs-sys
0.3.59crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2depends onjsonrpsee
0.14.0github.com/uniquenetwork/jsonrpsee↘ 7↖ 22sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8depends onused by- beefy-gadget-rpc
4.0.0-dev - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-rpc
0.9.27 - remote-externalities
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.3 - unique-node
0.9.27 - unique-rpc
0.1.1
- beefy-gadget-rpc
jsonrpsee-client-transport
0.14.0github.com/uniquenetwork/jsonrpsee↘ 13↖ 1sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8depends onused byjsonrpsee-core
0.14.0github.com/uniquenetwork/jsonrpsee↘ 22↖ 6sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8depends on- anyhow
1.0.61 - arrayvec
0.7.2 - async-lock
2.5.0 - async-trait
0.1.57 - beef
0.5.2 - futures-channel
0.3.23 - futures-timer
3.0.2 - futures-util
0.3.23 - globset
0.4.9 - hyper
0.14.20 - jsonrpsee-types
0.14.0 - lazy_static
1.4.0 - parking_lot
0.12.1 - rand
0.8.5 - rustc-hash
1.1.0 - serde
1.0.143 - serde_json
1.0.83 - soketto
0.7.1 - thiserror
1.0.32 - tokio
1.20.1 - tracing
0.1.36 - unicase
2.6.0
- anyhow
jsonrpsee-http-server
0.14.0github.com/uniquenetwork/jsonrpsee↘ 9↖ 1sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8depends onused byjsonrpsee-proc-macros
0.14.0github.com/uniquenetwork/jsonrpsee↘ 4↖ 1sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8used byjsonrpsee-types
0.14.0github.com/uniquenetwork/jsonrpsee↘ 6↖ 6sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8jsonrpsee-ws-client
0.14.0github.com/uniquenetwork/jsonrpsee↘ 3↖ 1sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8used byjsonrpsee-ws-server
0.14.0github.com/uniquenetwork/jsonrpsee↘ 10↖ 1sourcegit+https://github.com/uniquenetwork/jsonrpsee?branch=unique-v0.14.0-fix-unknown-fields#01bb8a7ec51880c79206bdcac4f09d54e58b2da8depends onused byk256
0.10.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2dused bykeccak
0.1.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838kusama-runtime
0.9.27github.com/paritytech/polkadot↘ 86↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - kusama-runtime-constants
0.9.27 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - parity-scale-codec
3.1.5 - polkadot-primitives
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.143 - serde_derive
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- beefy-primitives
kusama-runtime-constants
0.9.27github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bykv-log-macro
1.0.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977fdepends onused bykvdb
0.11.0crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma301d8ecb7989d4a6e2c57a49baca77d353bdbf879909debe3f375fe25d61f86depends onused by- frame-benchmarking-cli
4.0.0-dev - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-service
0.9.27 - sc-client-db
0.10.0-dev - sp-database
4.0.0-dev
- frame-benchmarking-cli
kvdb-memorydb
0.11.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumece7e668abd21387aeb6628130a6f4c802787f014fa46bc83221448322250357used bykvdb-rocksdb
0.15.2crates.io↘ 10↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca7fbdfd71cd663dceb0faf3367a99f8cf724514933e9867cec4995b6027cbc1depends onlazy_static
1.4.0crates.io↘ 0↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.59.2 - flexi_logger
0.22.6 - frame-benchmarking-cli
4.0.0-dev - fs-swap
0.2.6 - jsonrpsee-core
0.14.0 - libp2p
0.46.1 - libp2p-core
0.34.0 - libp2p-mdns
0.38.0 - libp2p-noise
0.37.0 - polkadot-node-jaeger
0.9.27 - prometheus
0.13.1 - prost-build
0.10.4 - sc-executor
0.10.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - schannel
0.1.20 - sharded-slab
0.1.4 - sp-core
6.0.0 - sp-keyring
6.0.0 - sp-panic-handler
4.0.0 - statrs
0.15.0 - tracing-log
0.1.3 - tracing-subscriber
0.2.25 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - wasmtime
0.38.3 - wasmtime-jit-debug
0.38.3 - which
4.2.5
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used bylibc
0.2.131crates.io↘ 0↖ 74sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04c3b4822ccebfa39c02fc03d1534441b22ead323fa0f48bb7ddd8e6ba076a40used by- android_system_properties
0.1.4 - async-io
1.7.0 - async-process
1.4.0 - atty
0.2.14 - backtrace
0.3.66 - bzip2-sys
0.1.11+1.0.8 - clang-sys
1.3.3 - coarsetime
0.1.22 - core-foundation
0.9.3 - cpufeatures
0.2.2 - cranelift-native
0.85.3 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - errno-dragonfly
0.1.2 - fdlimit
0.2.1 - filetime
0.2.17 - fs-swap
0.2.6 - fs2
0.4.3 - gethostname
0.2.3 - getrandom
0.1.16 - getrandom
0.2.7 - hermit-abi
0.1.19 - hostname
0.3.1 - if-addrs
0.7.0 - jobserver
0.1.24 - libp2p-tcp
0.34.0 - librocksdb-sys
0.6.1+6.28.2 - lz4
1.23.3 - lz4-sys
1.9.3 - mach
0.3.2 - memfd
0.4.1 - memmap2
0.2.3 - memmap2
0.5.7 - mio
0.8.4 - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-sys
0.8.3 - nix
0.24.2 - num_cpus
1.13.1 - num_threads
0.1.6 - parity-db
0.3.16 - parking_lot_core
0.8.5 - parking_lot_core
0.9.3 - polling
2.2.0 - rand
0.7.3 - rand
0.8.5 - region
2.2.0 - ring
0.16.20 - rocksdb
0.18.0 - rpassword
5.0.1 - rustix
0.33.7 - rustix
0.35.7 - sc-executor-wasmtime
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - security-framework
2.6.1 - security-framework-sys
2.6.1 - signal-hook
0.3.14 - signal-hook-registry
1.4.0 - socket2
0.4.4 - static_init
0.5.2 - system-configuration-sys
0.5.0 - tempfile
3.3.0 - tikv-jemalloc-sys
0.4.3+5.2.1-patched.2 - time
0.1.44 - time
0.3.9 - tokio
1.20.1 - wasmi
0.9.1 - wasmtime
0.38.3 - wasmtime-runtime
0.38.3 - which
4.2.5 - zstd-safe
5.0.2+zstd.1.5.2 - zstd-sys
2.0.1+zstd.1.5.2
- android_system_properties
libloading
0.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753depends onused bylibloading
0.7.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumefbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddddepends onused bylibm
0.2.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565used bylibp2p
0.46.1crates.io↘ 36↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81327106887e42d004fbdab1fef93675be2e2e07c1b95fce45e2cc813485611ddepends on- bytes
1.2.1 - futures
0.3.23 - futures-timer
3.0.2 - getrandom
0.2.7 - instant
0.1.12 - lazy_static
1.4.0 - libp2p-autonat
0.5.0 - libp2p-core
0.34.0 - libp2p-deflate
0.34.0 - libp2p-dns
0.34.0 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-mdns
0.38.0 - libp2p-metrics
0.7.0 - libp2p-mplex
0.34.0 - libp2p-noise
0.37.0 - libp2p-ping
0.37.0 - libp2p-plaintext
0.34.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - libp2p-request-response
0.19.0 - libp2p-swarm
0.37.0 - libp2p-swarm-derive
0.28.0 - libp2p-tcp
0.34.0 - libp2p-uds
0.33.0 - libp2p-wasm-ext
0.34.0 - libp2p-websocket
0.36.0 - libp2p-yamux
0.38.0 - multiaddr
0.14.0 - parking_lot
0.12.1 - pin-project
1.0.12 - rand
0.7.3 - smallvec
1.9.0
- bytes
libp2p-autonat
0.5.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4decc51f3573653a9f4ecacb31b1b922dd20c25a6322bb15318ec04287ec46f9depends onused bylibp2p-core
0.34.0crates.io↘ 27↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfbf9b94cefab7599b2d3dff2f93bee218c6621d68590b23ede4485813cbcece6depends on- asn1_der
0.7.5 - bs58
0.4.0 - ed25519-dalek
1.0.1 - either
1.7.0 - fnv
1.0.7 - futures
0.3.23 - futures-timer
3.0.2 - instant
0.1.12 - lazy_static
1.4.0 - libsecp256k1
0.7.1 - log
0.4.17 - multiaddr
0.14.0 - multihash
0.16.3 - multistream-select
0.11.0 - parking_lot
0.12.1 - pin-project
1.0.12 - prost
0.10.4 - prost-build
0.10.4 - rand
0.8.5 - ring
0.16.20 - rw-stream-sink
0.3.0 - sha2
0.10.2 - smallvec
1.9.0 - thiserror
1.0.32 - unsigned-varint
0.7.1 - void
1.0.2 - zeroize
1.5.7
used by- libp2p
0.46.1 - libp2p-autonat
0.5.0 - libp2p-deflate
0.34.0 - libp2p-dns
0.34.0 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-mdns
0.38.0 - libp2p-metrics
0.7.0 - libp2p-mplex
0.34.0 - libp2p-noise
0.37.0 - libp2p-ping
0.37.0 - libp2p-plaintext
0.34.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - libp2p-request-response
0.19.0 - libp2p-swarm
0.37.0 - libp2p-tcp
0.34.0 - libp2p-uds
0.33.0 - libp2p-wasm-ext
0.34.0 - libp2p-websocket
0.36.0 - libp2p-yamux
0.38.0
- asn1_der
libp2p-deflate
0.34.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0183dc2a3da1fbbf85e5b6cf51217f55b14f5daea0c455a9536eef646bfec71used bylibp2p-dns
0.34.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6cbf54723250fa5d521383be789bf60efdabe6bacfb443f87da261019a49b4b5depends onused bylibp2p-floodsub
0.37.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum98a4b6ffd53e355775d24b76f583fdda54b3284806f678499b57913adb94f231depends onused bylibp2p-gossipsub
0.39.0crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum74b4b888cfbeb1f5551acd3aa1366e01bf88ede26cc3c4645d0d2d004d5ca7b0depends onlibp2p-identify
0.37.0crates.io↘ 13↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc50b585518f8efd06f93ac2f976bd672e17cdac794644b3117edd078e96bda06depends onlibp2p-kad
0.38.0crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum740862893bb5f06ac24acc9d49bdeadc3a5e52e51818a30a25c1f3519da2c851depends onlibp2p-mdns
0.38.0crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66e5e5919509603281033fd16306c61df7a4428ce274b67af5e14b07de5cdcb2depends onused bylibp2p-metrics
0.7.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef8aff4a1abef42328fbb30b17c853fff9be986dc39af17ee39f9c5f755c5e0cdepends onused bylibp2p-mplex
0.34.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61fd1b20638ec209c5075dfb2e8ce6a7ea4ec3cd3ad7b77f7a477c06d53322e2depends onused bylibp2p-noise
0.37.0crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum762408cb5d84b49a600422d7f9a42c18012d8da6ebcd570f9a4a4290ba41fb6fdepends onused bylibp2p-ping
0.37.0crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum100a6934ae1dbf8a693a4e7dd1d730fd60b774dafc45688ed63b554497c6c925depends onlibp2p-plaintext
0.34.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe27bf0820a6238a4e06365b096d428271cce85a129cf16f2fe9eb1610c4df86depends onused bylibp2p-pnet
0.22.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92cused bylibp2p-relay
0.10.0crates.io↘ 18↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4931547ee0cce03971ccc1733ff05bb0c4349fd89120a39e9861e2bbe18843c3depends onlibp2p-rendezvous
0.7.0crates.io↘ 15↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9511c9672ba33284838e349623319c8cad2d18cfad243ae46c6b7e8a2982ea4edepends onused bylibp2p-request-response
0.19.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum508a189e2795d892c8f5c1fa1e9e0b1845d32d7b0b249dbf7b05b18811361843depends onlibp2p-swarm
0.37.0crates.io↘ 12↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95ac5be6c2de2d1ff3f7693fda6faf8a827b1f3e808202277783fea9f527d114depends onlibp2p-swarm-derive
0.28.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f54a64b6957249e0ce782f8abf41d97f69330d02bf229f0672d864f0650cc76depends onused bylibp2p-tcp
0.34.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a6771dc19aa3c65d6af9a8c65222bfc8fcd446630ddca487acd161fa6096f3bdepends onused bylibp2p-uds
0.33.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd125e3e5f0d58f3c6ac21815b20cf4b6a88b8db9dc26368ea821838f4161fd4dused bylibp2p-wasm-ext
0.34.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec894790eec3c1608f8d1a8a0bdf0dbeb79ed4de2dce964222011c2896dfa05adepends onused bylibp2p-websocket
0.36.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9808e57e81be76ff841c106b4c5974fb4d41a233a7bdd2afbf1687ac6def3818depends onused bylibp2p-yamux
0.38.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6dea686217a06072033dc025631932810e2f6ad784e4fafa42e27d311c7a81cused bylibrocksdb-sys
0.6.1+6.28.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81bc587013734dadb7cf23468e531aa120788b87243648be42e2d3a072186291depends onused bylibsecp256k1
0.7.1crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1depends onlibsecp256k1-core
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451depends onlibsecp256k1-gen-ecmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809depends onused bylibsecp256k1-gen-genmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7cdepends onused bylibz-sys
1.1.8crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbfdepends onlinked_hash_set
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onused bylinked-hash-map
0.5.6crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770flinregress
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8depends onused bylinux-raw-sys
0.0.42crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5284f00d480e1c39af34e72f8ad60b94f47007e3481cd3b731c1d67190ddc7b7used bylinux-raw-sys
0.0.46crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854dused bylock_api
0.4.7crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53depends onlog
0.4.17crates.io↘ 2↖ 170sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumabb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382edepends onused by- async-io
1.7.0 - async-std
1.12.0 - beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cranelift-codegen
0.85.3 - cranelift-frontend
0.85.3 - cranelift-wasm
0.85.3 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - env_logger
0.9.0 - evm
0.35.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - file-per-thread-logger
0.1.5 - finality-grandpa
0.16.0 - flexi_logger
0.22.6 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - globset
0.4.9 - handlebars
4.3.3 - hyper-rustls
0.23.0 - if-watch
1.1.1 - kusama-runtime
0.9.27 - kv-log-macro
1.0.7 - kvdb-rocksdb
0.15.2 - libp2p-autonat
0.5.0 - libp2p-core
0.34.0 - libp2p-dns
0.34.0 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-mdns
0.38.0 - libp2p-mplex
0.34.0 - libp2p-noise
0.37.0 - libp2p-ping
0.37.0 - libp2p-plaintext
0.34.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - libp2p-request-response
0.19.0 - libp2p-swarm
0.37.0 - libp2p-tcp
0.34.0 - libp2p-uds
0.33.0 - libp2p-websocket
0.36.0 - mio
0.8.4 - multistream-select
0.11.0 - netlink-proto
0.10.0 - netlink-sys
0.8.3 - opal-runtime
0.9.27 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.2.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-offences
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-unique-scheduler
0.1.1 - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - parity-db
0.3.16 - polkadot-cli
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-performance-test
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - polling
2.2.0 - prost-build
0.10.4 - quartz-runtime
0.9.27 - regalloc2
0.2.3 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.27 - rtnetlink
0.10.1 - rustls
0.20.6 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-peerset
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
6.0.0 - sp-sandbox
0.10.0-dev - sp-state-machine
0.12.0 - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-wasm-interface
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - thrift
0.15.0 - tracing-log
0.1.3 - trie-db
0.23.1 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - try-runtime-cli
0.10.0-dev - unique-node
0.9.27 - unique-runtime
0.9.27 - want
0.3.0 - wasm-bindgen-backend
0.2.82 - wasm-gc-api
0.1.11 - wasmtime
0.38.3 - wasmtime-cache
0.38.3 - wasmtime-cranelift
0.38.3 - wasmtime-environ
0.38.3 - wasmtime-jit
0.38.3 - wasmtime-runtime
0.38.3 - westend-runtime
0.9.27 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27 - yamux
0.10.2
- async-io
lru
0.6.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91depends onused bylru
0.7.8crates.io↘ 1↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47adepends onused by- fc-rpc
2.0.0-dev - libp2p-identify
0.37.0 - parity-util-mem
0.11.0 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-service
0.9.27 - sc-executor
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-blockchain
4.0.0-dev
- fc-rpc
lru-cache
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1cdepends onused bylz4
1.23.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4edcb94251b1c375c459e5abe9fb0168c1c826c3370172684844f8f3f8d1a885depends onused bylz4-sys
1.9.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7be8908e2ed6f31c02db8a9fa962f03e36c53fbfde437363eae3306b85d7e17depends onused bymach
0.3.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onmatch_cfg
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4used bymatchers
0.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1depends onused bymatches
0.1.9crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853fmatrixmultiply
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumadd85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84depends onused bymemchr
2.5.0crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566dmemfd
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6627dc657574b49d6ad27105ed671822be56e0d2547d413bfbf3e8d8fa92e7adepends onused bymemmap2
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4depends onused bymemmap2
0.5.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498depends onused bymemoffset
0.6.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79cedepends onmemory_units
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882used bymemory-db
0.29.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6566c70c1016f525ced45d7b7f97730a2bafb037c788211d0c186ef5b2189f0amemory-lru
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbeeb98b3d1ed2c0054bd81b5ba949a0243c3ccad751d45ea898fa8059fa2860adepends onmerlin
2.0.1crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42mick-jaeger
0.1.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532depends onused byminimal-lexical
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79aused byminiz_oxide
0.5.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773cccdepends onused bymio
0.8.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caafused bymore-asserts
0.2.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389multiaddr
0.14.0crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261depends onmultibase
0.9.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404used bymultihash
0.16.3crates.io↘ 9↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2ccdepends onmultihash-derive
0.8.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcddepends onused bymultimap
0.8.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6aused bymultistream-select
0.11.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83bused bynalgebra
0.27.1crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum462fffe4002f4f2e1f6a9dcf12cc1a6fc0e15989014efc02a941d3e0f5dc2120depends onused bynalgebra-macros
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218depends onused bynames
0.13.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146depends onused bynanorand
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3netlink-packet-core
0.4.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297netlink-packet-route
0.12.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaabdepends onused bynetlink-packet-utils
0.5.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845enetlink-proto
0.10.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6depends onused bynetlink-sys
0.8.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027used bynix
0.24.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fcdepends onused bynodrop
0.1.14crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bbused bynohash-hasher
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451nom
7.1.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36depends onused bynum_cpus
1.13.1crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1depends onnum_threads
0.1.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44depends onused bynum-bigint
0.2.6crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304num-complex
0.4.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19depends onused bynum-format
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465depends onused bynum-integer
0.1.45crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9depends onnum-rational
0.2.4crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aefnum-rational
0.4.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0used bynum-traits
0.2.15crates.io↘ 2↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcddepends onused by- approx
0.5.1 - chrono
0.4.22 - finality-grandpa
0.16.0 - integer-sqrt
0.1.5 - nalgebra
0.27.1 - num-bigint
0.2.6 - num-complex
0.4.2 - num-integer
0.1.45 - num-rational
0.2.4 - num-rational
0.4.1 - ordered-float
1.1.1 - rand_distr
0.4.3 - sc-consensus-babe
0.10.0-dev - simba
0.5.1 - sp-arithmetic
5.0.0 - sp-core
6.0.0 - sp-state-machine
0.12.0 - statrs
0.15.0 - wasmi
0.9.1
- approx
object
0.28.4crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424object
0.29.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53depends onused byonce_cell
1.13.0crates.io↘ 0↖ 24sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1used by- ahash
0.7.6 - async-executor
1.4.1 - async-global-executor
2.2.0 - async-io
1.7.0 - async-process
1.4.0 - async-std
1.12.0 - blocking
1.2.0 - clap
3.2.17 - coarsetime
0.1.22 - crossbeam-epoch
0.9.10 - crossbeam-utils
0.8.11 - frame-support
4.0.0-dev - pest_meta
2.2.1 - proc-macro-crate
1.2.1 - ring
0.16.20 - sc-executor-wasmtime
0.10.0-dev - sc-offchain
4.0.0-dev - sc-tracing
4.0.0-dev - thread_local
1.1.4 - tiny-bip39
0.8.2 - tokio
1.20.1 - tracing-core
0.1.29 - wasm-bindgen-backend
0.2.82 - wasmtime
0.38.3
- ahash
opal-runtime
0.9.27workspace↘ 79↖ 1depends on- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.1.3 - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-inflation
0.1.1 - pallet-nonfungible
0.1.5 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-xcm
0.9.27 - parachain-info
0.1.0 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - rmrk-rpc
0.0.2 - scale-info
2.1.2 - serde
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
used by- cumulus-pallet-aura-ext
opaque-debug
0.2.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529cused byopaque-debug
0.3.0crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssl-probe
0.1.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cfused byorchestra
0.0.1github.com/paritytech/polkadot↘ 9↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onorchestra-proc-macro
0.0.1github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused byordered-float
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7depends onused byorml-vesting
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 8↖ 3sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.27#377213f750755cc48e80a3131eaae63b5eda8362depends onos_str_bytes
6.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80effused byowning_ref
0.4.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52cedepends onpallet-aura
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-babe
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-application-crypto
6.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0
- frame-benchmarking
pallet-bags-list
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-balances
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-pallet-parachain-system
0.1.0 - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-bags-list
4.0.0-dev - pallet-inflation
0.1.1 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-treasury
4.0.0-dev - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - tests
0.1.1 - unique-runtime
0.9.27 - westend-runtime
0.9.27
- cumulus-pallet-parachain-system
pallet-base-fee
1.0.0github.com/uniquenetwork/frontier↘ 8↖ 3sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends onpallet-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-beefy-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-child-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-collective
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-common
0.1.8workspace↘ 15↖ 15depends onpallet-configuration
0.1.1workspace↘ 10↖ 3pallet-democracy
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-election-provider-multi-phase
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-election-provider-support-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-elections-phragmen
5.0.0-devgithub.com/paritytech/substrate↘ 11↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-ethereum
4.0.0-devgithub.com/uniquenetwork/frontier↘ 22↖ 8sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends on- ethereum
0.12.0 - ethereum-types
0.13.1 - evm
0.35.0 - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-evm
6.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.1.5 - rlp
0.5.1 - scale-info
2.1.2 - serde
1.0.143 - sha3
0.10.2 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0
- ethereum
pallet-evm
6.0.0-devgithub.com/uniquenetwork/frontier↘ 20↖ 21sourcegit+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.27#69945f20e8dc06ab9e0dd636848a8db6a408c71cdepends on- evm
0.35.0 - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - hex
0.4.3 - impl-trait-for-tuples
0.2.2 - log
0.4.17 - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.1.5 - primitive-types
0.11.1 - rlp
0.5.1 - scale-info
2.1.2 - serde
1.0.143 - sha3
0.10.2 - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0
used by- opal-runtime
0.9.27 - pallet-common
0.1.8 - pallet-ethereum
4.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-nonfungible
0.1.5 - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.1.3 - quartz-runtime
0.9.27 - tests
0.1.1 - uc-rpc
0.1.3 - unique-runtime
0.9.27 - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3
- evm
pallet-evm-coder-substrate
0.1.3workspace↘ 12↖ 10depends onpallet-evm-contract-helpers
0.2.0workspace↘ 15↖ 3depends onpallet-evm-migration
0.1.1workspace↘ 11↖ 3pallet-evm-transaction-payment
0.1.1workspace↘ 13↖ 3depends onpallet-fungible
0.1.5workspace↘ 15↖ 4depends onpallet-gilt
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bypallet-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-application-crypto
6.0.0 - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0
- frame-benchmarking
pallet-identity
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-im-online
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-indices
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-inflation
0.1.1workspace↘ 13↖ 3depends onpallet-membership
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-mmr-rpc
3.0.0github.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bypallet-multisig
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-nomination-pools
1.0.0github.com/paritytech/substrate↘ 10↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-nomination-pools-benchmarking
1.0.0github.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-nomination-pools-runtime-api
1.0.0-devgithub.com/paritytech/substrate↘ 3↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05pallet-nonfungible
0.1.5workspace↘ 16↖ 7depends on- ethereum
0.12.0 - evm-coder
0.1.3 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.8 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-structure
0.1.2 - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - struct-versioning
0.1.0 - up-data-structs
0.2.2
- ethereum
pallet-offences
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-offences-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-std
4.0.0
- frame-benchmarking
pallet-preimage
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-proxy
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-randomness-collective-flip
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-recovery
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-refungible
0.2.4workspace↘ 17↖ 5depends on- derivative
2.2.0 - ethereum
0.12.0 - evm-coder
0.1.3 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.8 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-structure
0.1.2 - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - struct-versioning
0.1.0 - up-data-structs
0.2.2
- derivative
pallet-rmrk-core
0.1.2workspace↘ 15↖ 4depends onpallet-rmrk-equip
0.1.2workspace↘ 14↖ 3depends onpallet-scheduler
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-session
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- kusama-runtime
0.9.27 - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - rococo-runtime
0.9.27 - westend-runtime
0.9.27
- kusama-runtime
pallet-session-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-society
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-staking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.1.5 - rand_chacha
0.2.2 - scale-info
2.1.2 - serde
1.0.143 - sp-application-crypto
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-std
4.0.0
used by- kusama-runtime
0.9.27 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - rococo-runtime
0.9.27 - westend-runtime
0.9.27
- frame-benchmarking
pallet-staking-reward-curve
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05pallet-staking-reward-fn
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bypallet-structure
0.1.2workspace↘ 9↖ 8depends onpallet-sudo
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-template-transaction-payment
3.0.0github.com/uniquenetwork/pallet-sponsoring↘ 13↖ 3sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.27#853766d6033ceb68a2bef196790b962dd0663a04depends onpallet-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 17sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-aura
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
0.1.1 - pallet-session
4.0.0-dev - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - tests
0.1.1 - unique-runtime
0.9.27 - westend-runtime
0.9.27
- kusama-runtime
pallet-tips
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-transaction-payment
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-template-transaction-payment
3.0.0 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - tests
0.1.1 - unique-runtime
0.9.27 - westend-runtime
0.9.27 - xcm-builder
0.9.27
- kusama-runtime
pallet-transaction-payment-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-transaction-payment-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05pallet-treasury
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-unique
0.1.3workspace↘ 18↖ 5depends on- ethereum
0.12.0 - evm-coder
0.1.3 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-common
0.1.8 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-nonfungible
0.1.5 - pallet-refungible
0.2.4 - parity-scale-codec
3.1.5 - scale-info
2.1.2 - serde
1.0.143 - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - up-data-structs
0.2.2
- ethereum
pallet-unique-scheduler
0.1.1workspace↘ 13↖ 3depends onpallet-utility
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-vesting
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onpallet-xcm
0.9.27github.com/paritytech/polkadot↘ 11↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onpallet-xcm-benchmarks
0.9.27github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onparachain-info
0.1.0github.com/paritytech/cumulus↘ 6↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.27#66b684f88eba6c755651b8c47dccad2c2d9ac3dbdepends onparity-db
0.3.16crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bb474d0ed0836e185cb998a6b140ed1073d1fbf27d690ecf9ede8030289382cdepends onparity-scale-codec
2.3.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909depends onused byparity-scale-codec
3.1.5crates.io↘ 6↖ 224sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - ethereum
0.12.0 - evm
0.35.0 - evm-core
0.35.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.16.0 - fork-tree
3.0.0 - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - impl-codec
0.6.0 - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.5 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - parachain-info
0.1.0 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-core-primitives
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-erasure-coding
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-metrics
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-statement-distribution
0.9.27 - polkadot-statement-table
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - remote-externalities
0.10.0-dev - rmrk-traits
0.1.0 - rococo-runtime
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool
4.0.0-dev - scale-info
2.1.2 - slot-range-helper
0.9.27 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-runtime-interface
6.0.0 - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
5.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - sp-version-proc-macro
4.0.0-dev - sp-wasm-interface
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.3 - unique-node
0.9.27 - unique-runtime
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3 - westend-runtime
0.9.27 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- beefy-gadget
parity-scale-codec-derive
2.3.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27used byparity-scale-codec-derive
3.1.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cdused byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-util-mem
0.11.0crates.io↘ 10↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc32561d248d352148124f036cac253a644685a21dc9fea383eb4907d7bd35a8fdepends onused by- fp-self-contained
1.0.0-dev - kvdb
0.11.0 - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - memory-db
0.29.0 - polkadot-core-primitives
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - sc-informant
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0
- fp-self-contained
parity-util-mem-derive
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2parity-wasm
0.32.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512acdepends onused byparity-wasm
0.42.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92parking
2.0.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72parking_lot
0.11.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99parking_lot
0.12.1crates.io↘ 2↖ 51sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228fdepends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-db
2.0.0-dev - finality-grandpa
0.16.0 - jsonrpsee-core
0.14.0 - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - libp2p
0.46.1 - libp2p-core
0.34.0 - libp2p-dns
0.34.0 - libp2p-mplex
0.34.0 - libp2p-websocket
0.36.0 - libp2p-yamux
0.38.0 - parity-util-mem
0.11.0 - polkadot-network-bridge
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-overseer
0.9.27 - prometheus
0.13.1 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-database
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-state-machine
0.12.0 - tokio
1.20.1 - trust-dns-resolver
0.21.2 - unique-node
0.9.27 - yamux
0.10.2
- beefy-gadget
parking_lot_core
0.8.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216used byparking_lot_core
0.9.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929used bypaste
1.0.8crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22pbkdf2
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbddepends onused bypbkdf2
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffadepends onused bypeeking_take_while
0.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099used bypercent-encoding
2.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32epest
2.2.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69486e2b8c2d2aeb9762db7b4e00b0331156393555cff467f4163ff06821eef8depends onpest_derive
2.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb13570633aff33c6d22ce47dd566b10a3b9122c2fe9d8e7501895905be532b91depends onused bypest_generator
2.2.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb3c567e5702efdc79fb18859ea74c3eb36e14c43da7b8c1f098a4ed6514ec7a0used bypest_meta
2.2.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5eb32be5ee3bbdafa8c7a18b0a8a8d962b66cfa2ceee4037f49267a50ee821fedepends onused bypetgraph
0.6.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143depends onpin-project
1.0.12crates.io↘ 1↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6eccdepends onused by- jsonrpsee-client-transport
0.14.0 - libp2p
0.46.1 - libp2p-core
0.34.0 - libp2p-pnet
0.22.0 - libp2p-relay
0.10.0 - libp2p-swarm
0.37.0 - multistream-select
0.11.0 - orchestra
0.0.1 - polkadot-node-core-pvf
0.9.27 - polkadot-node-subsystem-util
0.9.27 - rw-stream-sink
0.3.0 - sc-network
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - tracing-futures
0.2.5
- jsonrpsee-client-transport
pin-project-internal
1.0.12crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55depends onused bypin-project-lite
0.1.12crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777used bypin-project-lite
0.2.9crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116pin-utils
0.1.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkg-config
0.3.25crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03aeplatforms
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94polkadot-approval-distribution
0.9.27github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-availability-bitfield-distribution
0.9.27github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-availability-distribution
0.9.27github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.23 - lru
0.7.8 - parity-scale-codec
3.1.5 - polkadot-erasure-coding
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-primitives
0.9.27 - rand
0.8.5 - sp-core
6.0.0 - sp-keystore
0.12.0 - thiserror
1.0.32 - tracing-gum
0.9.27
used by- derive_more
polkadot-availability-recovery
0.9.27github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- fatality
0.0.6 - futures
0.3.23 - lru
0.7.8 - parity-scale-codec
3.1.5 - polkadot-erasure-coding
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-primitives
0.9.27 - rand
0.8.5 - sc-network
0.10.0-dev - thiserror
1.0.32 - tracing-gum
0.9.27
used by- fatality
polkadot-cli
0.9.27github.com/paritytech/polkadot↘ 19↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- clap
3.2.17 - frame-benchmarking-cli
4.0.0-dev - futures
0.3.23 - log
0.4.17 - polkadot-client
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-performance-test
0.9.27 - polkadot-service
0.9.27 - sc-cli
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sp-core
6.0.0 - sp-keyring
6.0.0 - sp-trie
6.0.0 - substrate-build-script-utils
3.0.0 - thiserror
1.0.32 - try-runtime-cli
0.10.0-dev
- clap
polkadot-client
0.9.27github.com/paritytech/polkadot↘ 33↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-primitives
4.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-system
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-core-primitives
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-storage
6.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- beefy-primitives
polkadot-collator-protocol
0.9.27github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-core-primitives
0.9.27github.com/paritytech/polkadot↘ 6↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onpolkadot-dispute-distribution
0.9.27github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.23 - lru
0.7.8 - parity-scale-codec
3.1.5 - polkadot-erasure-coding
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-primitives
0.9.27 - sc-network
0.10.0-dev - sp-application-crypto
6.0.0 - sp-keystore
0.12.0 - thiserror
1.0.32 - tracing-gum
0.9.27
used by- derive_more
polkadot-erasure-coding
0.9.27github.com/paritytech/polkadot↘ 7↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onpolkadot-gossip-support
0.9.27github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-network-bridge
0.9.27github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- always-assert
0.1.2 - async-trait
0.1.57 - bytes
1.2.1 - fatality
0.0.6 - futures
0.3.23 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-primitives
0.9.27 - sc-network
0.10.0-dev - sp-consensus
0.10.0-dev - thiserror
1.0.32 - tracing-gum
0.9.27
used by- always-assert
polkadot-node-collation-generation
0.9.27github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-approval-voting
0.9.27github.com/paritytech/polkadot↘ 22↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- bitvec
1.0.1 - derive_more
0.99.17 - futures
0.3.23 - futures-timer
3.0.2 - kvdb
0.11.0 - lru
0.7.8 - merlin
2.0.1 - parity-scale-codec
3.1.5 - polkadot-node-jaeger
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-primitives
0.9.27 - sc-keystore
4.0.0-dev - schnorrkel
0.9.1 - sp-application-crypto
6.0.0 - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-runtime
6.0.0 - thiserror
1.0.32 - tracing-gum
0.9.27
used by- bitvec
polkadot-node-core-av-store
0.9.27github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-backing
0.9.27github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-bitfield-signing
0.9.27github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-candidate-validation
0.9.27github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-chain-api
0.9.27github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-chain-selection
0.9.27github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-dispute-coordinator
0.9.27github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-parachains-inherent
0.9.27github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onpolkadot-node-core-provisioner
0.9.27github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-pvf
0.9.27github.com/paritytech/polkadot↘ 25↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- always-assert
0.1.2 - assert_matches
1.5.0 - async-process
1.4.0 - async-std
1.12.0 - futures
0.3.23 - futures-timer
3.0.2 - parity-scale-codec
3.1.5 - pin-project
1.0.12 - polkadot-core-primitives
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-parachain
0.9.27 - rand
0.8.5 - rayon
1.5.3 - sc-executor
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - slotmap
1.0.6 - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-io
6.0.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-tracing
5.0.0 - sp-wasm-interface
6.0.0 - tempfile
3.3.0 - tracing-gum
0.9.27
- always-assert
polkadot-node-core-pvf-checker
0.9.27github.com/paritytech/polkadot↘ 9↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-core-runtime-api
0.9.27github.com/paritytech/polkadot↘ 9↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-node-jaeger
0.9.27github.com/paritytech/polkadot↘ 11↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onpolkadot-node-metrics
0.9.27github.com/paritytech/polkadot↘ 12↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onpolkadot-node-network-protocol
0.9.27github.com/paritytech/polkadot↘ 14↖ 13sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused by- polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27
- polkadot-approval-distribution
polkadot-node-primitives
0.9.27github.com/paritytech/polkadot↘ 15↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- bounded-vec
0.6.0 - futures
0.3.23 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - schnorrkel
0.9.1 - serde
1.0.143 - sp-application-crypto
6.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-maybe-compressed-blob
4.1.0-dev - thiserror
1.0.32 - zstd
0.11.2+zstd.1.5.2
used by- cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-erasure-coding
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-performance-test
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27 - polkadot-test-service
0.9.27
- bounded-vec
polkadot-node-subsystem
0.9.27github.com/paritytech/polkadot↘ 3↖ 27sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feaused by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27 - polkadot-test-service
0.9.27
- cumulus-client-collator
polkadot-node-subsystem-types
0.9.27github.com/paritytech/polkadot↘ 16↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- async-trait
0.1.57 - derive_more
0.99.17 - futures
0.3.23 - orchestra
0.0.1 - polkadot-node-jaeger
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-primitives
0.9.27 - polkadot-statement-table
0.9.27 - sc-network
0.10.0-dev - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-babe
0.10.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32
- async-trait
polkadot-node-subsystem-util
0.9.27github.com/paritytech/polkadot↘ 26↖ 23sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- async-trait
0.1.57 - derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.23 - itertools
0.10.3 - kvdb
0.11.0 - lru
0.7.8 - parity-db
0.3.16 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.11.2 - pin-project
1.0.12 - polkadot-node-jaeger
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-overseer
0.9.27 - polkadot-primitives
0.9.27 - prioritized-metered-channel
0.2.0 - rand
0.8.5 - sp-application-crypto
6.0.0 - sp-core
6.0.0 - sp-keystore
0.12.0 - thiserror
1.0.32 - tracing-gum
0.9.27
used by- polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27
- async-trait
polkadot-overseer
0.9.27github.com/paritytech/polkadot↘ 16↖ 12sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- async-trait
0.1.57 - futures
0.3.23 - futures-timer
3.0.2 - lru
0.7.8 - orchestra
0.0.1 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - polkadot-node-metrics
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-primitives
0.9.27 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-core
6.0.0 - tracing-gum
0.9.27
used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-interface
0.1.0 - polkadot-network-bridge
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27
- async-trait
polkadot-parachain
0.9.27github.com/paritytech/polkadot↘ 10↖ 18sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - opal-runtime
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-primitives
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - unique-node
0.9.27 - unique-runtime
0.9.27 - westend-runtime
0.9.27 - xcm-builder
0.9.27
- cumulus-client-network
polkadot-performance-test
0.9.27github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-primitives
0.9.27github.com/paritytech/polkadot↘ 23↖ 58sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- bitvec
1.0.1 - frame-system
4.0.0-dev - hex-literal
0.3.4 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - polkadot-core-primitives
0.9.27 - polkadot-parachain
0.9.27 - scale-info
2.1.2 - serde
1.0.143 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-trie
6.0.0 - sp-version
5.0.0
used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - kusama-runtime
0.9.27 - kusama-runtime-constants
0.9.27 - polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-client
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-erasure-coding
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-constants
0.9.27 - polkadot-runtime-metrics
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27 - polkadot-statement-table
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - rococo-runtime
0.9.27 - rococo-runtime-constants
0.9.27 - test-runtime-constants
0.9.27 - tracing-gum
0.9.27 - unique-node
0.9.27 - westend-runtime
0.9.27 - westend-runtime-constants
0.9.27
- bitvec
polkadot-rpc
0.9.27github.com/paritytech/polkadot↘ 25↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - jsonrpsee
0.14.0 - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-primitives
0.9.27 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-rpc
4.0.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev
- beefy-gadget
polkadot-runtime
0.9.27github.com/paritytech/polkadot↘ 78↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - parity-scale-codec
3.1.5 - polkadot-primitives
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-constants
0.9.27 - polkadot-runtime-parachains
0.9.27 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.143 - serde_derive
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- beefy-primitives
polkadot-runtime-common
0.9.27github.com/paritytech/polkadot↘ 40↖ 12sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - libsecp256k1
0.7.1 - log
0.4.17 - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.1.5 - polkadot-primitives
0.9.27 - polkadot-runtime-parachains
0.9.27 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.143 - serde_derive
1.0.143 - slot-range-helper
0.9.27 - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - static_assertions
1.1.0 - xcm
0.9.27
used by- kusama-runtime
0.9.27 - kusama-runtime-constants
0.9.27 - polkadot-client
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-constants
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - rococo-runtime
0.9.27 - rococo-runtime-constants
0.9.27 - test-runtime-constants
0.9.27 - westend-runtime
0.9.27 - westend-runtime-constants
0.9.27
- beefy-primitives
polkadot-runtime-constants
0.9.27github.com/paritytech/polkadot↘ 5↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onpolkadot-runtime-metrics
0.9.27github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feapolkadot-runtime-parachains
0.9.27github.com/paritytech/polkadot↘ 36↖ 8sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- bitflags
1.3.2 - bitvec
1.0.1 - derive_more
0.99.17 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.1.5 - polkadot-primitives
0.9.27 - polkadot-runtime-metrics
0.9.27 - rand
0.8.5 - rand_chacha
0.3.1 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.143 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - static_assertions
1.1.0 - xcm
0.9.27 - xcm-executor
0.9.27
- bitflags
polkadot-service
0.9.27github.com/paritytech/polkadot↘ 96↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- async-trait
0.1.57 - beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.23 - hex-literal
0.3.4 - kusama-runtime
0.9.27 - kvdb
0.11.0 - kvdb-rocksdb
0.15.2 - lru
0.7.8 - pallet-babe
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-db
0.3.16 - polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-client
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-constants
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-statement-distribution
0.9.27 - rococo-runtime
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.143 - serde_json
1.0.83 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32 - tracing-gum
0.9.27 - westend-runtime
0.9.27
- async-trait
polkadot-statement-distribution
0.9.27github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bypolkadot-statement-table
0.9.27github.com/paritytech/polkadot↘ 3↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feapolkadot-test-runtime
0.9.27github.com/paritytech/polkadot↘ 54↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.1 - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.143 - serde_derive
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - test-runtime-constants
0.9.27 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
used by- beefy-primitives
polkadot-test-service
0.9.27github.com/paritytech/polkadot↘ 46↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- frame-benchmarking
4.0.0-dev - frame-system
4.0.0-dev - futures
0.3.23 - hex
0.4.3 - pallet-balances
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem
0.9.27 - polkadot-overseer
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - rand
0.8.5 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - substrate-test-client
2.0.1 - tempfile
3.3.0 - test-runtime-constants
0.9.27 - tokio
1.20.1 - tracing-gum
0.9.27
used by- frame-benchmarking
polling
2.2.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259used bypoly1305
0.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246edeused bypolyval
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1used byppv-lite86
0.2.16crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872primitive-types
0.11.1crates.io↘ 6↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94aprioritized-metered-channel
0.2.0github.com/paritytech/polkadot↘ 8↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onproc-macro-crate
1.2.1crates.io↘ 3↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9depends onused by- cumulus-pallet-parachain-system-proc-macro
0.1.0 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - jsonrpsee-proc-macros
0.14.0 - multihash-derive
0.8.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.1.2 - sp-api-proc-macro
4.0.0-dev - sp-runtime-interface-proc-macro
5.0.0 - substrate-test-utils-derive
0.10.0-dev - tracing-gum-proc-macro
0.9.27
- cumulus-pallet-parachain-system-proc-macro
proc-macro-error
1.0.4crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro2
1.0.43crates.io↘ 1↖ 61sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7babdepends onused by- async-trait
0.1.57 - auto_impl
0.5.0 - bindgen
0.59.2 - clap_derive
3.2.17 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.4.0 - enumflags2_derive
0.7.4 - enumn
0.1.5 - evm-coder-procedural
0.2.0 - expander
0.0.4 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.23 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.14.0 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - parity-util-mem-derive
0.1.0 - pest_generator
2.2.1 - pin-project-internal
1.0.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.2.0 - prost-derive
0.10.1 - quote
1.0.21 - ref-cast-impl
1.0.9 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.1.2 - serde_derive
1.0.143 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
4.0.0 - sp-runtime-interface-proc-macro
5.0.0 - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.25.0 - static_init_macro
0.5.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.99 - synstructure
0.12.6 - thiserror-impl
1.0.32 - tokio-macros
1.8.0 - tracing-attributes
0.1.22 - tracing-gum-proc-macro
0.9.27 - wasm-bindgen-backend
0.2.82 - wasm-bindgen-macro-support
0.2.82 - xcm-procedural
0.9.27 - zeroize_derive
1.3.2
- async-trait
prometheus
0.13.1crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcface98dfa6d645ea4c789839f176e4b072265d085bfcc48eaa8d137f58d3c39prometheus-client
0.16.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac1abe0255c04d15f571427a2d1e00099016506cf3297b53853acd2b7eb87825prometheus-client-derive-text-encode
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652depends onused byprost
0.10.4crates.io↘ 2↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083edepends onused by- libp2p-autonat
0.5.0 - libp2p-core
0.34.0 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-noise
0.37.0 - libp2p-plaintext
0.34.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - prost-build
0.10.4 - prost-codec
0.1.0 - prost-types
0.10.1 - sc-authority-discovery
0.10.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev
- libp2p-autonat
prost-build
0.10.4crates.io↘ 14↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cabdepends onused by- libp2p-autonat
0.5.0 - libp2p-core
0.34.0 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-noise
0.37.0 - libp2p-plaintext
0.34.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - sc-authority-discovery
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev
- libp2p-autonat
prost-codec
0.1.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum00af1e92c33b4813cc79fda3f2dbf56af5169709be0202df730e9ebc3e4cd007prost-derive
0.10.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7ccused byprost-types
0.10.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68depends onused bypsm
0.1.20crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf446d0a6efba22928558c4fb4ce0b3fd6c89b0061343e390bf01a703742b8125depends onused byquartz-runtime
0.9.27workspace↘ 79↖ 1depends on- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.1.3 - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-inflation
0.1.1 - pallet-nonfungible
0.1.5 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-xcm
0.9.27 - parachain-info
0.1.0 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - rmrk-rpc
0.0.2 - scale-info
2.1.2 - serde
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
used by- cumulus-pallet-aura-ext
quick-error
1.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0quicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquote
1.0.21crates.io↘ 1↖ 65sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179depends onused by- async-attributes
1.1.2 - async-trait
0.1.57 - auto_impl
0.5.0 - bindgen
0.59.2 - clap_derive
3.2.17 - ctor
0.1.23 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.4.0 - enumflags2_derive
0.7.4 - enumn
0.1.5 - evm-coder-procedural
0.2.0 - expander
0.0.4 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.23 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.14.0 - libp2p-swarm-derive
0.28.0 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - pest_generator
2.2.1 - pin-project-internal
1.0.12 - polkadot-performance-test
0.9.27 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - prometheus-client-derive-text-encode
0.2.0 - prost-derive
0.10.1 - ref-cast-impl
1.0.9 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.1.2 - serde_derive
1.0.143 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
4.0.0 - sp-runtime-interface-proc-macro
5.0.0 - sp-version-proc-macro
4.0.0-dev - ss58-registry
1.25.0 - static_init_macro
0.5.0 - struct-versioning
0.1.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.99 - synstructure
0.12.6 - thiserror-impl
1.0.32 - tokio-macros
1.8.0 - tracing-attributes
0.1.22 - tracing-gum-proc-macro
0.9.27 - wasm-bindgen-backend
0.2.82 - wasm-bindgen-macro
0.2.82 - wasm-bindgen-macro-support
0.2.82 - xcm-procedural
0.9.27 - zeroize_derive
1.3.2
- async-attributes
radium
0.6.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fbused byradium
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09used byrand
0.7.3crates.io↘ 6↖ 26sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used by- cuckoofilter
0.5.0 - ed25519-dalek
1.0.1 - libp2p
0.46.1 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-kad
0.38.0 - libp2p-mplex
0.34.0 - libp2p-ping
0.37.0 - libp2p-pnet
0.22.0 - libp2p-request-response
0.19.0 - libp2p-swarm
0.37.0 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - tiny-bip39
0.8.2
- cuckoofilter
rand
0.8.5crates.io↘ 3↖ 36sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404used by- backoff
0.4.0 - cumulus-client-pov-recovery
0.1.0 - fc-rpc
2.0.0-dev - fixed-hash
0.7.0 - frame-benchmarking-cli
4.0.0-dev - jsonrpsee-core
0.14.0 - libp2p-autonat
0.5.0 - libp2p-core
0.34.0 - libp2p-mdns
0.38.0 - libp2p-noise
0.37.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - libsecp256k1
0.7.1 - mick-jaeger
0.1.8 - nalgebra
0.27.1 - names
0.13.0 - parity-db
0.3.16 - polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-service
0.9.27 - rand_distr
0.4.3 - sc-finality-grandpa
0.10.0-dev - soketto
0.7.1 - statrs
0.15.0 - trust-dns-proto
0.21.2 - twox-hash
1.6.3 - wasmtime-runtime
0.38.3 - yamux
0.10.2
- backoff
rand_chacha
0.2.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onrand_chacha
0.3.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88depends onrand_core
0.5.1crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.3crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7depends onrand_distr
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31depends onused byrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_pcg
0.2.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429depends onused byrand_pcg
0.3.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73edepends onrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.5.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7drayon-core
1.9.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683fused byredox_syscall
0.2.16crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519adepends onredox_users
0.4.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2breed-solomon-novelpoly
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221ref-cast
1.0.9crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed13bcd201494ab44900a96490291651d200730904221832b9547d24a87d332bdepends onused byref-cast-impl
1.0.9crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5234cd6063258a5e32903b53b1b6ac043a0541c8adc1f610f67b0326c7a578fadepends onused byregalloc2
0.2.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a8d23b35d7177df3b9d31ed8a9ab4bf625c668be77a319d4f5efd4a5257701cused byregex
1.6.0crates.io↘ 3↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988bregex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-syntax
0.6.27crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244region
2.2.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0remote-externalities
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused byremove_dir_all
0.5.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7depends onused byresolv-conf
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00depends onused byretain_mut
0.1.9crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0rfc6979
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525depends onused byring
0.16.20crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcrlp
0.5.1crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5depends onrlp-derive
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672adepends onused byrmrk-traits
0.1.0workspace↘ 3↖ 4rocksdb
0.18.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum620f4129485ff1a7128d184bc687470c21c7951b64779ebc9cfdad3dcd920290depends onused byrococo-runtime
0.9.27github.com/paritytech/polkadot↘ 62↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-merkle-tree
4.0.0-dev - beefy-primitives
4.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-xcm
0.9.27 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - rococo-runtime-constants
0.9.27 - scale-info
2.1.2 - serde
1.0.143 - serde_derive
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
used by- beefy-merkle-tree
rococo-runtime-constants
0.9.27github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused byrpassword
5.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efbdepends onused byrtnetlink
0.10.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0depends onused byrustc_version
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030adepends onused byrustc_version
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366depends onused byrustc-demangle
0.1.21crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342rustc-hash
1.1.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustc-hex
2.1.0crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rustix
0.33.7crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum938a344304321a9da4973b9ff4f9f8db9caf4597dfd9dda6a60b523340a0fff0rustix
0.35.7crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd51cc38aa10f6bbb377ed28197aa052aa4e2b762c22be9d3153d01822587e787rustls
0.20.6crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033depends onrustls-native-certs
0.6.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50rustls-pemfile
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55depends onused byrustversion
1.0.9crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8rw-stream-sink
0.3.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04ryu
1.0.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09used bysafe-mix
1.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215cdepends onsalsa20
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686depends onused bysame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused bysc-allocator
4.1.0-devgithub.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sc-authority-discovery
0.10.0-devgithub.com/paritytech/substrate↘ 20↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- async-trait
0.1.57 - futures
0.3.23 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.46.1 - log
0.4.17 - parity-scale-codec
3.1.5 - prost
0.10.4 - prost-build
0.10.4 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32
- async-trait
sc-basic-authorship
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- futures
0.3.23 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.1.5 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev
- futures
sc-block-builder
0.10.0-devgithub.com/paritytech/substrate↘ 9↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-chain-spec
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-chain-spec-derive
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysc-cli
0.10.0-devgithub.com/paritytech/substrate↘ 32↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- chrono
0.4.22 - clap
3.2.17 - fdlimit
0.2.1 - futures
0.3.23 - hex
0.4.3 - libp2p
0.46.1 - log
0.4.17 - names
0.13.0 - parity-scale-codec
3.1.5 - rand
0.7.3 - regex
1.6.0 - rpassword
5.0.1 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.143 - serde_json
1.0.83 - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-keyring
6.0.0 - sp-keystore
0.12.0 - sp-panic-handler
4.0.0 - sp-runtime
6.0.0 - sp-version
5.0.0 - thiserror
1.0.32 - tiny-bip39
0.8.2 - tokio
1.20.1
- chrono
sc-client-api
4.0.0-devgithub.com/paritytech/substrate↘ 21↖ 51sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- fnv
1.0.7 - futures
0.3.23 - hash-db
0.15.2 - log
0.4.17 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - sc-executor
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-database
4.0.0-dev - sp-externalities
0.12.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-trie
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev
used by- beefy-gadget
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-client
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-overseer
0.9.27 - polkadot-rpc
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.27 - unique-rpc
0.1.1
- fnv
sc-client-db
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- hash-db
0.15.2 - kvdb
0.11.0 - kvdb-memorydb
0.11.0 - kvdb-rocksdb
0.15.2 - linked-hash-map
0.5.6 - log
0.4.17 - parity-db
0.3.16 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-state-db
0.10.0-dev - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-database
4.0.0-dev - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-trie
6.0.0
- hash-db
sc-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 17↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - fc-consensus
2.0.0-dev - polkadot-client
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.27
- cumulus-client-consensus-aura
sc-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 22↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- async-trait
0.1.57 - futures
0.3.23 - log
0.4.17 - parity-scale-codec
3.1.5 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32
- async-trait
sc-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 36↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- async-trait
0.1.57 - fork-tree
3.0.0 - futures
0.3.23 - log
0.4.17 - merlin
2.0.1 - num-bigint
0.2.6 - num-rational
0.2.4 - num-traits
0.2.15 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - rand
0.7.3 - retain_mut
0.1.9 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-keystore
4.0.0-dev - sc-telemetry
4.0.0-dev - schnorrkel
0.9.1 - serde
1.0.143 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32
- async-trait
sc-consensus-babe-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 15↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysc-consensus-epochs
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-consensus-manual-seal
0.10.0-devgithub.com/paritytech/substrate↘ 27↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- assert_matches
1.5.0 - async-trait
0.1.57 - futures
0.3.23 - jsonrpsee
0.14.0 - log
0.4.17 - parity-scale-codec
3.1.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.143 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32
used by- assert_matches
sc-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- async-trait
0.1.57 - futures
0.3.23 - futures-timer
3.0.2 - log
0.4.17 - parity-scale-codec
3.1.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-timestamp
4.0.0-dev - thiserror
1.0.32
- async-trait
sc-consensus-uncles
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysc-executor
0.10.0-devgithub.com/paritytech/substrate↘ 20↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- lazy_static
1.4.0 - lru
0.7.8 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - sc-executor-common
0.10.0-dev - sc-executor-wasmi
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-core-hashing-proc-macro
5.0.0 - sp-externalities
0.12.0 - sp-io
6.0.0 - sp-panic-handler
4.0.0 - sp-runtime-interface
6.0.0 - sp-tasks
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - sp-wasm-interface
6.0.0 - tracing
0.1.36 - wasmi
0.9.1
- lazy_static
sc-executor-common
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-executor-wasmi
0.10.0-devgithub.com/paritytech/substrate↘ 8↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysc-executor-wasmtime
0.10.0-devgithub.com/paritytech/substrate↘ 13↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-finality-grandpa
0.10.0-devgithub.com/paritytech/substrate↘ 34↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- ahash
0.7.6 - async-trait
0.1.57 - dyn-clone
1.0.9 - finality-grandpa
0.16.0 - fork-tree
3.0.0 - futures
0.3.23 - futures-timer
3.0.2 - hex
0.4.3 - log
0.4.17 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.83 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32
- ahash
sc-finality-grandpa-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-informant
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysc-keystore
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-network
0.10.0-devgithub.com/paritytech/substrate↘ 42↖ 22sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- async-trait
0.1.57 - asynchronous-codec
0.6.0 - bitflags
1.3.2 - bytes
1.2.1 - cid
0.8.6 - either
1.7.0 - fnv
1.0.7 - fork-tree
3.0.0 - futures
0.3.23 - futures-timer
3.0.2 - hex
0.4.3 - ip_network
0.4.1 - libp2p
0.46.1 - linked-hash-map
0.5.6 - linked_hash_set
0.1.4 - log
0.4.17 - lru
0.7.8 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - pin-project
1.0.12 - prost
0.10.4 - prost-build
0.10.4 - rand
0.7.3 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.143 - serde_json
1.0.83 - smallvec
1.9.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32 - unsigned-varint
0.7.1 - void
1.0.2 - zeroize
1.5.7
used by- beefy-gadget
4.0.0-dev - cumulus-relay-chain-inprocess-interface
0.1.0 - fc-rpc
2.0.0-dev - polkadot-availability-recovery
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.27 - unique-rpc
0.1.1
- async-trait
sc-network-common
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-network-gossip
0.10.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-network-light
0.10.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysc-network-sync
0.10.0-devgithub.com/paritytech/substrate↘ 20↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- fork-tree
3.0.0 - futures
0.3.23 - libp2p
0.46.1 - log
0.4.17 - lru
0.7.8 - parity-scale-codec
3.1.5 - prost
0.10.4 - prost-build
0.10.4 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - smallvec
1.9.0 - sp-arithmetic
5.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-runtime
6.0.0 - thiserror
1.0.32
used by- fork-tree
sc-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 21↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- bytes
1.2.1 - fnv
1.0.7 - futures
0.3.23 - futures-timer
3.0.2 - hex
0.4.3 - hyper
0.14.20 - hyper-rustls
0.23.0 - num_cpus
1.13.1 - once_cell
1.13.0 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - rand
0.7.3 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-core
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - threadpool
1.8.1 - tracing
0.1.36
- bytes
sc-peerset
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sc-proposer-metrics
0.10.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sc-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 23↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- futures
0.3.23 - hash-db
0.15.2 - jsonrpsee
0.14.0 - log
0.4.17 - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.83 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-keystore
0.12.0 - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-version
5.0.0
- futures
sc-rpc-api
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-rpc-server
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-service
0.10.0-devgithub.com/paritytech/substrate↘ 60↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- async-trait
0.1.57 - directories
4.0.1 - exit-future
0.2.0 - futures
0.3.23 - futures-timer
3.0.2 - hash-db
0.15.2 - jsonrpsee
0.14.0 - log
0.4.17 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - pin-project
1.0.12 - rand
0.7.3 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-informant
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.143 - serde_json
1.0.83 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-tracing
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tempfile
3.3.0 - thiserror
1.0.32 - tokio
1.20.1 - tracing
0.1.36 - tracing-futures
0.2.5
used by- cumulus-client-cli
0.1.0 - cumulus-client-service
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-cli
0.9.27 - polkadot-client
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - sc-cli
0.10.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.27 - unique-rpc
0.1.1
- async-trait
sc-state-db
0.10.0-devgithub.com/paritytech/substrate↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysc-sync-state-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-sysinfo
6.0.0-devgithub.com/paritytech/substrate↘ 12↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsc-telemetry
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - polkadot-service
0.9.27 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - unique-node
0.9.27
- cumulus-client-consensus-aura
sc-tracing
4.0.0-devgithub.com/paritytech/substrate↘ 24↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.22 - lazy_static
1.4.0 - libc
0.2.131 - log
0.4.17 - once_cell
1.13.0 - parking_lot
0.12.1 - regex
1.6.0 - rustc-hash
1.1.0 - sc-client-api
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - serde
1.0.143 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-rpc
6.0.0 - sp-runtime
6.0.0 - sp-tracing
5.0.0 - thiserror
1.0.32 - tracing
0.1.36 - tracing-log
0.1.3 - tracing-subscriber
0.2.25
- ansi_term
sc-tracing-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysc-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 20↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- futures
0.3.23 - futures-timer
3.0.2 - linked-hash-map
0.5.6 - log
0.4.17 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - retain_mut
0.1.9 - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.143 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
6.0.0 - sp-runtime
6.0.0 - sp-tracing
5.0.0 - sp-transaction-pool
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.32
- futures
sc-transaction-pool-api
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sc-utils
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05scale-info
2.1.2crates.io↘ 6↖ 123sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc46be926081c9f4dd5dd9b6f1d3e3229f2360bc6502dd8836f84a93b7c75e99adepends onused by- beefy-primitives
4.0.0-dev - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - ethbloom
0.12.1 - ethereum
0.12.0 - ethereum-types
0.13.1 - evm
0.35.0 - evm-core
0.35.0 - finality-grandpa
0.16.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.5 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - parachain-info
0.1.0 - polkadot-core-primitives
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - primitive-types
0.11.1 - quartz-runtime
0.9.27 - rmrk-traits
0.1.0 - rococo-runtime
0.9.27 - sc-rpc-api
0.10.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - unique-runtime
0.9.27 - up-data-structs
0.2.2 - westend-runtime
0.9.27 - xcm
0.9.27 - xcm-builder
0.9.27
- beefy-primitives
scale-info-derive
2.1.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50e334bb10a245e28e5fd755cabcafd96cfcd167c99ae63a46924ca8d8703a3cused byschannel
0.1.20crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2depends onused byschnorrkel
0.9.1crates.io↘ 10↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscopeguard
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cdsct
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4depends onused bysec1
0.2.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1secp256k1
0.24.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb7649a0b3ffb32636e60c7ce0d70511eda9c52c658cd0634e194d5a19943aeffdepends onused bysecp256k1-sys
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7058dc8eaf3f2810d7828680320acda0b25a288f6d288e19278e249bbf74226bdepends onused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused bysecurity-framework
2.6.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dcdepends onused bysecurity-framework-sys
2.6.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556depends onused bysemver
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537depends onused bysemver
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403depends onused bysemver
1.0.13crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711depends onsemver-parser
0.7.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used byserde
1.0.143crates.io↘ 1↖ 119sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553depends onused by- beef
0.5.2 - beefy-gadget-rpc
4.0.0-dev - bincode
1.3.3 - camino
1.1.1 - cargo-platform
0.1.2 - cargo_metadata
0.14.2 - cid
0.8.6 - cranelift-entity
0.85.3 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - ed25519-dalek
1.0.1 - ethereum
0.12.0 - evm
0.35.0 - evm-core
0.35.0 - fc-rpc-core
1.1.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-metadata
15.0.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
4.3.3 - impl-serde
0.3.2 - indexmap
1.9.1 - jsonrpsee-core
0.14.0 - jsonrpsee-http-server
0.14.0 - jsonrpsee-types
0.14.0 - kusama-runtime
0.9.27 - libsecp256k1
0.7.1 - multiaddr
0.14.0 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-common
0.1.8 - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-inflation
0.1.1 - pallet-mmr-rpc
3.0.0 - pallet-offences
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-xcm
0.9.27 - parachain-info
0.1.0 - parity-scale-codec
2.3.1 - parity-scale-codec
3.1.5 - polkadot-node-primitives
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - remote-externalities
0.10.0-dev - rmrk-rpc
0.0.2 - rmrk-traits
0.1.0 - rococo-runtime
0.9.27 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-network
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - scale-info
2.1.2 - semver
1.0.13 - serde_json
1.0.83 - serde_nanos
0.1.2 - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-keystore
0.12.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
6.0.0 - sp-serializer
4.0.0-dev - sp-storage
6.0.0 - sp-version
5.0.0 - ss58-registry
1.25.0 - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - toml
0.5.9 - tracing-serde
0.1.3 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - unique-node
0.9.27 - unique-rpc
0.1.1 - unique-runtime
0.9.27 - up-data-structs
0.2.2 - wasmtime
0.38.3 - wasmtime-cache
0.38.3 - wasmtime-environ
0.38.3 - wasmtime-jit
0.38.3 - wasmtime-types
0.38.3 - westend-runtime
0.9.27
- beef
serde_derive
1.0.143crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391depends onserde_json
1.0.83crates.io↘ 3↖ 30sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7depends onused by- cargo_metadata
0.14.2 - fc-rpc-core
1.1.0-dev - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.3 - jsonrpsee-core
0.14.0 - jsonrpsee-http-server
0.14.0 - jsonrpsee-types
0.14.0 - jsonrpsee-ws-server
0.14.0 - polkadot-service
0.9.27 - remote-externalities
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sp-serializer
4.0.0-dev - ss58-registry
1.25.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - tracing-subscriber
0.2.25 - unique-node
0.9.27
- cargo_metadata
serde_nanos
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume44969a61f5d316be20a42ff97816efb3b407a924d06824c3d8a49fa8450de0edepends onsha-1
0.9.8crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6used bysha-1
0.10.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0fdepends onused bysha2
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69used bysha2
0.9.9crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800sha2
0.10.2crates.io↘ 3↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676depends onsha3
0.9.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809used bysha3
0.10.2crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0a31480366ec990f395a61b7c08122d99bd40544fdb5abcfc1b06bb29994312cdepends onsharded-slab
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31depends onused byshlex
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3used bysignal-hook
0.3.14crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29ddepends onused bysignal-hook-registry
1.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0depends onused bysignature
1.4.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788depends onused bysimba
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5cused byslab
0.4.7crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcefdepends onslice-group-by
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ecused byslot-range-helper
0.9.27github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feaslotmap
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342depends onused bysmallvec
1.9.0crates.io↘ 0↖ 46sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1used by- cranelift-codegen
0.85.3 - cranelift-frontend
0.85.3 - cranelift-wasm
0.85.3 - frame-support
4.0.0-dev - kusama-runtime
0.9.27 - kusama-runtime-constants
0.9.27 - kvdb
0.11.0 - kvdb-rocksdb
0.15.2 - libp2p
0.46.1 - libp2p-core
0.34.0 - libp2p-dns
0.34.0 - libp2p-floodsub
0.37.0 - libp2p-gossipsub
0.39.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-mdns
0.38.0 - libp2p-mplex
0.34.0 - libp2p-relay
0.10.0 - libp2p-request-response
0.19.0 - libp2p-swarm
0.37.0 - multistream-select
0.11.0 - opal-runtime
0.9.27 - pallet-configuration
0.1.1 - parity-util-mem
0.11.0 - parking_lot_core
0.8.5 - parking_lot_core
0.9.3 - polkadot-node-subsystem-types
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-constants
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - regalloc2
0.2.3 - rococo-runtime
0.9.27 - rococo-runtime-constants
0.9.27 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-state-machine
0.12.0 - test-runtime-constants
0.9.27 - tracing-subscriber
0.2.25 - trie-db
0.23.1 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - unique-runtime
0.9.27 - westend-runtime
0.9.27 - westend-runtime-constants
0.9.27
- cranelift-codegen
snap
1.0.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451used bysnow
0.9.0crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0ddepends onused bysocket2
0.4.4crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0depends onsoketto
0.7.1crates.io↘ 8↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2sp-api
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 75sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- beefy-gadget
4.0.0-dev - beefy-merkle-tree
4.0.0-dev - beefy-primitives
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-mmr-rpc
3.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-overseer
0.9.27 - polkadot-primitives
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.3 - unique-node
0.9.27 - unique-rpc
0.1.1 - unique-runtime
0.9.27 - up-rpc
0.1.3 - westend-runtime
0.9.27
- beefy-gadget
sp-api-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysp-application-crypto
6.0.0github.com/paritytech/substrate↘ 6↖ 29sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used by- beefy-gadget
4.0.0-dev - beefy-primitives
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - frame-benchmarking
4.0.0-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime-parachains
0.9.27 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-service
0.10.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-runtime
6.0.0
- beefy-gadget
sp-arithmetic
5.0.0github.com/paritytech/substrate↘ 8↖ 23sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- beefy-gadget
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-configuration
0.1.1 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-gilt
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - polkadot-primitives
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - sc-client-db
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - unique-runtime
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- beefy-gadget
sp-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- kusama-runtime
0.9.27 - pallet-authority-discovery
4.0.0-dev - polkadot-client
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - rococo-runtime
0.9.27 - sc-authority-discovery
0.10.0-dev - westend-runtime
0.9.27
- kusama-runtime
sp-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-block-builder
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 21sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used by- cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - fc-rpc
2.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - polkadot-client
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-service
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - unique-node
0.9.27 - unique-rpc
0.1.1 - unique-runtime
0.9.27 - westend-runtime
0.9.27
- cumulus-client-consensus-aura
sp-blockchain
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 49sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-client
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-rpc
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-test-client
2.0.1 - uc-rpc
0.1.3 - unique-node
0.9.27 - unique-rpc
0.1.1
- beefy-gadget
sp-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 34sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - fc-consensus
2.0.0-dev - polkadot-client
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-rpc
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - substrate-test-client
2.0.1 - unique-node
0.9.27 - unique-rpc
0.1.1
- beefy-gadget
sp-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- kusama-runtime
0.9.27 - pallet-babe
4.0.0-dev - polkadot-client
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - rococo-runtime
0.9.27 - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - westend-runtime
0.9.27
- kusama-runtime
sp-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-consensus-vrf
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-core
6.0.0github.com/paritytech/substrate↘ 39↖ 154sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- base58
0.2.0 - bitflags
1.3.2 - blake2-rfc
0.2.18 - byteorder
1.4.3 - dyn-clonable
0.9.0 - ed25519-dalek
1.0.1 - futures
0.3.23 - hash-db
0.15.2 - hash256-std-hasher
0.15.2 - hex
0.4.3 - impl-serde
0.3.2 - lazy_static
1.4.0 - libsecp256k1
0.7.1 - log
0.4.17 - merlin
2.0.1 - num-traits
0.2.15 - parity-scale-codec
3.1.5 - parity-util-mem
0.11.0 - parking_lot
0.12.1 - primitive-types
0.11.1 - rand
0.7.3 - regex
1.6.0 - scale-info
2.1.2 - schnorrkel
0.9.1 - secp256k1
0.24.0 - secrecy
0.8.0 - serde
1.0.143 - sp-core-hashing
4.0.0 - sp-debug-derive
4.0.0 - sp-externalities
0.12.0 - sp-runtime-interface
6.0.0 - sp-std
4.0.0 - sp-storage
6.0.0 - ss58-registry
1.25.0 - substrate-bip39
0.4.4 - thiserror
1.0.32 - tiny-bip39
0.8.2 - wasmi
0.9.1 - zeroize
1.5.7
used by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-bags-list
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-nomination-pools
1.0.0 - pallet-nonfungible
0.1.5 - pallet-preimage
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-session
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-cli
0.9.27 - polkadot-client
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-core-primitives
0.9.27 - polkadot-erasure-coding
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-table
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - remote-externalities
0.10.0-dev - rmrk-rpc
0.0.2 - rococo-runtime
0.9.27 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-keyring
6.0.0 - sp-keystore
0.12.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
6.0.0 - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-state-machine
0.12.0 - sp-tasks
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.3 - unique-node
0.9.27 - unique-rpc
0.1.1 - unique-runtime
0.9.27 - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3 - westend-runtime
0.9.27 - xcm-executor
0.9.27
- base58
sp-core-hashing
4.0.0github.com/paritytech/substrate↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-core-hashing-proc-macro
5.0.0github.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-database
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-debug-derive
4.0.0github.com/paritytech/substrate↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-externalities
0.12.0github.com/paritytech/substrate↘ 4↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-finality-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-inherents
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 37sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-timestamp
4.0.0-dev - polkadot-client
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - unique-node
0.9.27 - unique-runtime
0.9.27 - westend-runtime
0.9.27
- cumulus-client-consensus-aura
sp-io
6.0.0github.com/paritytech/substrate↘ 18↖ 73sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - fc-rpc
2.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - polkadot-node-core-pvf
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.27 - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-sysinfo
6.0.0-dev - sp-application-crypto
6.0.0 - sp-runtime
6.0.0 - sp-sandbox
0.10.0-dev - sp-tasks
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.27 - westend-runtime
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- cumulus-pallet-dmp-queue
sp-keyring
6.0.0github.com/paritytech/substrate↘ 4↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-keystore
0.12.0github.com/paritytech/substrate↘ 10↖ 34sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - frame-benchmarking-cli
4.0.0-dev - polkadot-availability-distribution
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-primitives
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-io
6.0.0 - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.27
- beefy-gadget
sp-maybe-compressed-blob
4.1.0-devgithub.com/paritytech/substrate↘ 2↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-mmr-primitives
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-npos-elections
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-panic-handler
4.0.0github.com/paritytech/substrate↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-rpc
6.0.0github.com/paritytech/substrate↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-runtime
6.0.0github.com/paritytech/substrate↘ 15↖ 198sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - beefy-primitives
4.0.0-dev - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fp-consensus
2.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.27 - kusama-runtime-constants
0.9.27 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-mmr-rpc
3.0.0 - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.5 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - polkadot-client
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-core-primitives
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-rpc
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-constants
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - remote-externalities
0.10.0-dev - rmrk-rpc
0.0.2 - rococo-runtime
0.9.27 - rococo-runtime-constants
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - slot-range-helper
0.9.27 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-version
5.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - test-runtime-constants
0.9.27 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.3 - unique-node
0.9.27 - unique-rpc
0.1.1 - unique-runtime
0.9.27 - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3 - westend-runtime
0.9.27 - westend-runtime-constants
0.9.27 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- beefy-gadget
sp-runtime-interface
6.0.0github.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-runtime-interface-proc-macro
5.0.0github.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysp-sandbox
0.10.0-devgithub.com/paritytech/substrate↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-serializer
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysp-session
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - polkadot-client
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-service
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.27 - unique-rpc
0.1.1 - unique-runtime
0.9.27 - westend-runtime
0.9.27
- kusama-runtime
sp-staking
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used by- frame-support
4.0.0-dev - kusama-runtime
0.9.27 - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-statement-distribution
0.9.27 - polkadot-test-runtime
0.9.27 - rococo-runtime
0.9.27 - sp-session
4.0.0-dev - westend-runtime
0.9.27
- frame-support
sp-state-machine
0.12.0github.com/paritytech/substrate↘ 15↖ 24sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-io
6.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - substrate-test-client
2.0.1 - try-runtime-cli
0.10.0-dev
- cumulus-client-network
sp-std
4.0.0github.com/paritytech/substrate↘ 0↖ 143sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used by- beefy-primitives
4.0.0-dev - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - evm-coder
0.1.3 - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-gilt
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.5 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-randomness-collective-flip
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - polkadot-core-primitives
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-metrics
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rmrk-rpc
0.0.2 - rococo-runtime
0.9.27 - sc-sysinfo
6.0.0-dev - slot-range-helper
0.9.27 - sp-api
4.0.0-dev - sp-application-crypto
6.0.0 - sp-arithmetic
5.0.0 - sp-authority-discovery
4.0.0-dev - sp-authorship
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-consensus-vrf
0.10.0-dev - sp-core
6.0.0 - sp-core-hashing
4.0.0 - sp-externalities
0.12.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
6.0.0 - sp-runtime-interface
6.0.0 - sp-sandbox
0.10.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.12.0 - sp-storage
6.0.0 - sp-tasks
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-tracing
5.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - sp-wasm-interface
6.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - unique-runtime
0.9.27 - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3 - westend-runtime
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- beefy-primitives
sp-storage
6.0.0github.com/paritytech/substrate↘ 6↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-client
0.9.27 - polkadot-service
0.9.27 - sc-client-api
4.0.0-dev - sc-service
0.10.0-dev - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-runtime-interface
6.0.0 - unique-rpc
0.1.1
- cumulus-primitives-parachain-inherent
sp-tasks
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysp-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-tracing
5.0.0github.com/paritytech/substrate↘ 5↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05sp-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsp-transaction-storage-proof
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysp-trie
6.0.0github.com/paritytech/substrate↘ 9↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-client-consensus-common
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-utility
0.1.0 - frame-benchmarking-cli
4.0.0-dev - pallet-session
4.0.0-dev - polkadot-cli
0.9.27 - polkadot-erasure-coding
0.9.27 - polkadot-primitives
0.9.27 - polkadot-service
0.9.27 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-io
6.0.0 - sp-state-machine
0.12.0 - sp-transaction-storage-proof
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - unique-node
0.9.27
- cumulus-client-consensus-common
sp-version
5.0.0github.com/paritytech/substrate↘ 10↖ 21sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused by- cumulus-pallet-parachain-system
0.1.0 - frame-system
4.0.0-dev - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - remote-externalities
0.10.0-dev - rococo-runtime
0.9.27 - sc-cli
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-executor
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.27 - westend-runtime
0.9.27
- cumulus-pallet-parachain-system
sp-version-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysp-wasm-interface
6.0.0github.com/paritytech/substrate↘ 6↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onspin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byss58-registry
1.25.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma039906277e0d8db996cd9d1ef19278c10209d994ecfc1025ced16342873a17cdepends onused bystable_deref_trait
1.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fused by- fixed-hash
0.7.0 - kusama-runtime
0.9.27 - libp2p-noise
0.37.0 - libp2p-relay
0.10.0 - multiaddr
0.14.0 - pallet-election-provider-multi-phase
4.0.0-dev - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - rw-stream-sink
0.3.0 - sp-arithmetic
5.0.0 - sp-runtime-interface
6.0.0 - twox-hash
1.6.3 - uint
0.9.3 - yamux
0.10.2
- fixed-hash
static_init
0.5.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369cused bystatic_init_macro
0.5.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbfused bystatrs
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05bdbb8e4e78216a85785a85d3ec3183144f98d0097b9281802c019bb07a6f05used bystrsim
0.10.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623used bystruct-versioning
0.1.0workspace↘ 2↖ 3strum
0.24.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63fdepends onstrum_macros
0.24.3crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59used bysubstrate-bip39
0.4.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733cused bysubstrate-build-script-utils
3.0.0github.com/paritytech/substrate↘ 1↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsubstrate-frame-rpc-system
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsubstrate-prometheus-endpoint
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 21sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used by- beefy-gadget
4.0.0-dev - cumulus-client-consensus-aura
0.1.0 - fc-rpc
2.0.0-dev - polkadot-node-metrics
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-service
0.9.27 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - unique-node
0.9.27
- beefy-gadget
substrate-state-trie-migration-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onused bysubstrate-test-client
2.0.1github.com/paritytech/substrate↘ 19↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- async-trait
0.1.57 - futures
0.3.23 - hex
0.4.3 - parity-scale-codec
3.1.5 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - serde
1.0.143 - serde_json
1.0.83 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-keyring
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0
used by- async-trait
substrate-test-utils
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05used bysubstrate-test-utils-derive
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05substrate-wasm-builder
5.0.0-devgithub.com/paritytech/substrate↘ 10↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends onsubtle
2.4.1crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601syn
1.0.99crates.io↘ 3↖ 60sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13used by- async-attributes
1.1.2 - async-trait
0.1.57 - auto_impl
0.5.0 - clap_derive
3.2.17 - ctor
0.1.23 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - data-encoding-macro-internal
0.1.10 - derivative
2.2.0 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.4.0 - enumflags2_derive
0.7.4 - enumn
0.1.5 - evm-coder-procedural
0.2.0 - expander
0.0.6 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.23 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.14.0 - libp2p-swarm-derive
0.28.0 - multihash-derive
0.8.0 - nalgebra-macros
0.1.0 - orchestra-proc-macro
0.0.1 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
2.3.1 - parity-scale-codec-derive
3.1.3 - parity-util-mem-derive
0.1.0 - pest_generator
2.2.1 - pin-project-internal
1.0.12 - proc-macro-error
1.0.4 - prometheus-client-derive-text-encode
0.2.0 - prost-derive
0.10.1 - ref-cast-impl
1.0.9 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.1.2 - serde_derive
1.0.143 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
4.0.0 - sp-runtime-interface-proc-macro
5.0.0 - sp-version-proc-macro
4.0.0-dev - static_init_macro
0.5.0 - struct-versioning
0.1.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - synstructure
0.12.6 - thiserror-impl
1.0.32 - tokio-macros
1.8.0 - tracing-attributes
0.1.22 - tracing-gum-proc-macro
0.9.27 - wasm-bindgen-backend
0.2.82 - wasm-bindgen-macro-support
0.2.82 - xcm-procedural
0.9.27 - zeroize_derive
1.3.2
- async-attributes
synstructure
0.12.6crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210fsystem-configuration
0.5.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fdused bysystem-configuration-sys
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9depends onused bytap
1.0.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369target-lexicon
0.12.4crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1tempfile
3.3.0crates.io↘ 6↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4termcolor
1.1.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755depends onused bytest-runtime-constants
0.9.27github.com/paritytech/polkadot↘ 5↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends ontests
0.1.1workspace↘ 24↖ 0depends on- evm-coder
0.1.3 - fp-evm-mapping
0.1.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.8 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-fungible
0.1.5 - pallet-nonfungible
0.1.5 - pallet-refungible
0.2.4 - pallet-structure
0.1.2 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.1.3 - parity-scale-codec
3.1.5 - scale-info
2.1.2 - sp-core
6.0.0 - sp-io
6.0.0 - sp-runtime
6.0.0 - sp-std
4.0.0 - up-data-structs
0.2.2 - up-sponsorship
0.1.0
- evm-coder
textwrap
0.15.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fbused bythiserror
1.0.32crates.io↘ 1↖ 100sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994depends onused by- beefy-gadget
4.0.0-dev - beefy-gadget-rpc
4.0.0-dev - bounded-vec
0.6.0 - cumulus-relay-chain-interface
0.1.0 - fatality
0.0.6 - fatality-proc-macro
0.0.6 - fc-consensus
2.0.0-dev - flexi_logger
0.22.6 - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.3 - jsonrpsee-client-transport
0.14.0 - jsonrpsee-core
0.14.0 - jsonrpsee-types
0.14.0 - libp2p-core
0.34.0 - libp2p-identify
0.37.0 - libp2p-kad
0.38.0 - libp2p-relay
0.10.0 - libp2p-rendezvous
0.7.0 - libp2p-swarm
0.37.0 - libp2p-yamux
0.38.0 - netlink-packet-utils
0.5.1 - netlink-proto
0.10.0 - orchestra
0.0.1 - pest
2.2.1 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-cli
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-erasure-coding
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-jaeger
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-primitives
0.9.27 - polkadot-node-subsystem-types
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-performance-test
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27 - prioritized-metered-channel
0.2.0 - proc-macro-crate
1.2.1 - prometheus
0.13.1 - prost-codec
0.1.0 - redox_users
0.4.3 - reed-solomon-novelpoly
1.0.0 - rtnetlink
0.10.1 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-consensus-uncles
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-state-machine
0.12.0 - sp-timestamp
4.0.0-dev - sp-trie
6.0.0 - sp-version
5.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tiny-bip39
0.8.2 - trust-dns-proto
0.21.2 - trust-dns-resolver
0.21.2 - wasmtime-cranelift
0.38.3 - wasmtime-environ
0.38.3 - wasmtime-jit
0.38.3 - wasmtime-runtime
0.38.3 - wasmtime-types
0.38.3
- beefy-gadget
thiserror-impl
1.0.32crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21depends onused bythousands
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820thread_local
1.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180depends onused bythreadpool
1.8.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onthrift
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb82ca8f46f95b3ce96081fe3dd89160fdea970c254bb72925255d1b62aae692eused bytikv-jemalloc-sys
0.4.3+5.2.1-patched.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1792ccb507d955b46af42c123ea8863668fae24d03721e40cad6a41773dbb49depends onused bytime
0.1.44crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255used bytime
0.3.9crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20dddused bytime-macros
0.2.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792used bytiny-bip39
0.8.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839ddepends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinyvec
1.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50depends ontinyvec_macros
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5cused bytokio
1.20.1crates.io↘ 13↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581depends onused by- backoff
0.4.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - h2
0.3.13 - hyper
0.14.20 - hyper-rustls
0.23.0 - jsonrpsee-client-transport
0.14.0 - jsonrpsee-core
0.14.0 - jsonrpsee-http-server
0.14.0 - jsonrpsee-ws-server
0.14.0 - netlink-proto
0.10.0 - polkadot-test-service
0.9.27 - sc-cli
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-test-utils
4.0.0-dev - tokio-rustls
0.23.4 - tokio-stream
0.1.9 - tokio-util
0.7.3 - unique-node
0.9.27 - unique-rpc
0.1.1
- backoff
tokio-macros
1.8.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484depends onused bytokio-rustls
0.23.4crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59depends ontokio-stream
0.1.9crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9used bytokio-util
0.7.3crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45depends ontoml
0.5.9crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7depends ontower-service
0.3.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52used bytracing
0.1.36crates.io↘ 4↖ 31sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - h2
0.3.13 - hyper
0.14.20 - jsonrpsee
0.14.0 - jsonrpsee-client-transport
0.14.0 - jsonrpsee-core
0.14.0 - jsonrpsee-http-server
0.14.0 - jsonrpsee-types
0.14.0 - jsonrpsee-ws-server
0.14.0 - orchestra
0.0.1 - prioritized-metered-channel
0.2.0 - sc-executor
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sp-io
6.0.0 - sp-state-machine
0.12.0 - sp-tracing
5.0.0 - tokio-util
0.7.3 - tracing-futures
0.2.5 - tracing-gum
0.9.27 - tracing-subscriber
0.2.25
- cumulus-client-collator
tracing-attributes
0.1.22crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2depends onused bytracing-core
0.1.29crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7depends ontracing-futures
0.2.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2depends onused bytracing-gum
0.9.27github.com/paritytech/polkadot↘ 4↖ 29sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused by- polkadot-approval-distribution
0.9.27 - polkadot-availability-bitfield-distribution
0.9.27 - polkadot-availability-distribution
0.9.27 - polkadot-availability-recovery
0.9.27 - polkadot-collator-protocol
0.9.27 - polkadot-dispute-distribution
0.9.27 - polkadot-gossip-support
0.9.27 - polkadot-network-bridge
0.9.27 - polkadot-node-collation-generation
0.9.27 - polkadot-node-core-approval-voting
0.9.27 - polkadot-node-core-av-store
0.9.27 - polkadot-node-core-backing
0.9.27 - polkadot-node-core-bitfield-signing
0.9.27 - polkadot-node-core-candidate-validation
0.9.27 - polkadot-node-core-chain-api
0.9.27 - polkadot-node-core-chain-selection
0.9.27 - polkadot-node-core-dispute-coordinator
0.9.27 - polkadot-node-core-parachains-inherent
0.9.27 - polkadot-node-core-provisioner
0.9.27 - polkadot-node-core-pvf
0.9.27 - polkadot-node-core-pvf-checker
0.9.27 - polkadot-node-core-runtime-api
0.9.27 - polkadot-node-metrics
0.9.27 - polkadot-node-network-protocol
0.9.27 - polkadot-node-subsystem-util
0.9.27 - polkadot-overseer
0.9.27 - polkadot-service
0.9.27 - polkadot-statement-distribution
0.9.27 - polkadot-test-service
0.9.27
- polkadot-approval-distribution
tracing-gum-proc-macro
0.9.27github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feaused bytracing-log
0.1.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922tracing-serde
0.1.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1depends onused bytracing-subscriber
0.2.25crates.io↘ 15↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71depends ontrie-db
0.23.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd32d034c0d3db64b43c31de38e945f15b40cd4ca6d2dcfc26d4798ce8de4ab83trie-root
0.17.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891depends ontriehash
0.8.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5cdepends onused bytrust-dns-proto
0.21.2crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255ddepends onused bytrust-dns-resolver
0.21.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558depends ontry-runtime-cli
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.27#8eff668a42325aeb4433eace1604f4d286a6ec05depends on- clap
3.2.17 - jsonrpsee
0.14.0 - log
0.4.17 - parity-scale-codec
3.1.5 - remote-externalities
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.143 - sp-core
6.0.0 - sp-externalities
0.12.0 - sp-io
6.0.0 - sp-keystore
0.12.0 - sp-runtime
6.0.0 - sp-state-machine
0.12.0 - sp-version
5.0.0 - zstd
0.11.2+zstd.1.5.2
- clap
tt-call
1.0.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055used bytwox-hash
1.6.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675used bytypenum
1.15.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987uint
0.9.3crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0unicase
2.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6depends onused byunicode-bidi
0.3.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992used byunicode-ident
1.0.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aafused byunicode-normalization
0.1.21crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6depends onused byunicode-width
0.1.9crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973used byunicode-xid
0.2.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04unique-node
0.9.27workspace↘ 82↖ 0depends on- clap
3.2.17 - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - flexi_logger
0.22.6 - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - futures
0.3.23 - jsonrpsee
0.14.0 - log
0.4.17 - opal-runtime
0.9.27 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-scale-codec
3.1.5 - parking_lot
0.12.1 - polkadot-cli
0.9.27 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-service
0.9.27 - polkadot-test-service
0.9.27 - quartz-runtime
0.9.27 - rmrk-rpc
0.0.2 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.143 - serde_json
1.0.83 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-finality-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keystore
0.12.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
6.0.0 - substrate-build-script-utils
3.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.20.1 - try-runtime-cli
0.10.0-dev - unique-rpc
0.1.1 - unique-runtime
0.9.27 - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3
- clap
unique-rpc
0.1.1workspace↘ 43↖ 1depends on- fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.23 - jsonrpsee
0.14.0 - pallet-common
0.1.8 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-unique
0.1.3 - rmrk-rpc
0.0.2 - sc-client-api
4.0.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-finality-grandpa
0.10.0-dev - sc-finality-grandpa-rpc
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.143 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-storage
6.0.0 - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - tokio
1.20.1 - uc-rpc
0.1.3 - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3
used by- fc-db
unique-runtime
0.9.27workspace↘ 79↖ 1depends on- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.1.3 - fp-evm-mapping
0.1.0 - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - orml-vesting
0.4.1-dev - pallet-aura
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-base-fee
1.0.0 - pallet-common
0.1.8 - pallet-configuration
0.1.1 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.5 - pallet-inflation
0.1.1 - pallet-nonfungible
0.1.5 - pallet-randomness-collective-flip
4.0.0-dev - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.1.3 - pallet-unique-scheduler
0.1.1 - pallet-xcm
0.9.27 - parachain-info
0.1.0 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - rmrk-rpc
0.0.2 - scale-info
2.1.2 - serde
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-arithmetic
5.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.27 - up-data-structs
0.2.2 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
used by- cumulus-pallet-aura-ext
universal-hash
0.4.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05depends onused byunsigned-varint
0.7.1crates.io↘ 4↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836untrusted
0.7.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aup-data-structs
0.2.2workspace↘ 12↖ 18depends onused by- opal-runtime
0.9.27 - pallet-common
0.1.8 - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.2.0 - pallet-fungible
0.1.5 - pallet-nonfungible
0.1.5 - pallet-refungible
0.2.4 - pallet-rmrk-core
0.1.2 - pallet-rmrk-equip
0.1.2 - pallet-structure
0.1.2 - pallet-unique
0.1.3 - quartz-runtime
0.9.27 - tests
0.1.1 - uc-rpc
0.1.3 - unique-node
0.9.27 - unique-rpc
0.1.1 - unique-runtime
0.9.27 - up-rpc
0.1.3
- opal-runtime
up-sponsorship
0.1.0github.com/uniquenetwork/pallet-sponsoring↘ 1↖ 8sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.27#853766d6033ceb68a2bef196790b962dd0663a04depends onurl
2.2.2crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578cvaluable
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6dused byvalue-bag
1.0.0-alpha.9crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55depends onused byvcpkg
0.2.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaccd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426used byversion_check
0.9.4crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483fvoid
1.0.2crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887dwaker-fn
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceecawalkdir
2.3.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56want
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0depends onused bywasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.10.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasi
0.11.0+wasi-snapshot-preview1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423wasm-bindgen
0.2.82crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7ddepends onwasm-bindgen-backend
0.2.82crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3fdepends onwasm-bindgen-futures
0.4.32crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dadwasm-bindgen-macro
0.2.82crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602used bywasm-bindgen-macro-support
0.2.82crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80daused bywasm-gc-api
0.1.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9wasm-instrument
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum962e5b0401bbb6c887f54e69b8c496ea36f704df65db73e81fd5ff8dc3e63a9fdepends onused bywasm-timer
0.2.5crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onwasmi
0.9.1crates.io↘ 8↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795ddepends onwasmi-validation
0.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum165343ecd6c018fc09ebcae280752702c9a2ef3e6f8d02f1cfcbdb53ef6d7937depends onused bywasmparser
0.85.0crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum570460c58b21e9150d2df0eaaedbb7816c34bcec009ae0dcc976e40ba81463e7depends onwasmtime
0.38.3crates.io↘ 23↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f50eadf868ab6a04b7b511460233377d0bfbb92e417b2f6a98b98fef2e098f5depends on- anyhow
1.0.61 - backtrace
0.3.66 - bincode
1.3.3 - cfg-if
1.0.0 - indexmap
1.9.1 - lazy_static
1.4.0 - libc
0.2.131 - log
0.4.17 - object
0.28.4 - once_cell
1.13.0 - paste
1.0.8 - psm
0.1.20 - rayon
1.5.3 - region
2.2.0 - serde
1.0.143 - target-lexicon
0.12.4 - wasmparser
0.85.0 - wasmtime-cache
0.38.3 - wasmtime-cranelift
0.38.3 - wasmtime-environ
0.38.3 - wasmtime-jit
0.38.3 - wasmtime-runtime
0.38.3 - winapi
0.3.9
- anyhow
wasmtime-cache
0.38.3crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd1df23c642e1376892f3b72f311596976979cbf8b85469680cdd3a8a063d12a2depends onused bywasmtime-cranelift
0.38.3crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf264ff6b4df247d15584f2f53d009fbc90032cfdc2605b52b961bffc71b6eccddepends onused bywasmtime-environ
0.38.3crates.io↘ 12↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum839d2820e4b830f4b9e7aa08d4c0acabf4a5036105d639f6dfa1c6891c73bdc6depends onwasmtime-jit
0.38.3crates.io↘ 18↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef0a0bcbfa18b946d890078ba0e1bc76bcc53eccfb40806c0020ec29dcd1bd49depends onused bywasmtime-jit-debug
0.38.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f4779d976206c458edd643d1ac622b6c37e4a0800a8b1d25dfbf245ac2f2cacdepends onwasmtime-runtime
0.38.3crates.io↘ 18↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb7eb6ffa169eb5dcd18ac9473c817358cd57bc62c244622210566d473397954adepends onwasmtime-types
0.38.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d932b0ac5336f7308d869703dd225610a6a3aeaa8e968c52b43eed96cefb1c2web-sys
0.3.59crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1depends onwebpki
0.22.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bddepends onwebpki-roots
0.22.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04dafdepends onwepoll-ffi
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fbdepends onused bywestend-runtime
0.9.27github.com/paritytech/polkadot↘ 82↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends on- beefy-primitives
4.0.0-dev - bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.3.4 - log
0.4.17 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - parity-scale-codec
3.1.5 - polkadot-parachain
0.9.27 - polkadot-primitives
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - rustc-hex
2.1.0 - scale-info
2.1.2 - serde
1.0.143 - serde_derive
1.0.143 - smallvec
1.9.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
6.0.0 - sp-inherents
4.0.0-dev - sp-io
6.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
6.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
4.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - westend-runtime-constants
0.9.27 - xcm
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
used by- beefy-primitives
westend-runtime-constants
0.9.27github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused bywhich
4.2.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24aedepends onused bywidestring
0.5.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983used bywinapi
0.3.9crates.io↘ 2↖ 36sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419used by- ansi_term
0.12.1 - async-io
1.7.0 - async-process
1.4.0 - atty
0.2.14 - chrono
0.4.22 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.2.8 - fs-swap
0.2.6 - fs2
0.4.3 - gethostname
0.2.3 - hostname
0.3.1 - iana-time-zone
0.1.45 - if-addrs
0.7.0 - ipconfig
0.3.0 - libloading
0.5.2 - libloading
0.7.3 - parity-util-mem
0.11.0 - parking_lot_core
0.8.5 - polling
2.2.0 - region
2.2.0 - remove_dir_all
0.5.3 - ring
0.16.20 - rpassword
5.0.1 - rustix
0.33.7 - socket2
0.4.4 - tempfile
3.3.0 - time
0.1.44 - tokio
1.20.1 - walkdir
2.3.2 - wasmtime
0.38.3 - wasmtime-cache
0.38.3 - wasmtime-jit
0.38.3 - wasmtime-runtime
0.38.3 - winapi-util
0.1.5 - winreg
0.7.0
- ansi_term
winapi-i686-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6used bywinapi-util
0.1.5crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178depends onwinapi-x86_64-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183fused bywindows
0.34.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829fdepends onused bywindows_aarch64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881dused bywindows_aarch64_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47used bywindows_i686_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688edused bywindows_i686_gnu
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6used bywindows_i686_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956used bywindows_i686_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024used bywindows_x86_64_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4used bywindows_x86_64_gnu
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1used bywindows_x86_64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9used bywindows_x86_64_msvc
0.36.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680used bywindows-sys
0.36.1crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2depends onwinreg
0.7.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69depends onused bywyz
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214used bywyz
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390edepends onused byx25519-dalek
1.1.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byxcm
0.9.27github.com/paritytech/polkadot↘ 7↖ 19sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-common
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - unique-runtime
0.9.27 - westend-runtime
0.9.27 - xcm-builder
0.9.27 - xcm-executor
0.9.27
- cumulus-pallet-dmp-queue
xcm-builder
0.9.27github.com/paritytech/polkadot↘ 13↖ 9sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onxcm-executor
0.9.27github.com/paritytech/polkadot↘ 11↖ 15sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feadepends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.27 - opal-runtime
0.9.27 - pallet-xcm
0.9.27 - pallet-xcm-benchmarks
0.9.27 - polkadot-runtime
0.9.27 - polkadot-runtime-parachains
0.9.27 - polkadot-test-runtime
0.9.27 - quartz-runtime
0.9.27 - rococo-runtime
0.9.27 - unique-runtime
0.9.27 - westend-runtime
0.9.27 - xcm-builder
0.9.27
- cumulus-pallet-dmp-queue
xcm-procedural
0.9.27github.com/paritytech/polkadot↘ 4↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479feaused byyamux
0.10.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5used byzeroize
1.5.7crates.io↘ 1↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149fdepends onused by- chacha20
0.8.2 - chacha20poly1305
0.9.1 - crypto-bigint
0.3.2 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-pre.1 - ed25519-dalek
1.0.1 - elliptic-curve
0.11.12 - libp2p-core
0.34.0 - libp2p-noise
0.37.0 - merlin
2.0.1 - rfc6979
0.1.0 - sc-network
0.10.0-dev - schnorrkel
0.9.1 - sec1
0.2.1 - secrecy
0.8.0 - sp-core
6.0.0 - substrate-bip39
0.4.4 - tiny-bip39
0.8.2 - x25519-dalek
1.1.1
- chacha20
zeroize_derive
1.3.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17used byzstd
0.11.2+zstd.1.5.2crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4depends onzstd-safe
5.0.2+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4dbdepends onused byzstd-sys
2.0.1+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12bdepends onused by
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -128,5 +128,9 @@
bench-rmrk-equip:
make _bench PALLET=proxy-rmrk-equip
+.PHONY: bench-app-promotion
+bench-app-promotion:
+ make _bench PALLET=app-promotion PALLET_DIR=app-promotion
+
.PHONY: bench
bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip
client/rpc/CHANGELOG.mddiffbeforeafterboth--- a/client/rpc/CHANGELOG.md
+++ b/client/rpc/CHANGELOG.md
@@ -3,15 +3,21 @@
All notable changes to this project will be documented in this file.
<!-- bureaucrate goes here -->
+
+## [v0.1.4] 2022-09-08
+
+### Added
+- Support RPC for `AppPromotion` pallet.
+
## [v0.1.3] 2022-08-16
### Other changes
-- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
+- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
-- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
+- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
-- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
+- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
## [0.1.2] - 2022-08-12
client/rpc/Cargo.tomldiffbeforeafterboth--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "uc-rpc"
-version = "0.1.3"
+version = "0.1.4"
license = "GPLv3"
edition = "2021"
@@ -8,6 +8,7 @@
pallet-common = { default-features = false, path = '../../pallets/common' }
up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
up-rpc = { path = "../../primitives/rpc" }
+app-promotion-rpc = { path = "../../primitives/app_promotion_rpc"}
rmrk-rpc = { path = "../../primitives/rmrk-rpc" }
codec = { package = "parity-scale-codec", version = "3.1.2" }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -23,6 +23,7 @@
proc_macros::rpc,
};
use anyhow::anyhow;
+use sp_runtime::traits::{AtLeast32BitUnsigned, Member};
use up_data_structs::{
RpcCollection, CollectionId, CollectionStats, CollectionLimits, TokenId, Property,
PropertyKeyPermission, TokenData, TokenChild,
@@ -30,6 +31,7 @@
use sp_api::{BlockId, BlockT, ProvideRuntimeApi, ApiExt};
use sp_blockchain::HeaderBackend;
use up_rpc::UniqueApi as UniqueRuntimeApi;
+use app_promotion_rpc::AppPromotionApi as AppPromotionRuntimeApi;
// RMRK
use rmrk_rpc::RmrkApi as RmrkRuntimeApi;
@@ -37,6 +39,7 @@
RmrkCollectionId, RmrkNftId, RmrkBaseId, RmrkNftChild, RmrkThemeName, RmrkResourceId,
};
+pub use app_promotion_unique_rpc::AppPromotionApiServer;
pub use rmrk_unique_rpc::RmrkApiServer;
#[rpc(server)]
@@ -245,6 +248,46 @@
) -> Result<Option<String>>;
}
+mod app_promotion_unique_rpc {
+ use super::*;
+
+ #[rpc(server)]
+ #[async_trait]
+ pub trait AppPromotionApi<BlockHash, BlockNumber, CrossAccountId, AccountId> {
+ /// Returns the total amount of staked tokens.
+ #[method(name = "appPromotion_totalStaked")]
+ fn total_staked(
+ &self,
+ staker: Option<CrossAccountId>,
+ at: Option<BlockHash>,
+ ) -> Result<String>;
+
+ ///Returns the total amount of staked tokens per block when staked.
+ #[method(name = "appPromotion_totalStakedPerBlock")]
+ fn total_staked_per_block(
+ &self,
+ staker: CrossAccountId,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<(BlockNumber, String)>>;
+
+ /// Returns the total amount of tokens pending withdrawal from staking.
+ #[method(name = "appPromotion_pendingUnstake")]
+ fn pending_unstake(
+ &self,
+ staker: Option<CrossAccountId>,
+ at: Option<BlockHash>,
+ ) -> Result<String>;
+
+ /// Returns the total amount of tokens pending withdrawal from staking per block.
+ #[method(name = "appPromotion_pendingUnstakePerBlock")]
+ fn pending_unstake_per_block(
+ &self,
+ staker: CrossAccountId,
+ at: Option<BlockHash>,
+ ) -> Result<Vec<(BlockNumber, String)>>;
+ }
+}
+
mod rmrk_unique_rpc {
use super::*;
@@ -367,34 +410,28 @@
}
}
-pub struct Unique<C, P> {
- client: Arc<C>,
- _marker: std::marker::PhantomData<P>,
-}
+macro_rules! define_struct_for_server_api {
+ ($name:ident) => {
+ pub struct $name<C, P> {
+ client: Arc<C>,
+ _marker: std::marker::PhantomData<P>,
+ }
-impl<C, P> Unique<C, P> {
- pub fn new(client: Arc<C>) -> Self {
- Self {
- client,
- _marker: Default::default(),
+ impl<C, P> $name<C, P> {
+ pub fn new(client: Arc<C>) -> Self {
+ Self {
+ client,
+ _marker: Default::default(),
+ }
+ }
}
- }
+ };
}
-pub struct Rmrk<C, P> {
- client: Arc<C>,
- _marker: std::marker::PhantomData<P>,
-}
+define_struct_for_server_api!(Unique);
+define_struct_for_server_api!(AppPromotion);
+define_struct_for_server_api!(Rmrk);
-impl<C, P> Rmrk<C, P> {
- pub fn new(client: Arc<C>) -> Self {
- Self {
- client,
- _marker: Default::default(),
- }
- }
-}
-
macro_rules! pass_method {
(
$method_name:ident(
@@ -440,6 +477,12 @@
};
}
+macro_rules! app_promotion_api {
+ () => {
+ dyn AppPromotionRuntimeApi<Block, BlockNumber, CrossAccountId, AccountId>
+ };
+}
+
macro_rules! rmrk_api {
() => {
dyn RmrkRuntimeApi<Block, AccountId, CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme>
@@ -522,6 +565,35 @@
pass_method!(token_owners(collection: CollectionId, token: TokenId) -> Vec<CrossAccountId>, unique_api);
}
+impl<C, Block, BlockNumber, CrossAccountId, AccountId>
+ app_promotion_unique_rpc::AppPromotionApiServer<
+ <Block as BlockT>::Hash,
+ BlockNumber,
+ CrossAccountId,
+ AccountId,
+ > for AppPromotion<C, Block>
+where
+ Block: BlockT,
+ BlockNumber: Decode + Member + AtLeast32BitUnsigned,
+ AccountId: Decode,
+ C: 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
+ C::Api: AppPromotionRuntimeApi<Block, BlockNumber, CrossAccountId, AccountId>,
+ CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,
+{
+ pass_method!(total_staked(staker: Option<CrossAccountId>) -> String => |v| v.to_string(), app_promotion_api);
+ pass_method!(total_staked_per_block(staker: CrossAccountId) -> Vec<(BlockNumber, String)> =>
+ |v| v
+ .into_iter()
+ .map(|(b, a)| (b, a.to_string()))
+ .collect::<Vec<_>>(), app_promotion_api);
+ pass_method!(pending_unstake(staker: Option<CrossAccountId>) -> String => |v| v.to_string(), app_promotion_api);
+ pass_method!(pending_unstake_per_block(staker: CrossAccountId) -> Vec<(BlockNumber, String)> =>
+ |v| v
+ .into_iter()
+ .map(|(b, a)| (b, a.to_string()))
+ .collect::<Vec<_>>(), app_promotion_api);
+}
+
#[allow(deprecated)]
impl<
C,
doc/separate_rpc.mddiffbeforeafterboth--- /dev/null
+++ b/doc/separate_rpc.md
@@ -0,0 +1,123 @@
+1. Create, in the `primitives` folder, a crate with a trait for RPC generation.
+ ```rust
+ sp_api::decl_runtime_apis! {
+ #[api_version(2)]
+ pub trait ModuleNameApi<CrossAccountId>
+ where
+ CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,
+ {
+ fn method_name(user: Option<CrossAccountId>) -> Result<u128, DispatchError>;
+ }
+ }
+ ```
+
+2. client/rpc/src/lib.rs
+ * Add a trait with the required methods. Mark it with `#[rpc(server)]` and `#[async_trait]` directives.
+ ```rust
+ #[rpc(server)]
+ #[async_trait]
+ pub trait ModuleNameApi<BlockHash, CrossAccountId> {
+ #[method(name = "moduleName_methodName")]
+ fn method_name(&self, user: Option<CrossAccountId>, at: Option<BlockHash>)
+ -> Result<String>;
+ }
+ ```
+ * Don't forget to write the correct method identifier in the form `moduleName_methodName`.
+ * Add a structure for which the server API interface will be implemented.
+ ```rust
+ define_struct_for_server_api!(ModuleName);
+ ```
+ * Define a macro to be used in the implementation of the server API interface.
+ ```rust
+ macro_rules! module_api {
+ () => {
+ dyn ModuleNameRuntimeApi<BlockHash, CrossAccountId>
+ };
+ }
+ ```
+ * Implement a server API interface.
+ ```rust
+ impl<C, Block, CrossAccountId>
+ ModuleNameApiServer<<Block as BlockT>::Hash, CrossAccountId> for ModuleName<C, Block>
+ where
+ Block: BlockT,
+ C: 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
+ C::Api: AppPromotionRuntimeApi<Block, BlockNumber, CrossAccountId, AccountId>,
+ CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,
+ {
+ pass_method!(method_name(user: Option<CrossAccountId>) -> String => |v| v.to_string(), app_promotion_api);
+ }
+ ```
+
+3. runtime/common/runtime_apis.rs
+ * Implement the `ModuleNameApi` interface for `Runtime`. Optionally, you can mark a feature flag to disable the functionality.
+ ```rust
+ impl MethodApi<Block, BlockNumber, CrossAccountId, AccountId> for Runtime {
+ fn method_name(user: Option<CrossAccountId>) -> Result<u128, DispatchError> {
+ #[cfg(not(feature = "module"))]
+ return unsupported!();
+
+ #[cfg(feature = "module")]
+ return Ok(0);
+ }
+ }
+ ```
+
+4. node/cli/src/service.rs
+ * Set the `MethodApi<Block, Runtime::CrossAccountId>` bound in the `start_node_impl`, `start_node`, `start_dev_node` methods.
+
+5. node/rpc/src/lib.rs
+ * Add `MethodApi<Block, Runtime::CrossAccountId>` bound to `create_full` method.
+ * Enable RPC in the `create_full` method by adding `io.merge(ModuleName::new(client.clone()).into_rpc())?;`
+
+6. Add a new crate (see point 1) into dependencies.
+ * client/rpc/Cargo.toml
+ * node/rpc/Cargo.toml
+ * runtime/opal/Cargo.toml
+ * runtime/quartz/Cargo.toml
+ * runtime/unique/Cargo.toml
+
+7. Create tests/src/interfaces/ModuleName/definitions.ts and describe the necessary methods in it.
+ ```ts
+ type RpcParam = {
+ name: string;
+ type: string;
+ isOptional?: true;
+ };
+
+ const CROSS_ACCOUNT_ID_TYPE = 'PalletEvmAccountBasicCrossAccountIdRepr';
+
+ const fun = (description: string, params: RpcParam[], type: string) => ({
+ description,
+ params: [...params, atParam],
+ type,
+ });
+
+ export default {
+ types: {},
+ rpc: {
+ methodName: fun(
+ 'Documentation for method',
+ [{name: 'user', type: CROSS_ACCOUNT_ID_TYPE, isOptional: true}],
+ 'u128',
+ ),
+ },
+ };
+ ```
+
+8. Describe definitions from paragraph 7 in tests/src/interfaces/definitions.ts.
+ ```ts
+ export {default as ModuleName} from './module/definitions';
+ ```
+
+9. tests/src/substrate/substrate-api.ts
+ * Set the RPC interface in the `defaultApiOptions` function, add an entry in the `rpc` parameter
+ ```ts
+ module: defs.module.rpc,
+ ```
+
+10. tests/src/util/playgrounds/unique.dev.ts
+ * Specify RPC interface in `connect` function, add entry in `rpc` parameter
+ ```ts
+ module: defs.module.rpc,
+ ```
\ No newline at end of file
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -318,6 +318,7 @@
pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
unique-rpc = { default-features = false, path = "../rpc" }
+app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false}
rmrk-rpc = { path = "../../primitives/rmrk-rpc" }
[features]
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -63,7 +63,9 @@
use fc_rpc_core::types::FilterPool;
use fc_mapping_sync::{MappingSyncWorker, SyncStrategy};
-use up_common::types::opaque::{AuraId, RuntimeInstance, AccountId, Balance, Index, Hash, Block};
+use up_common::types::opaque::{
+ AuraId, RuntimeInstance, AccountId, Balance, Index, Hash, Block, BlockNumber,
+};
// RMRK
use up_data_structs::{
@@ -362,6 +364,7 @@
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
+ + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
+ rmrk_rpc::RmrkApi<
Block,
AccountId,
@@ -663,6 +666,7 @@
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
+ + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
+ rmrk_rpc::RmrkApi<
Block,
AccountId,
@@ -807,6 +811,7 @@
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
+ up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
+ + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
+ rmrk_rpc::RmrkApi<
Block,
AccountId,
node/rpc/Cargo.tomldiffbeforeafterboth--- a/node/rpc/Cargo.toml
+++ b/node/rpc/Cargo.toml
@@ -53,6 +53,7 @@
pallet-unique = { path = "../../pallets/unique" }
uc-rpc = { path = "../../client/rpc" }
up-rpc = { path = "../../primitives/rpc" }
+app-promotion-rpc = { path = "../../primitives/app_promotion_rpc"}
rmrk-rpc = { path = "../../primitives/rmrk-rpc" }
up-data-structs = { default-features = false, path = "../../primitives/data-structs" }
node/rpc/src/lib.rsdiffbeforeafterboth--- a/node/rpc/src/lib.rs
+++ b/node/rpc/src/lib.rs
@@ -145,6 +145,12 @@
C::Api: fp_rpc::EthereumRuntimeRPCApi<Block>,
C::Api: fp_rpc::ConvertTransactionRuntimeApi<Block>,
C::Api: up_rpc::UniqueApi<Block, <R as RuntimeInstance>::CrossAccountId, AccountId>,
+ C::Api: app_promotion_rpc::AppPromotionApi<
+ Block,
+ BlockNumber,
+ <R as RuntimeInstance>::CrossAccountId,
+ AccountId,
+ >,
C::Api: rmrk_rpc::RmrkApi<
Block,
AccountId,
@@ -169,6 +175,7 @@
EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,
};
use uc_rpc::{UniqueApiServer, Unique};
+ use uc_rpc::{AppPromotionApiServer, AppPromotion};
#[cfg(not(feature = "unique-runtime"))]
use uc_rpc::{RmrkApiServer, Rmrk};
@@ -227,6 +234,9 @@
io.merge(Unique::new(client.clone()).into_rpc())?;
+ #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
+ io.merge(AppPromotion::new(client.clone()).into_rpc())?;
+
#[cfg(not(feature = "unique-runtime"))]
io.merge(Rmrk::new(client.clone()).into_rpc())?;
pallets/app-promotion/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/pallets/app-promotion/Cargo.toml
@@ -0,0 +1,73 @@
+################################################################################
+# Package
+
+[package]
+authors = ['Unique Network <support@uniquenetwork.io>']
+description = 'Unique App Promotion Pallet'
+edition = '2021'
+homepage = 'https://unique.network'
+license = 'GPLv3'
+name = 'pallet-app-promotion'
+repository = 'https://github.com/UniqueNetwork/unique-chain'
+version = '0.1.0'
+
+[package.metadata.docs.rs]
+targets = ['x86_64-unknown-linux-gnu']
+
+[features]
+default = ['std']
+runtime-benchmarks = [
+ 'frame-benchmarking',
+ 'frame-support/runtime-benchmarks',
+ 'frame-system/runtime-benchmarks',
+ # 'pallet-unique/runtime-benchmarks',
+]
+std = [
+ 'codec/std',
+ 'frame-benchmarking/std',
+ 'frame-support/std',
+ 'frame-system/std',
+ 'pallet-balances/std',
+ 'pallet-timestamp/std',
+ 'pallet-randomness-collective-flip/std',
+ 'pallet-evm/std',
+ 'sp-io/std',
+ 'sp-std/std',
+ 'sp-runtime/std',
+ 'sp-core/std',
+ 'serde/std',
+
+]
+[dependencies]
+scale-info = { version = "2.0.1", default-features = false, features = [
+ "derive",
+] }
+################################################################################
+# Substrate Dependencies
+
+codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = '3.1.2' }
+frame-benchmarking = {default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+frame-system ={ default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+pallet-balances ={ default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+pallet-timestamp ={ default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+pallet-randomness-collective-flip ={ default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+pallet-evm ={ default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
+sp-std ={ default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+sp-io ={ default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+serde = { default-features = false, features = ['derive'], version = '1.0.130' }
+
+################################################################################
+# local dependencies
+
+up-data-structs ={ default-features = false, path = "../../primitives/data-structs" }
+pallet-common ={ default-features = false, path = "../common" }
+pallet-unique ={ default-features = false, path = "../unique" }
+pallet-evm-contract-helpers ={ default-features = false, path = "../evm-contract-helpers" }
+
+[dev-dependencies]
+pallet-evm-migration ={ default-features = false, path = "../evm-migration" }
+
+################################################################################
pallets/app-promotion/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/app-promotion/src/benchmarking.rs
@@ -0,0 +1,162 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+#![cfg(feature = "runtime-benchmarks")]
+
+use super::*;
+use crate::Pallet as PromototionPallet;
+
+use sp_runtime::traits::Bounded;
+use sp_std::vec;
+
+use frame_benchmarking::{benchmarks, account};
+use frame_support::traits::OnInitialize;
+use frame_system::{Origin, RawOrigin};
+use pallet_unique::benchmarking::create_nft_collection;
+use pallet_evm_migration::Pallet as EvmMigrationPallet;
+
+const SEED: u32 = 0;
+
+fn set_admin<T>() -> Result<T::AccountId, sp_runtime::DispatchError>
+where
+ T: Config + pallet_unique::Config + pallet_evm_migration::Config,
+ T::BlockNumber: From<u32> + Into<u32>,
+ <<T as Config>::Currency as Currency<T::AccountId>>::Balance: Sum + From<u128>,
+{
+ let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+
+ <T as Config>::Currency::make_free_balance_be(
+ &pallet_admin,
+ Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value(),
+ );
+
+ PromototionPallet::<T>::set_admin_address(
+ RawOrigin::Root.into(),
+ T::CrossAccountId::from_sub(pallet_admin.clone()),
+ )?;
+
+ Ok(pallet_admin)
+}
+
+benchmarks! {
+ where_clause{
+ where T: Config + pallet_unique::Config + pallet_evm_migration::Config ,
+ T::BlockNumber: From<u32> + Into<u32>,
+ <<T as Config>::Currency as Currency<T::AccountId>>::Balance: Sum + From<u128>
+ }
+
+ on_initialize {
+ let b in 0..PENDING_LIMIT_PER_BLOCK;
+ set_admin::<T>()?;
+
+ (0..b).try_for_each(|index| {
+ let staker = account::<T::AccountId>("staker", index, SEED);
+ <T as Config>::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ PromototionPallet::<T>::stake(RawOrigin::Signed(staker.clone()).into(), Into::<BalanceOf<T>>::into(100u128) * T::Nominal::get())?;
+ PromototionPallet::<T>::unstake(RawOrigin::Signed(staker.clone()).into()).map_err(|e| e.error)?;
+ Result::<(), sp_runtime::DispatchError>::Ok(())
+ })?;
+ let block_number = <frame_system::Pallet<T>>::current_block_number() + T::PendingInterval::get();
+ }: {PromototionPallet::<T>::on_initialize(block_number)}
+
+ set_admin_address {
+ let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+ let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ } : _(RawOrigin::Root, T::CrossAccountId::from_sub(pallet_admin))
+
+ payout_stakers{
+ let b in 1..101;
+
+ let pallet_admin = account::<T::AccountId>("admin", 1, SEED);
+ let share = Perbill::from_rational(1u32, 20);
+ PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+ <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+
+ let staker: T::AccountId = account("caller", 0, SEED);
+ <T as Config>::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ let stakers: Vec<T::AccountId> = (0..b).map(|index| account("staker", index, SEED)).collect();
+ stakers.iter().for_each(|staker| {
+ <T as Config>::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ });
+ (0..10).try_for_each(|_| {
+ stakers.iter()
+ .map(|staker| {
+ PromototionPallet::<T>::stake(RawOrigin::Signed(staker.clone()).into(), Into::<BalanceOf<T>>::into(100u128) * T::Nominal::get())
+ }).collect::<Result<Vec<_>, _>>()?;
+ <frame_system::Pallet<T>>::finalize();
+ Result::<(), sp_runtime::DispatchError>::Ok(())
+ })?;
+ } : _(RawOrigin::Signed(pallet_admin.clone()), Some(b as u8))
+
+ stake {
+ let caller = account::<T::AccountId>("caller", 0, SEED);
+ let share = Perbill::from_rational(1u32, 10);
+ let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ } : _(RawOrigin::Signed(caller.clone()), share * <T as Config>::Currency::total_balance(&caller))
+
+ unstake {
+ let caller = account::<T::AccountId>("caller", 0, SEED);
+ let share = Perbill::from_rational(1u32, 20);
+ let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ (0..10).map(|_| {
+ <frame_system::Pallet<T>>::finalize();
+ PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))
+ }).collect::<Result<Vec<_>, _>>()?;
+
+ } : _(RawOrigin::Signed(caller.clone()))
+
+ sponsor_collection {
+ let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+ PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+ let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ } : _(RawOrigin::Signed(pallet_admin.clone()), collection)
+
+ stop_sponsoring_collection {
+ let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+ PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+ let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ let caller: T::AccountId = account("caller", 0, SEED);
+ let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ let collection = create_nft_collection::<T>(caller.clone())?;
+ PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?;
+ } : _(RawOrigin::Signed(pallet_admin.clone()), collection)
+
+ sponsor_contract {
+ let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+ PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+
+ let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ let address = H160::from_low_u64_be(SEED as u64);
+ let data: Vec<u8> = (0..20 as u8).collect();
+ <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;
+ <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;
+ } : _(RawOrigin::Signed(pallet_admin.clone()), address)
+
+ stop_sponsoring_contract {
+ let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
+ PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;
+
+ let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());
+ let address = H160::from_low_u64_be(SEED as u64);
+ let data: Vec<u8> = (0..20 as u8).collect();
+ <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;
+ <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;
+ PromototionPallet::<T>::sponsor_contract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?;
+ } : _(RawOrigin::Signed(pallet_admin.clone()), address)
+}
pallets/app-promotion/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/app-promotion/src/lib.rs
@@ -0,0 +1,758 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+//! # App promotion
+//!
+//! The app promotion pallet is designed to ... .
+//!
+//! ## Interface
+//!
+//! ### Dispatchable Functions
+//!
+
+// #![recursion_limit = "1024"]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
+
+pub mod types;
+pub mod weights;
+
+use sp_std::{
+ vec::{Vec},
+ vec,
+ iter::Sum,
+ borrow::ToOwned,
+ cell::RefCell,
+};
+use sp_core::H160;
+use codec::EncodeLike;
+use pallet_balances::BalanceLock;
+pub use types::*;
+
+use up_data_structs::CollectionId;
+
+use frame_support::{
+ dispatch::{DispatchResult},
+ traits::{
+ Currency, Get, LockableCurrency, WithdrawReasons, tokens::Balance, ExistenceRequirement,
+ },
+ ensure,
+};
+
+use weights::WeightInfo;
+
+pub use pallet::*;
+use pallet_evm::account::CrossAccountId;
+use sp_runtime::{
+ Perbill,
+ traits::{BlockNumberProvider, CheckedAdd, CheckedSub, AccountIdConversion, Zero},
+ ArithmeticError,
+};
+
+pub const LOCK_IDENTIFIER: [u8; 8] = *b"appstake";
+
+const PENDING_LIMIT_PER_BLOCK: u32 = 3;
+
+type BalanceOf<T> =
+ <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;
+
+#[frame_support::pallet]
+pub mod pallet {
+ use super::*;
+ use frame_support::{
+ Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key, PalletId,
+ traits::ReservableCurrency,
+ };
+ use frame_system::pallet_prelude::*;
+
+ #[pallet::config]
+ pub trait Config: frame_system::Config + pallet_evm::account::Config {
+ /// Type to interact with the native token
+ type Currency: ExtendedLockableCurrency<Self::AccountId>
+ + ReservableCurrency<Self::AccountId>;
+
+ /// Type for interacting with collections
+ type CollectionHandler: CollectionHandler<
+ AccountId = Self::AccountId,
+ CollectionId = CollectionId,
+ >;
+
+ /// Type for interacting with conrtacts
+ type ContractHandler: ContractHandler<AccountId = Self::CrossAccountId, ContractId = H160>;
+
+ /// ID for treasury
+ type TreasuryAccountId: Get<Self::AccountId>;
+
+ /// The app's pallet id, used for deriving its sovereign account ID.
+ #[pallet::constant]
+ type PalletId: Get<PalletId>;
+
+ /// In relay blocks.
+ #[pallet::constant]
+ type RecalculationInterval: Get<Self::BlockNumber>;
+
+ /// In parachain blocks.
+ #[pallet::constant]
+ type PendingInterval: Get<Self::BlockNumber>;
+
+ /// Rate of return for interval in blocks defined in `RecalculationInterval`.
+ #[pallet::constant]
+ type IntervalIncome: Get<Perbill>;
+
+ /// Decimals for the `Currency`.
+ #[pallet::constant]
+ type Nominal: Get<BalanceOf<Self>>;
+
+ /// Weight information for extrinsics in this pallet.
+ type WeightInfo: WeightInfo;
+
+ // The relay block number provider
+ type RelayBlockNumberProvider: BlockNumberProvider<BlockNumber = Self::BlockNumber>;
+
+ /// Events compatible with [`frame_system::Config::Event`].
+ type Event: IsType<<Self as frame_system::Config>::Event> + From<Event<Self>>;
+ }
+
+ #[pallet::pallet]
+ #[pallet::generate_store(pub(super) trait Store)]
+ pub struct Pallet<T>(_);
+
+ #[pallet::event]
+ #[pallet::generate_deposit(fn deposit_event)]
+ pub enum Event<T: Config> {
+ /// Staking recalculation was performed
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the staker.
+ /// * Balance : recalculation base
+ /// * Balance : total income
+ StakingRecalculation(
+ /// An recalculated staker
+ T::AccountId,
+ /// Base on which interest is calculated
+ BalanceOf<T>,
+ /// Amount of accrued interest
+ BalanceOf<T>,
+ ),
+
+ /// Staking was performed
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the staker
+ /// * Balance : staking amount
+ Stake(T::AccountId, BalanceOf<T>),
+
+ /// Unstaking was performed
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the staker
+ /// * Balance : unstaking amount
+ Unstake(T::AccountId, BalanceOf<T>),
+
+ /// The admin was set
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the admin
+ SetAdmin(T::AccountId),
+ }
+
+ #[pallet::error]
+ pub enum Error<T> {
+ /// Error due to action requiring admin to be set.
+ AdminNotSet,
+ /// No permission to perform an action.
+ NoPermission,
+ /// Insufficient funds to perform an action.
+ NotSufficientFunds,
+ /// Occurs when a pending unstake cannot be added in this block. PENDING_LIMIT_PER_BLOCK` limits exceeded.
+ PendingForBlockOverflow,
+ /// The error is due to the fact that the collection/contract must already be sponsored in order to perform the action.
+ SponsorNotSet,
+ /// Errors caused by incorrect actions with a locked balance.
+ IncorrectLockedBalanceOperation,
+ }
+
+ #[pallet::storage]
+ pub type TotalStaked<T: Config> = StorageValue<Value = BalanceOf<T>, QueryKind = ValueQuery>;
+
+ #[pallet::storage]
+ pub type Admin<T: Config> = StorageValue<Value = T::AccountId, QueryKind = OptionQuery>;
+
+ /// Amount of tokens staked by account in the blocknumber.
+ #[pallet::storage]
+ pub type Staked<T: Config> = StorageNMap<
+ Key = (
+ Key<Blake2_128Concat, T::AccountId>,
+ Key<Twox64Concat, T::BlockNumber>,
+ ),
+ Value = (BalanceOf<T>, T::BlockNumber),
+ QueryKind = ValueQuery,
+ >;
+ /// Amount of stakes for an Account
+ #[pallet::storage]
+ pub type StakesPerAccount<T: Config> =
+ StorageMap<_, Blake2_128Concat, T::AccountId, u8, ValueQuery>;
+
+ #[pallet::storage]
+ pub type PendingUnstake<T: Config> = StorageMap<
+ _,
+ Twox64Concat,
+ T::BlockNumber,
+ BoundedVec<(T::AccountId, BalanceOf<T>), ConstU32<PENDING_LIMIT_PER_BLOCK>>,
+ ValueQuery,
+ >;
+
+ /// Stores a key for record for which the next revenue recalculation would be performed.
+ /// If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.
+ #[pallet::storage]
+ #[pallet::getter(fn get_next_calculated_record)]
+ pub type NextCalculatedRecord<T: Config> =
+ StorageValue<Value = (T::AccountId, T::BlockNumber), QueryKind = OptionQuery>;
+
+ #[pallet::hooks]
+ impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
+ /// Block overflow is impossible due to the fact that the unstake algorithm in on_initialize
+ /// implies the execution of a strictly limited number of relatively lightweight operations.
+ /// A separate benchmark has been implemented to scale the weight depending on the number of pendings.
+ fn on_initialize(current_block_number: T::BlockNumber) -> Weight
+ where
+ <T as frame_system::Config>::BlockNumber: From<u32>,
+ {
+ let block_pending = PendingUnstake::<T>::take(current_block_number);
+ let counter = block_pending.len() as u32;
+
+ if !block_pending.is_empty() {
+ block_pending.into_iter().for_each(|(staker, amount)| {
+ <T::Currency as ReservableCurrency<T::AccountId>>::unreserve(&staker, amount);
+ });
+ }
+
+ T::WeightInfo::on_initialize(counter)
+ }
+ }
+
+ #[pallet::call]
+ impl<T: Config> Pallet<T>
+ where
+ T::BlockNumber: From<u32> + Into<u32>,
+ <<T as Config>::Currency as Currency<T::AccountId>>::Balance: Sum + From<u128>,
+ {
+ #[pallet::weight(T::WeightInfo::set_admin_address())]
+ pub fn set_admin_address(origin: OriginFor<T>, admin: T::CrossAccountId) -> DispatchResult {
+ ensure_root(origin)?;
+
+ <Admin<T>>::set(Some(admin.as_sub().to_owned()));
+
+ Self::deposit_event(Event::SetAdmin(admin.as_sub().to_owned()));
+
+ Ok(())
+ }
+
+ #[pallet::weight(T::WeightInfo::stake())]
+ pub fn stake(staker: OriginFor<T>, amount: BalanceOf<T>) -> DispatchResult {
+ let staker_id = ensure_signed(staker)?;
+
+ ensure!(
+ StakesPerAccount::<T>::get(&staker_id) < 10,
+ Error::<T>::NoPermission
+ );
+
+ ensure!(
+ amount >= <BalanceOf<T>>::from(100u128) * T::Nominal::get(),
+ ArithmeticError::Underflow
+ );
+
+ let balance =
+ <<T as Config>::Currency as Currency<T::AccountId>>::free_balance(&staker_id);
+
+ <<T as Config>::Currency as Currency<T::AccountId>>::ensure_can_withdraw(
+ &staker_id,
+ amount,
+ WithdrawReasons::all(),
+ balance
+ .checked_sub(&amount)
+ .ok_or(ArithmeticError::Underflow)?,
+ )?;
+
+ Self::add_lock_balance(&staker_id, amount)?;
+
+ let block_number = T::RelayBlockNumberProvider::current_block_number();
+
+ let recalculate_after_interval: T::BlockNumber =
+ if block_number % T::RecalculationInterval::get() == 0u32.into() {
+ 1u32.into()
+ } else {
+ 2u32.into()
+ };
+
+ let recalc_block = (block_number / T::RecalculationInterval::get()
+ + recalculate_after_interval)
+ * T::RecalculationInterval::get();
+
+ <Staked<T>>::insert((&staker_id, block_number), {
+ let mut balance_and_recalc_block = <Staked<T>>::get((&staker_id, block_number));
+ balance_and_recalc_block.0 = balance_and_recalc_block
+ .0
+ .checked_add(&amount)
+ .ok_or(ArithmeticError::Overflow)?;
+ balance_and_recalc_block.1 = recalc_block;
+ balance_and_recalc_block
+ });
+
+ <TotalStaked<T>>::set(
+ <TotalStaked<T>>::get()
+ .checked_add(&amount)
+ .ok_or(ArithmeticError::Overflow)?,
+ );
+
+ StakesPerAccount::<T>::mutate(&staker_id, |stakes| *stakes += 1);
+
+ Self::deposit_event(Event::Stake(staker_id, amount));
+
+ Ok(())
+ }
+
+ #[pallet::weight(T::WeightInfo::unstake())]
+ pub fn unstake(staker: OriginFor<T>) -> DispatchResultWithPostInfo {
+ let staker_id = ensure_signed(staker)?;
+ let block = <frame_system::Pallet<T>>::block_number() + T::PendingInterval::get();
+ let mut pendings = <PendingUnstake<T>>::get(block);
+
+ ensure!(!pendings.is_full(), Error::<T>::PendingForBlockOverflow);
+
+ let mut total_stakes = 0u64;
+
+ let total_staked: BalanceOf<T> = Staked::<T>::drain_prefix((&staker_id,))
+ .map(|(_, (amount, _))| {
+ total_stakes += 1;
+ amount
+ })
+ .sum();
+
+ if total_staked.is_zero() {
+ return Ok(None.into()); // TO-DO
+ }
+
+ pendings
+ .try_push((staker_id.clone(), total_staked))
+ .map_err(|_| Error::<T>::PendingForBlockOverflow)?;
+
+ <PendingUnstake<T>>::insert(block, pendings);
+
+ Self::unlock_balance(&staker_id, total_staked)?;
+
+ <T::Currency as ReservableCurrency<T::AccountId>>::reserve(&staker_id, total_staked)?;
+
+ TotalStaked::<T>::set(
+ TotalStaked::<T>::get()
+ .checked_sub(&total_staked)
+ .ok_or(ArithmeticError::Underflow)?,
+ );
+
+ StakesPerAccount::<T>::remove(&staker_id);
+
+ Self::deposit_event(Event::Unstake(staker_id, total_staked));
+
+ Ok(None.into())
+ }
+
+ #[pallet::weight(T::WeightInfo::sponsor_collection())]
+ pub fn sponsor_collection(
+ admin: OriginFor<T>,
+ collection_id: CollectionId,
+ ) -> DispatchResult {
+ let admin_id = ensure_signed(admin)?;
+ ensure!(
+ admin_id == Admin::<T>::get().ok_or(Error::<T>::AdminNotSet)?,
+ Error::<T>::NoPermission
+ );
+
+ T::CollectionHandler::set_sponsor(Self::account_id(), collection_id)
+ }
+ #[pallet::weight(T::WeightInfo::stop_sponsoring_collection())]
+ pub fn stop_sponsoring_collection(
+ admin: OriginFor<T>,
+ collection_id: CollectionId,
+ ) -> DispatchResult {
+ let admin_id = ensure_signed(admin)?;
+
+ ensure!(
+ admin_id == Admin::<T>::get().ok_or(Error::<T>::AdminNotSet)?,
+ Error::<T>::NoPermission
+ );
+
+ ensure!(
+ T::CollectionHandler::sponsor(collection_id)?.ok_or(<Error<T>>::SponsorNotSet)?
+ == Self::account_id(),
+ <Error<T>>::NoPermission
+ );
+ T::CollectionHandler::remove_collection_sponsor(collection_id)
+ }
+
+ #[pallet::weight(T::WeightInfo::sponsor_contract())]
+ pub fn sponsor_contract(admin: OriginFor<T>, contract_id: H160) -> DispatchResult {
+ let admin_id = ensure_signed(admin)?;
+
+ ensure!(
+ admin_id == Admin::<T>::get().ok_or(Error::<T>::AdminNotSet)?,
+ Error::<T>::NoPermission
+ );
+
+ T::ContractHandler::set_sponsor(
+ T::CrossAccountId::from_sub(Self::account_id()),
+ contract_id,
+ )
+ }
+
+ #[pallet::weight(T::WeightInfo::stop_sponsoring_contract())]
+ pub fn stop_sponsoring_contract(admin: OriginFor<T>, contract_id: H160) -> DispatchResult {
+ let admin_id = ensure_signed(admin)?;
+
+ ensure!(
+ admin_id == Admin::<T>::get().ok_or(Error::<T>::AdminNotSet)?,
+ Error::<T>::NoPermission
+ );
+
+ ensure!(
+ T::ContractHandler::sponsor(contract_id)?
+ .ok_or(<Error<T>>::SponsorNotSet)?
+ .as_sub() == &Self::account_id(),
+ <Error<T>>::NoPermission
+ );
+ T::ContractHandler::remove_contract_sponsor(contract_id)
+ }
+
+ #[pallet::weight(T::WeightInfo::payout_stakers(stakers_number.unwrap_or(20) as u32))]
+ pub fn payout_stakers(admin: OriginFor<T>, stakers_number: Option<u8>) -> DispatchResult {
+ let admin_id = ensure_signed(admin)?;
+
+ ensure!(
+ admin_id == Admin::<T>::get().ok_or(Error::<T>::AdminNotSet)?,
+ Error::<T>::NoPermission
+ );
+
+ let current_recalc_block =
+ Self::get_current_recalc_block(T::RelayBlockNumberProvider::current_block_number());
+ let next_recalc_block = current_recalc_block + T::RecalculationInterval::get();
+
+ let mut storage_iterator = Self::get_next_calculated_key()
+ .map_or(Staked::<T>::iter(), |key| Staked::<T>::iter_from(key));
+
+ NextCalculatedRecord::<T>::set(None);
+
+ // {
+ // let mut stakers_number = stakers_number.unwrap_or(20);
+ // let mut last_id = admin_id;
+ // let mut income_acc = BalanceOf::<T>::default();
+ // let mut amount_acc = BalanceOf::<T>::default();
+
+ // while let Some((
+ // (current_id, staked_block),
+ // (amount, next_recalc_block_for_stake),
+ // )) = storage_iterator.next()
+ // {
+ // if last_id != current_id {
+ // if income_acc != BalanceOf::<T>::default() {
+ // <T::Currency as Currency<T::AccountId>>::transfer(
+ // &T::TreasuryAccountId::get(),
+ // &last_id,
+ // income_acc,
+ // ExistenceRequirement::KeepAlive,
+ // )
+ // .and_then(|_| Self::add_lock_balance(&last_id, income_acc))?;
+
+ // Self::deposit_event(Event::StakingRecalculation(
+ // last_id, amount, income_acc,
+ // ));
+ // }
+
+ // if stakers_number == 0 {
+ // NextCalculatedRecord::<T>::set(Some((current_id, staked_block)));
+ // break;
+ // }
+ // stakers_number -= 1;
+ // income_acc = BalanceOf::<T>::default();
+ // last_id = current_id;
+ // };
+ // if current_recalc_block >= next_recalc_block_for_stake {
+ // Self::recalculate_and_insert_stake(
+ // &last_id,
+ // staked_block,
+ // next_recalc_block,
+ // amount,
+ // ((current_recalc_block - next_recalc_block_for_stake)
+ // / T::RecalculationInterval::get())
+ // .into() + 1,
+ // &mut income_acc,
+ // );
+ // }
+ // }
+ // }
+
+ {
+ let mut stakers_number = stakers_number.unwrap_or(20);
+ let last_id = RefCell::new(None);
+ let income_acc = RefCell::new(BalanceOf::<T>::default());
+ let amount_acc = RefCell::new(BalanceOf::<T>::default());
+
+ let flush_stake = || -> DispatchResult {
+ if let Some(last_id) = &*last_id.borrow() {
+ if !income_acc.borrow().is_zero() {
+ <T::Currency as Currency<T::AccountId>>::transfer(
+ &T::TreasuryAccountId::get(),
+ last_id,
+ *income_acc.borrow(),
+ ExistenceRequirement::KeepAlive,
+ )
+ .and_then(|_| {
+ Self::add_lock_balance(last_id, *income_acc.borrow())?;
+ <TotalStaked<T>>::try_mutate(|staked| {
+ staked
+ .checked_add(&*income_acc.borrow())
+ .ok_or(ArithmeticError::Overflow.into())
+ })
+ })?;
+
+ Self::deposit_event(Event::StakingRecalculation(
+ last_id.clone(),
+ *amount_acc.borrow(),
+ *income_acc.borrow(),
+ ));
+ }
+
+ *income_acc.borrow_mut() = BalanceOf::<T>::default();
+ *amount_acc.borrow_mut() = BalanceOf::<T>::default();
+ }
+ Ok(())
+ };
+
+ while let Some((
+ (current_id, staked_block),
+ (amount, next_recalc_block_for_stake),
+ )) = storage_iterator.next()
+ {
+ if stakers_number == 0 {
+ NextCalculatedRecord::<T>::set(Some((current_id, staked_block)));
+ break;
+ }
+ if last_id.borrow().as_ref() != Some(¤t_id) {
+ flush_stake()?;
+ *last_id.borrow_mut() = Some(current_id.clone());
+ stakers_number -= 1;
+ };
+ if current_recalc_block >= next_recalc_block_for_stake {
+ *amount_acc.borrow_mut() += amount;
+ Self::recalculate_and_insert_stake(
+ ¤t_id,
+ staked_block,
+ next_recalc_block,
+ amount,
+ ((current_recalc_block - next_recalc_block_for_stake)
+ / T::RecalculationInterval::get())
+ .into() + 1,
+ &mut *income_acc.borrow_mut(),
+ );
+ }
+ }
+ flush_stake()?;
+ }
+
+ Ok(())
+ }
+ }
+}
+
+impl<T: Config> Pallet<T> {
+ pub fn account_id() -> T::AccountId {
+ T::PalletId::get().into_account_truncating()
+ }
+
+ fn unlock_balance(staker: &T::AccountId, amount: BalanceOf<T>) -> DispatchResult {
+ let locked_balance = Self::get_locked_balance(staker)
+ .map(|l| l.amount)
+ .ok_or(<Error<T>>::IncorrectLockedBalanceOperation)?;
+
+ // It is understood that we cannot unlock more funds than were locked by staking.
+ // Therefore, if implemented correctly, this error should not occur.
+ Self::set_lock_unchecked(
+ staker,
+ locked_balance
+ .checked_sub(&amount)
+ .ok_or(ArithmeticError::Underflow)?,
+ );
+ Ok(())
+ }
+
+ fn add_lock_balance(staker: &T::AccountId, amount: BalanceOf<T>) -> DispatchResult {
+ Self::get_locked_balance(staker)
+ .map_or(<BalanceOf<T>>::default(), |l| l.amount)
+ .checked_add(&amount)
+ .map(|new_lock| Self::set_lock_unchecked(staker, new_lock))
+ .ok_or(ArithmeticError::Overflow.into())
+ }
+
+ fn set_lock_unchecked(staker: &T::AccountId, amount: BalanceOf<T>) {
+ if amount.is_zero() {
+ <T::Currency as LockableCurrency<T::AccountId>>::remove_lock(LOCK_IDENTIFIER, &staker);
+ } else {
+ <T::Currency as LockableCurrency<T::AccountId>>::set_lock(
+ LOCK_IDENTIFIER,
+ staker,
+ amount,
+ WithdrawReasons::all(),
+ )
+ }
+ }
+
+ pub fn get_locked_balance(
+ staker: impl EncodeLike<T::AccountId>,
+ ) -> Option<BalanceLock<BalanceOf<T>>> {
+ <T::Currency as ExtendedLockableCurrency<T::AccountId>>::locks(staker)
+ .into_iter()
+ .find(|l| l.id == LOCK_IDENTIFIER)
+ }
+
+ pub fn total_staked_by_id(staker: impl EncodeLike<T::AccountId>) -> Option<BalanceOf<T>> {
+ let staked = Staked::<T>::iter_prefix((staker,))
+ .into_iter()
+ .fold(<BalanceOf<T>>::default(), |acc, (_, (amount, _))| {
+ acc + amount
+ });
+ if staked != <BalanceOf<T>>::default() {
+ Some(staked)
+ } else {
+ None
+ }
+ }
+
+ pub fn total_staked_by_id_per_block(
+ staker: impl EncodeLike<T::AccountId>,
+ ) -> Option<Vec<(T::BlockNumber, BalanceOf<T>)>> {
+ let mut staked = Staked::<T>::iter_prefix((staker,))
+ .into_iter()
+ .map(|(block, (amount, _))| (block, amount))
+ .collect::<Vec<_>>();
+ staked.sort_by_key(|(block, _)| *block);
+ if !staked.is_empty() {
+ Some(staked)
+ } else {
+ None
+ }
+ }
+
+ pub fn cross_id_total_staked(staker: Option<T::CrossAccountId>) -> Option<BalanceOf<T>> {
+ staker.map_or(Some(<TotalStaked<T>>::get()), |s| {
+ Self::total_staked_by_id(s.as_sub())
+ })
+ }
+
+ // pub fn cross_id_locked_balance(staker: T::CrossAccountId) -> BalanceOf<T> {
+ // Self::get_locked_balance(staker.as_sub())
+ // .map(|l| l.amount)
+ // .unwrap_or_default()
+ // }
+
+ pub fn cross_id_total_staked_per_block(
+ staker: T::CrossAccountId,
+ ) -> Vec<(T::BlockNumber, BalanceOf<T>)> {
+ Self::total_staked_by_id_per_block(staker.as_sub()).unwrap_or_default()
+ }
+
+ fn recalculate_and_insert_stake(
+ staker: &T::AccountId,
+ staked_block: T::BlockNumber,
+ next_recalc_block: T::BlockNumber,
+ base: BalanceOf<T>,
+ iters: u32,
+ income_acc: &mut BalanceOf<T>,
+ ) {
+ let income = Self::calculate_income(base, iters);
+
+ base.checked_add(&income).map(|res| {
+ <Staked<T>>::insert((staker, staked_block), (res, next_recalc_block));
+ *income_acc += income;
+ });
+ }
+
+ fn calculate_income<I>(base: I, iters: u32) -> I
+ where
+ I: EncodeLike<BalanceOf<T>> + Balance,
+ {
+ let mut income = base;
+
+ (0..iters).for_each(|_| income += T::IntervalIncome::get() * income);
+
+ income - base
+ }
+
+ fn get_current_recalc_block(current_relay_block: T::BlockNumber) -> T::BlockNumber {
+ (current_relay_block / T::RecalculationInterval::get()) * T::RecalculationInterval::get()
+ }
+
+ // fn get_next_recalc_block(current_relay_block: T::BlockNumber) -> T::BlockNumber {
+ // Self::get_current_recalc_block(current_relay_block) + T::RecalculationInterval::get()
+ // }
+
+ fn get_next_calculated_key() -> Option<Vec<u8>> {
+ Self::get_next_calculated_record().map(|key| Staked::<T>::hashed_key_for(key))
+ }
+}
+
+impl<T: Config> Pallet<T>
+where
+ <<T as Config>::Currency as Currency<T::AccountId>>::Balance: Sum,
+{
+ /// Since user funds are not transferred anywhere by staking, overflow protection is provided
+ /// at the level of the associated type `Balance` of `Currency` trait. In order to overflow,
+ /// the staker must have more funds on his account than the maximum set for `Balance` type.
+ pub fn cross_id_pending_unstake(staker: Option<T::CrossAccountId>) -> BalanceOf<T> {
+ staker.map_or(
+ PendingUnstake::<T>::iter_values()
+ .flat_map(|pendings| pendings.into_iter().map(|(_, amount)| amount))
+ .sum(),
+ |s| {
+ PendingUnstake::<T>::iter_values()
+ .flatten()
+ .filter_map(|(id, amount)| {
+ if id == *s.as_sub() {
+ Some(amount)
+ } else {
+ None
+ }
+ })
+ .sum()
+ },
+ )
+ }
+
+ pub fn cross_id_pending_unstake_per_block(
+ staker: T::CrossAccountId,
+ ) -> Vec<(T::BlockNumber, BalanceOf<T>)> {
+ let mut unsorted_res = vec![];
+ PendingUnstake::<T>::iter().for_each(|(block, pendings)| {
+ pendings.into_iter().for_each(|(id, amount)| {
+ if id == *staker.as_sub() {
+ unsorted_res.push((block, amount));
+ };
+ })
+ });
+
+ unsorted_res.sort_by_key(|(block, _)| *block);
+ unsorted_res
+ }
+}
pallets/app-promotion/src/types.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/app-promotion/src/types.rs
@@ -0,0 +1,107 @@
+use codec::EncodeLike;
+use frame_support::{traits::LockableCurrency, WeakBoundedVec, Parameter, dispatch::DispatchResult};
+
+use pallet_balances::{BalanceLock, Config as BalancesConfig, Pallet as PalletBalances};
+use pallet_common::CollectionHandle;
+
+use sp_runtime::DispatchError;
+use up_data_structs::{CollectionId};
+use sp_std::borrow::ToOwned;
+use pallet_evm_contract_helpers::{Pallet as EvmHelpersPallet, Config as EvmHelpersConfig};
+
+pub trait ExtendedLockableCurrency<AccountId: Parameter>: LockableCurrency<AccountId> {
+ fn locks<KArg>(who: KArg) -> WeakBoundedVec<BalanceLock<Self::Balance>, Self::MaxLocks>
+ where
+ KArg: EncodeLike<AccountId>;
+}
+
+impl<T: BalancesConfig<I>, I: 'static> ExtendedLockableCurrency<T::AccountId>
+ for PalletBalances<T, I>
+{
+ fn locks<KArg>(who: KArg) -> WeakBoundedVec<BalanceLock<Self::Balance>, Self::MaxLocks>
+ where
+ KArg: EncodeLike<T::AccountId>,
+ {
+ Self::locks(who)
+ }
+}
+
+pub trait CollectionHandler {
+ type CollectionId;
+ type AccountId;
+
+ fn set_sponsor(
+ sponsor_id: Self::AccountId,
+ collection_id: Self::CollectionId,
+ ) -> DispatchResult;
+
+ fn remove_collection_sponsor(collection_id: Self::CollectionId) -> DispatchResult;
+
+ fn sponsor(collection_id: Self::CollectionId)
+ -> Result<Option<Self::AccountId>, DispatchError>;
+}
+
+impl<T: pallet_unique::Config> CollectionHandler for pallet_unique::Pallet<T> {
+ type CollectionId = CollectionId;
+
+ type AccountId = T::AccountId;
+
+ fn set_sponsor(
+ sponsor_id: Self::AccountId,
+ collection_id: Self::CollectionId,
+ ) -> DispatchResult {
+ Self::force_set_sponsor(sponsor_id, collection_id)
+ }
+
+ fn remove_collection_sponsor(collection_id: Self::CollectionId) -> DispatchResult {
+ Self::force_remove_collection_sponsor(collection_id)
+ }
+
+ fn sponsor(
+ collection_id: Self::CollectionId,
+ ) -> Result<Option<Self::AccountId>, DispatchError> {
+ Ok(<CollectionHandle<T>>::try_get(collection_id)?
+ .sponsorship
+ .sponsor()
+ .map(|acc| acc.to_owned()))
+ }
+}
+
+pub trait ContractHandler {
+ type ContractId;
+ type AccountId;
+
+ fn set_sponsor(
+ sponsor_id: Self::AccountId,
+ contract_address: Self::ContractId,
+ ) -> DispatchResult;
+
+ fn remove_contract_sponsor(contract_address: Self::ContractId) -> DispatchResult;
+
+ fn sponsor(
+ contract_address: Self::ContractId,
+ ) -> Result<Option<Self::AccountId>, DispatchError>;
+}
+
+impl<T: EvmHelpersConfig> ContractHandler for EvmHelpersPallet<T> {
+ type ContractId = sp_core::H160;
+
+ type AccountId = T::CrossAccountId;
+
+ fn set_sponsor(
+ sponsor_id: Self::AccountId,
+ contract_address: Self::ContractId,
+ ) -> DispatchResult {
+ Self::force_set_sponsor(contract_address, &sponsor_id)
+ }
+
+ fn remove_contract_sponsor(contract_address: Self::ContractId) -> DispatchResult {
+ Self::force_remove_sponsor(contract_address)
+ }
+
+ fn sponsor(
+ contract_address: Self::ContractId,
+ ) -> Result<Option<Self::AccountId>, DispatchError> {
+ Ok(Self::get_sponsor(contract_address))
+ }
+}
pallets/app-promotion/src/weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/app-promotion/src/weights.rs
@@ -0,0 +1,209 @@
+// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
+
+//! Autogenerated weights for pallet_app_promotion
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
+//! DATE: 2022-09-07, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
+
+// Executed Command:
+// target/release/unique-collator
+// benchmark
+// pallet
+// --pallet
+// pallet-app-promotion
+// --wasm-execution
+// compiled
+// --extrinsic
+// *
+// --template
+// .maintain/frame-weight-template.hbs
+// --steps=50
+// --repeat=80
+// --heap-pages=4096
+// --output=./pallets/app-promotion/src/weights.rs
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+#![allow(missing_docs)]
+#![allow(clippy::unnecessary_cast)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weight functions needed for pallet_app_promotion.
+pub trait WeightInfo {
+ fn on_initialize(b: u32, ) -> Weight;
+ fn set_admin_address() -> Weight;
+ fn payout_stakers(b: u32, ) -> Weight;
+ fn stake() -> Weight;
+ fn unstake() -> Weight;
+ fn sponsor_collection() -> Weight;
+ fn stop_sponsoring_collection() -> Weight;
+ fn sponsor_contract() -> Weight;
+ fn stop_sponsoring_contract() -> Weight;
+}
+
+/// Weights for pallet_app_promotion using the Substrate node and recommended hardware.
+pub struct SubstrateWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
+ // Storage: AppPromotion PendingUnstake (r:1 w:0)
+ // Storage: System Account (r:1 w:1)
+ fn on_initialize(b: u32, ) -> Weight {
+ (2_651_000 as Weight)
+ // Standard Error: 103_000
+ .saturating_add((6_024_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: AppPromotion Admin (r:0 w:1)
+ fn set_admin_address() -> Weight {
+ (7_117_000 as Weight)
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: ParachainSystem ValidationData (r:1 w:0)
+ // Storage: AppPromotion NextCalculatedRecord (r:1 w:1)
+ // Storage: AppPromotion Staked (r:2 w:0)
+ fn payout_stakers(b: u32, ) -> Weight {
+ (9_958_000 as Weight)
+ // Standard Error: 8_000
+ .saturating_add((4_406_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(T::DbWeight::get().reads(4 as Weight))
+ .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion StakesPerAccount (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: Balances Locks (r:1 w:1)
+ // Storage: ParachainSystem ValidationData (r:1 w:0)
+ // Storage: AppPromotion Staked (r:1 w:1)
+ // Storage: AppPromotion TotalStaked (r:1 w:1)
+ fn stake() -> Weight {
+ (20_574_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(6 as Weight))
+ .saturating_add(T::DbWeight::get().writes(5 as Weight))
+ }
+ // Storage: AppPromotion PendingUnstake (r:1 w:1)
+ // Storage: AppPromotion Staked (r:2 w:1)
+ // Storage: Balances Locks (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: AppPromotion TotalStaked (r:1 w:1)
+ // Storage: AppPromotion StakesPerAccount (r:0 w:1)
+ fn unstake() -> Weight {
+ (31_703_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(6 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ fn sponsor_collection() -> Weight {
+ (12_932_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ fn stop_sponsoring_collection() -> Weight {
+ (12_453_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: EvmContractHelpers Sponsoring (r:0 w:1)
+ fn sponsor_contract() -> Weight {
+ (11_952_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: EvmContractHelpers Sponsoring (r:1 w:1)
+ fn stop_sponsoring_contract() -> Weight {
+ (12_538_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+ // Storage: AppPromotion PendingUnstake (r:1 w:0)
+ // Storage: System Account (r:1 w:1)
+ fn on_initialize(b: u32, ) -> Weight {
+ (2_651_000 as Weight)
+ // Standard Error: 103_000
+ .saturating_add((6_024_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
+ }
+ // Storage: AppPromotion Admin (r:0 w:1)
+ fn set_admin_address() -> Weight {
+ (7_117_000 as Weight)
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: ParachainSystem ValidationData (r:1 w:0)
+ // Storage: AppPromotion NextCalculatedRecord (r:1 w:1)
+ // Storage: AppPromotion Staked (r:2 w:0)
+ fn payout_stakers(b: u32, ) -> Weight {
+ (9_958_000 as Weight)
+ // Standard Error: 8_000
+ .saturating_add((4_406_000 as Weight).saturating_mul(b as Weight))
+ .saturating_add(RocksDbWeight::get().reads(4 as Weight))
+ .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion StakesPerAccount (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: Balances Locks (r:1 w:1)
+ // Storage: ParachainSystem ValidationData (r:1 w:0)
+ // Storage: AppPromotion Staked (r:1 w:1)
+ // Storage: AppPromotion TotalStaked (r:1 w:1)
+ fn stake() -> Weight {
+ (20_574_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(6 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(5 as Weight))
+ }
+ // Storage: AppPromotion PendingUnstake (r:1 w:1)
+ // Storage: AppPromotion Staked (r:2 w:1)
+ // Storage: Balances Locks (r:1 w:1)
+ // Storage: System Account (r:1 w:1)
+ // Storage: AppPromotion TotalStaked (r:1 w:1)
+ // Storage: AppPromotion StakesPerAccount (r:0 w:1)
+ fn unstake() -> Weight {
+ (31_703_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(6 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ fn sponsor_collection() -> Weight {
+ (12_932_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:1)
+ fn stop_sponsoring_collection() -> Weight {
+ (12_453_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: EvmContractHelpers Sponsoring (r:0 w:1)
+ fn sponsor_contract() -> Weight {
+ (11_952_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ // Storage: AppPromotion Admin (r:1 w:0)
+ // Storage: EvmContractHelpers Sponsoring (r:1 w:1)
+ fn stop_sponsoring_contract() -> Weight {
+ (12_538_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+}
pallets/common/Cargo.tomldiffbeforeafterboth--- a/pallets/common/Cargo.toml
+++ b/pallets/common/Cargo.toml
@@ -40,4 +40,7 @@
"up-data-structs/std",
"pallet-evm/std",
]
-runtime-benchmarks = ["frame-benchmarking"]
+runtime-benchmarks = [
+ "frame-benchmarking/runtime-benchmarks",
+ "up-data-structs/runtime-benchmarks",
+]
pallets/evm-contract-helpers/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-contract-helpers/Cargo.toml
+++ b/pallets/evm-contract-helpers/Cargo.toml
@@ -9,6 +9,7 @@
"derive",
] }
log = { default-features = false, version = "0.4.14" }
+ethereum = { version = "0.12.0", default-features = false }
# Substrate
frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
pallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/eth.rs
+++ b/pallets/evm-contract-helpers/src/eth.rs
@@ -17,7 +17,9 @@
//! Implementation of magic contract
use core::marker::PhantomData;
-use evm_coder::{abi::AbiWriter, execution::Result, generate_stubgen, solidity_interface, types::*};
+use evm_coder::{
+ abi::AbiWriter, execution::Result, generate_stubgen, solidity_interface, types::*, ToLog,
+};
use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder, dispatch_to_evm};
use pallet_evm::{
ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure, PrecompileHandle,
@@ -33,6 +35,35 @@
use up_sponsorship::SponsorshipHandler;
use sp_std::vec::Vec;
+/// Pallet events.
+#[derive(ToLog)]
+pub enum ContractHelpersEvents {
+ /// Contract sponsor was set.
+ ContractSponsorSet {
+ /// Contract address of the affected collection.
+ #[indexed]
+ contract_address: address,
+ /// New sponsor address.
+ sponsor: address,
+ },
+
+ /// New sponsor was confirm.
+ ContractSponsorshipConfirmed {
+ /// Contract address of the affected collection.
+ #[indexed]
+ contract_address: address,
+ /// New sponsor address.
+ sponsor: address,
+ },
+
+ /// Collection sponsor was removed.
+ ContractSponsorRemoved {
+ /// Contract address of the affected collection.
+ #[indexed]
+ contract_address: address,
+ },
+}
+
/// See [`ContractHelpersCall`]
pub struct ContractHelpers<T: Config>(SubstrateRecorder<T>);
impl<T: Config> WithRecorder<T> for ContractHelpers<T> {
@@ -46,7 +77,7 @@
}
/// @title Magic contract, which allows users to reconfigure other contracts
-#[solidity_interface(name = ContractHelpers)]
+#[solidity_interface(name = ContractHelpers, events(ContractHelpersEvents))]
impl<T: Config> ContractHelpers<T>
where
T::AccountId: AsRef<[u8; 32]>,
@@ -91,9 +122,17 @@
self.recorder().consume_sload()?;
self.recorder().consume_sstore()?;
- Pallet::<T>::self_sponsored_enable(&T::CrossAccountId::from_eth(caller), contract_address)
+ let caller = T::CrossAccountId::from_eth(caller);
+
+ Pallet::<T>::ensure_owner(contract_address, *caller.as_eth())
.map_err(dispatch_to_evm::<T>)?;
+ Pallet::<T>::force_set_sponsor(
+ contract_address,
+ &T::CrossAccountId::from_eth(contract_address),
+ )
+ .map_err(dispatch_to_evm::<T>)?;
+
Ok(())
}
pallets/evm-contract-helpers/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/lib.rs
+++ b/pallets/evm-contract-helpers/src/lib.rs
@@ -16,7 +16,7 @@
#![doc = include_str!("../README.md")]
#![cfg_attr(not(feature = "std"), no_std)]
-#![deny(missing_docs)]
+#![warn(missing_docs)]
use codec::{Decode, Encode, MaxEncodedLen};
pub use pallet::*;
@@ -27,18 +27,24 @@
#[frame_support::pallet]
pub mod pallet {
pub use super::*;
+ use crate::eth::ContractHelpersEvents;
use frame_support::pallet_prelude::*;
use pallet_evm_coder_substrate::DispatchResult;
use sp_core::H160;
- use pallet_evm::account::CrossAccountId;
+ use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
use up_data_structs::SponsorshipState;
+ use evm_coder::ToLog;
#[pallet::config]
pub trait Config:
frame_system::Config + pallet_evm_coder_substrate::Config + pallet_evm::account::Config
{
+ /// Overarching event type.
+ type Event: IsType<<Self as frame_system::Config>::Event> + From<Event<Self>>;
+
/// Address, under which magic contract will be available
type ContractAddress: Get<H160>;
+
/// In case of enabled sponsoring, but no sponsoring rate limit set,
/// this value will be used implicitly
type DefaultSponsoringRateLimit: Get<Self::BlockNumber>;
@@ -150,6 +156,32 @@
QueryKind = ValueQuery,
>;
+ #[pallet::event]
+ #[pallet::generate_deposit(pub fn deposit_event)]
+ pub enum Event<T: Config> {
+ /// Contract sponsor was set.
+ ContractSponsorSet(
+ /// Contract address of the affected collection.
+ H160,
+ /// New sponsor address.
+ T::AccountId,
+ ),
+
+ /// New sponsor was confirm.
+ ContractSponsorshipConfirmed(
+ /// Contract address of the affected collection.
+ H160,
+ /// New sponsor address.
+ T::AccountId,
+ ),
+
+ /// Collection sponsor was removed.
+ ContractSponsorRemoved(
+ /// Contract address of the affected collection.
+ H160,
+ ),
+ }
+
impl<T: Config> Pallet<T> {
/// Get contract owner.
pub fn contract_owner(contract: H160) -> H160 {
@@ -169,43 +201,118 @@
contract,
SponsorshipState::<T::CrossAccountId>::Unconfirmed(sponsor.clone()),
);
+
+ <Pallet<T>>::deposit_event(Event::<T>::ContractSponsorSet(
+ contract,
+ sponsor.as_sub().clone(),
+ ));
+ <PalletEvm<T>>::deposit_log(
+ ContractHelpersEvents::ContractSponsorSet {
+ contract_address: contract,
+ sponsor: *sponsor.as_eth(),
+ }
+ .to_log(contract),
+ );
Ok(())
}
- /// Set `contract` as self sponsored.
+ /// TO-DO
///
- /// `sender` must be owner of contract.
- pub fn self_sponsored_enable(sender: &T::CrossAccountId, contract: H160) -> DispatchResult {
- Pallet::<T>::ensure_owner(contract, *sender.as_eth())?;
+ ///
+ pub fn force_set_sponsor(
+ contract_address: H160,
+ sponsor: &T::CrossAccountId,
+ ) -> DispatchResult {
Sponsoring::<T>::insert(
- contract,
- SponsorshipState::<T::CrossAccountId>::Confirmed(T::CrossAccountId::from_eth(
- contract,
- )),
+ contract_address,
+ SponsorshipState::<T::CrossAccountId>::Confirmed(sponsor.clone()),
);
+
+ let eth_sponsor = *sponsor.as_eth();
+ let sub_sponsor = sponsor.as_sub().clone();
+
+ <Pallet<T>>::deposit_event(Event::<T>::ContractSponsorSet(
+ contract_address,
+ sub_sponsor.clone(),
+ ));
+ <PalletEvm<T>>::deposit_log(
+ ContractHelpersEvents::ContractSponsorSet {
+ contract_address,
+ sponsor: eth_sponsor,
+ }
+ .to_log(contract_address),
+ );
+
+ <Pallet<T>>::deposit_event(Event::<T>::ContractSponsorshipConfirmed(
+ contract_address,
+ sub_sponsor,
+ ));
+ <PalletEvm<T>>::deposit_log(
+ ContractHelpersEvents::ContractSponsorshipConfirmed {
+ contract_address,
+ sponsor: eth_sponsor,
+ }
+ .to_log(contract_address),
+ );
+
Ok(())
}
/// Remove sponsor for `contract`.
///
/// `sender` must be owner of contract.
- pub fn remove_sponsor(sender: &T::CrossAccountId, contract: H160) -> DispatchResult {
- Pallet::<T>::ensure_owner(contract, *sender.as_eth())?;
- Sponsoring::<T>::remove(contract);
+ pub fn remove_sponsor(
+ sender: &T::CrossAccountId,
+ contract_address: H160,
+ ) -> DispatchResult {
+ Self::ensure_owner(contract_address, *sender.as_eth())?;
+ Self::force_remove_sponsor(contract_address)
+ }
+
+ /// TO-DO
+ ///
+ ///
+ pub fn force_remove_sponsor(contract_address: H160) -> DispatchResult {
+ Sponsoring::<T>::remove(contract_address);
+
+ Self::deposit_event(Event::<T>::ContractSponsorRemoved(contract_address));
+ <PalletEvm<T>>::deposit_log(
+ ContractHelpersEvents::ContractSponsorRemoved { contract_address }
+ .to_log(contract_address),
+ );
+
Ok(())
}
/// Confirm sponsorship.
///
/// `sender` must be same that set via [`set_sponsor`].
- pub fn confirm_sponsorship(sender: &T::CrossAccountId, contract: H160) -> DispatchResult {
- match Sponsoring::<T>::get(contract) {
+ pub fn confirm_sponsorship(
+ sender: &T::CrossAccountId,
+ contract_address: H160,
+ ) -> DispatchResult {
+ match Sponsoring::<T>::get(contract_address) {
SponsorshipState::Unconfirmed(sponsor) => {
ensure!(sponsor == *sender, Error::<T>::NoPermission);
+ let eth_sponsor = *sponsor.as_eth();
+ let sub_sponsor = sponsor.as_sub().clone();
Sponsoring::<T>::insert(
- contract,
+ contract_address,
SponsorshipState::<T::CrossAccountId>::Confirmed(sponsor),
);
+
+ <Pallet<T>>::deposit_event(Event::<T>::ContractSponsorshipConfirmed(
+ contract_address,
+ sub_sponsor,
+ ));
+ <PalletEvm<T>>::deposit_log(
+ ContractHelpersEvents::ContractSponsorshipConfirmed {
+ contract_address,
+ sponsor: eth_sponsor,
+ }
+ .to_log(contract_address),
+ );
+
Ok(())
}
SponsorshipState::Disabled | SponsorshipState::Confirmed(_) => {
pallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterbothbinary blob — no preview
pallets/evm-contract-helpers/src/stubs/ContractHelpers.soldiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/stubs/ContractHelpers.sol
+++ b/pallets/evm-contract-helpers/src/stubs/ContractHelpers.sol
@@ -21,9 +21,19 @@
}
}
+/// @dev inlined interface
+contract ContractHelpersEvents {
+ event ContractSponsorSet(address indexed contractAddress, address sponsor);
+ event ContractSponsorshipConfirmed(
+ address indexed contractAddress,
+ address sponsor
+ );
+ event ContractSponsorRemoved(address indexed contractAddress);
+}
+
/// @title Magic contract, which allows users to reconfigure other contracts
/// @dev the ERC-165 identifier for this interface is 0xd77fab70
-contract ContractHelpers is Dummy, ERC165 {
+contract ContractHelpers is Dummy, ERC165, ContractHelpersEvents {
/// Get user, which deployed specified contract
/// @dev May return zero address in case if contract is deployed
/// using uniquenetwork evm-migration pallet, or using other terms not
pallets/unique/CHANGELOG.mddiffbeforeafterboth--- a/pallets/unique/CHANGELOG.md
+++ b/pallets/unique/CHANGELOG.md
@@ -3,22 +3,29 @@
All notable changes to this project will be documented in this file.
<!-- bureaucrate goes here -->
+
+## [v0.1.4] 2022-09-5
+
+### Added
+
+- Methods `force_set_sponsor` , `force_remove_collection_sponsor` to be able to administer sponsorships with other pallets. Added to implement `AppPromotion` pallet logic.
+
## [v0.1.3] 2022-08-16
### Other changes
-- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
+- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
-- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
+- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
-- refactor: Remove `#[transactional]` from extrinsics 7fd36cea2f6e00c02c67ccc1de9649ae404efd31
+- refactor: Remove `#[transactional]` from extrinsics 7fd36cea2f6e00c02c67ccc1de9649ae404efd31
Every extrinsic now runs in transaction implicitly, and
`#[transactional]` on pallet dispatchable is now meaningless
Upstream-Change: https://github.com/paritytech/substrate/issues/10806
-- refactor: Switch to new prefix removal methods 26734e9567589d75cdd99e404eabf11d5a97d975
+- refactor: Switch to new prefix removal methods 26734e9567589d75cdd99e404eabf11d5a97d975
New methods allows to call `remove_prefix` with limit multiple times
in the same block
@@ -27,10 +34,12 @@
Upstream-Change: https://github.com/paritytech/substrate/pull/11490
-- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
+- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
## [v0.1.1] - 2022-07-25
+
### Added
-- Method for creating `ERC721Metadata` compatible NFT collection.
-- Method for creating `ERC721Metadata` compatible ReFungible collection.
-- Method for creating ReFungible collection.
+
+- Method for creating `ERC721Metadata` compatible NFT collection.
+- Method for creating `ERC721Metadata` compatible ReFungible collection.
+- Method for creating ReFungible collection.
pallets/unique/Cargo.tomldiffbeforeafterboth--- a/pallets/unique/Cargo.toml
+++ b/pallets/unique/Cargo.toml
@@ -9,7 +9,7 @@
license = 'GPLv3'
name = 'pallet-unique'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = "0.1.3"
+version = "0.1.4"
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
pallets/unique/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/unique/src/benchmarking.rs
+++ b/pallets/unique/src/benchmarking.rs
@@ -46,7 +46,9 @@
)?;
Ok(<pallet_common::CreatedCollectionCount<T>>::get())
}
-fn create_nft_collection<T: Config>(owner: T::AccountId) -> Result<CollectionId, DispatchError> {
+pub fn create_nft_collection<T: Config>(
+ owner: T::AccountId,
+) -> Result<CollectionId, DispatchError> {
create_collection_helper::<T>(owner, CollectionMode::NFT)
}
pallets/unique/src/lib.rsdiffbeforeafterboth--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -98,7 +98,7 @@
pub mod eth;
#[cfg(feature = "runtime-benchmarks")]
-mod benchmarking;
+pub mod benchmarking;
pub mod weights;
use weights::WeightInfo;
@@ -277,7 +277,7 @@
{
type Error = Error<T>;
- fn deposit_event() = default;
+ pub fn deposit_event() = default;
fn on_initialize(_now: T::BlockNumber) -> Weight {
0
@@ -1103,3 +1103,35 @@
}
}
}
+
+impl<T: Config> Pallet<T> {
+ pub fn force_set_sponsor(sponsor: T::AccountId, collection_id: CollectionId) -> DispatchResult {
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_internal()?;
+ target_collection.set_sponsor(sponsor.clone())?;
+
+ Self::deposit_event(Event::<T>::CollectionSponsorSet(
+ collection_id,
+ sponsor.clone(),
+ ));
+
+ ensure!(
+ target_collection.confirm_sponsorship(&sponsor)?,
+ Error::<T>::ConfirmUnsetSponsorFail
+ );
+
+ Self::deposit_event(Event::<T>::SponsorshipConfirmed(collection_id, sponsor));
+
+ target_collection.save()
+ }
+
+ pub fn force_remove_collection_sponsor(collection_id: CollectionId) -> DispatchResult {
+ let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
+ target_collection.check_is_internal()?;
+ target_collection.sponsorship = SponsorshipState::Disabled;
+
+ Self::deposit_event(Event::<T>::CollectionSponsorRemoved(collection_id));
+
+ target_collection.save()
+ }
+}
primitives/app_promotion_rpc/CHANGELOG.mddiffbeforeafterboth--- /dev/null
+++ b/primitives/app_promotion_rpc/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+
+<!-- bureaucrate goes here -->
primitives/app_promotion_rpc/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/primitives/app_promotion_rpc/Cargo.toml
@@ -0,0 +1,29 @@
+[package]
+name = "app-promotion-rpc"
+version = "0.1.0"
+license = "GPLv3"
+edition = "2021"
+
+[dependencies]
+pallet-common = { default-features = false, path = '../../pallets/common' }
+up-data-structs = { default-features = false, path = '../data-structs' }
+codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = [
+ "derive",
+] }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
+
+[features]
+default = ["std"]
+std = [
+ "codec/std",
+ "sp-core/std",
+ "sp-std/std",
+ "sp-api/std",
+ "sp-runtime/std",
+ "pallet-common/std",
+ "up-data-structs/std",
+]
primitives/app_promotion_rpc/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/primitives/app_promotion_rpc/src/lib.rs
@@ -0,0 +1,41 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+use sp_std::vec::Vec;
+use codec::Decode;
+use sp_runtime::{
+ DispatchError,
+ traits::{AtLeast32BitUnsigned, Member},
+};
+
+type Result<T> = core::result::Result<T, DispatchError>;
+
+sp_api::decl_runtime_apis! {
+ #[api_version(2)]
+ /// Trait for generate rpc.
+ pub trait AppPromotionApi<BlockNumber ,CrossAccountId, AccountId> where
+ BlockNumber: Decode + Member + AtLeast32BitUnsigned,
+ AccountId: Decode,
+ CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,
+ {
+ fn total_staked(staker: Option<CrossAccountId>) -> Result<u128>;
+ fn total_staked_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>>;
+ fn pending_unstake(staker: Option<CrossAccountId>) -> Result<u128>;
+ fn pending_unstake_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>>;
+ }
+}
primitives/common/src/constants.rsdiffbeforeafterboth--- a/primitives/common/src/constants.rs
+++ b/primitives/common/src/constants.rs
@@ -22,6 +22,7 @@
use crate::types::{BlockNumber, Balance};
pub const MILLISECS_PER_BLOCK: u64 = 12000;
+pub const MILLISECS_PER_RELAY_BLOCK: u64 = 6000;
pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;
@@ -30,6 +31,11 @@
pub const HOURS: BlockNumber = MINUTES * 60;
pub const DAYS: BlockNumber = HOURS * 24;
+// These time units are defined in number of relay blocks.
+pub const RELAY_MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_RELAY_BLOCK as BlockNumber);
+pub const RELAY_HOURS: BlockNumber = RELAY_MINUTES * 60;
+pub const RELAY_DAYS: BlockNumber = RELAY_HOURS * 24;
+
pub const MICROUNIQUE: Balance = 1_000_000_000_000;
pub const MILLIUNIQUE: Balance = 1_000 * MICROUNIQUE;
pub const CENTIUNIQUE: Balance = 10 * MILLIUNIQUE;
primitives/rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -20,9 +20,13 @@
CollectionId, TokenId, RpcCollection, CollectionStats, CollectionLimits, Property,
PropertyKeyPermission, TokenData, TokenChild,
};
+
use sp_std::vec::Vec;
use codec::Decode;
-use sp_runtime::DispatchError;
+use sp_runtime::{
+ DispatchError,
+ traits::{AtLeast32BitUnsigned, Member},
+};
type Result<T> = core::result::Result<T, DispatchError>;
@@ -120,6 +124,7 @@
/// Get total pieces of token.
fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Result<Option<u128>>;
+
fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec<CrossAccountId>>;
}
}
runtime/common/config/ethereum.rsdiffbeforeafterboth--- a/runtime/common/config/ethereum.rs
+++ b/runtime/common/config/ethereum.rs
@@ -112,6 +112,7 @@
}
impl pallet_evm_contract_helpers::Config for Runtime {
+ type Event = Event;
type ContractAddress = HelpersContractAddress;
type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit;
}
runtime/common/config/pallets/app_promotion.rsdiffbeforeafterboth--- /dev/null
+++ b/runtime/common/config/pallets/app_promotion.rs
@@ -0,0 +1,63 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use crate::{
+ runtime_common::config::pallets::{TreasuryAccountId, RelayChainBlockNumberProvider},
+ Runtime, Balances, BlockNumber, Unique, Event, EvmContractHelpers,
+};
+
+use frame_support::{parameter_types, PalletId};
+use sp_arithmetic::Perbill;
+use up_common::{
+ constants::{UNIQUE, RELAY_DAYS},
+ types::Balance,
+};
+
+#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
+parameter_types! {
+ pub const AppPromotionId: PalletId = PalletId(*b"appstake");
+ pub const RecalculationInterval: BlockNumber = 20;
+ pub const PendingInterval: BlockNumber = 10;
+ pub const Nominal: Balance = UNIQUE;
+ // pub const Day: BlockNumber = DAYS;
+ pub IntervalIncome: Perbill = Perbill::from_rational(RecalculationInterval::get(), RELAY_DAYS) * Perbill::from_rational(5u32, 10_000);
+}
+
+#[cfg(any(feature = "unique-runtime", feature = "quartz-runtime"))]
+parameter_types! {
+ pub const AppPromotionId: PalletId = PalletId(*b"appstake");
+ pub const RecalculationInterval: BlockNumber = RELAY_DAYS;
+ pub const PendingInterval: BlockNumber = 7 * RELAY_DAYS;
+ pub const Nominal: Balance = UNIQUE;
+ // pub const Day: BlockNumber = RELAY_DAYS;
+ pub IntervalIncome: Perbill = Perbill::from_rational(5u32, 10_000);
+}
+
+impl pallet_app_promotion::Config for Runtime {
+ type PalletId = AppPromotionId;
+ type CollectionHandler = Unique;
+ type ContractHandler = EvmContractHelpers;
+ type Currency = Balances;
+ type WeightInfo = pallet_app_promotion::weights::SubstrateWeight<Self>;
+ type TreasuryAccountId = TreasuryAccountId;
+ type RelayBlockNumberProvider = RelayChainBlockNumberProvider<Runtime>;
+ type RecalculationInterval = RecalculationInterval;
+ type PendingInterval = PendingInterval;
+ // type Day = Day;
+ type Nominal = Nominal;
+ type IntervalIncome = IntervalIncome;
+ type Event = Event;
+}
runtime/common/config/pallets/mod.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/mod.rs
+++ b/runtime/common/config/pallets/mod.rs
@@ -40,6 +40,9 @@
#[cfg(feature = "scheduler")]
pub mod scheduler;
+#[cfg(feature = "app-promotion")]
+pub mod app_promotion;
+
parameter_types! {
pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();
pub const CollectionCreationPrice: Balance = 2 * UNIQUE;
runtime/common/construct_runtime/mod.rsdiffbeforeafterboth--- a/runtime/common/construct_runtime/mod.rs
+++ b/runtime/common/construct_runtime/mod.rs
@@ -77,12 +77,15 @@
#[runtimes(opal)]
RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
+ #[runtimes(opal)]
+ AppPromotion: pallet_app_promotion::{Pallet, Call, Storage, Event<T>} = 73,
+
// Frontier
EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,
Ethereum: pallet_ethereum::{Pallet, Config, Call, Storage, Event, Origin} = 101,
EvmCoderSubstrate: pallet_evm_coder_substrate::{Pallet, Storage} = 150,
- EvmContractHelpers: pallet_evm_contract_helpers::{Pallet, Storage} = 151,
+ EvmContractHelpers: pallet_evm_contract_helpers::{Pallet, Storage, Event<T>} = 151,
EvmTransactionPayment: pallet_evm_transaction_payment::{Pallet} = 152,
EvmMigration: pallet_evm_migration::{Pallet, Call, Storage} = 153,
}
runtime/common/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -189,6 +189,40 @@
}
}
+ impl app_promotion_rpc::AppPromotionApi<Block, BlockNumber, CrossAccountId, AccountId> for Runtime {
+ fn total_staked(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
+
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked(staker).unwrap_or_default());
+ }
+
+ fn total_staked_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
+
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked_per_block(staker));
+ }
+
+ fn pending_unstake(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
+
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake(staker));
+ }
+
+ fn pending_unstake_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
+
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake_per_block(staker))
+ }
+ }
+
impl rmrk_rpc::RmrkApi<
Block,
AccountId,
@@ -638,6 +672,7 @@
list_benchmark!(list, extra, pallet_unique, Unique);
list_benchmark!(list, extra, pallet_structure, Structure);
list_benchmark!(list, extra, pallet_inflation, Inflation);
+ list_benchmark!(list, extra, pallet_app_promotion, AppPromotion);
list_benchmark!(list, extra, pallet_fungible, Fungible);
list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);
@@ -693,6 +728,7 @@
add_benchmark!(params, batches, pallet_unique, Unique);
add_benchmark!(params, batches, pallet_structure, Structure);
add_benchmark!(params, batches, pallet_inflation, Inflation);
+ add_benchmark!(params, batches, pallet_app_promotion, AppPromotion);
add_benchmark!(params, batches, pallet_fungible, Fungible);
add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -37,6 +37,7 @@
'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
+ 'pallet-app-promotion/runtime-benchmarks',
'pallet-unique-scheduler/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
@@ -82,12 +83,14 @@
'pallet-base-fee/std',
'fp-rpc/std',
'up-rpc/std',
+ 'app-promotion-rpc/std',
'fp-evm-mapping/std',
'fp-self-contained/std',
'parachain-info/std',
'serde',
'pallet-inflation/std',
'pallet-configuration/std',
+ 'pallet-app-promotion/std',
'pallet-common/std',
'pallet-structure/std',
'pallet-fungible/std',
@@ -122,11 +125,12 @@
"orml-vesting/std",
]
limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
-opal-runtime = ['refungible', 'scheduler', 'rmrk']
+opal-runtime = ['refungible', 'scheduler', 'rmrk', 'app-promotion']
refungible = []
scheduler = []
rmrk = []
+app-promotion = []
################################################################################
# Substrate Dependencies
@@ -411,9 +415,11 @@
derivative = "2.2.0"
pallet-unique = { path = '../../pallets/unique', default-features = false }
up-rpc = { path = "../../primitives/rpc", default-features = false }
+app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false}
rmrk-rpc = { path = "../../primitives/rmrk-rpc", default-features = false }
fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
+pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
pallet-configuration = { default-features = false, path = "../../pallets/configuration" }
pallet-common = { default-features = false, path = "../../pallets/common" }
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -82,6 +82,7 @@
'pallet-base-fee/std',
'fp-rpc/std',
'up-rpc/std',
+ 'app-promotion-rpc/std',
'fp-evm-mapping/std',
'fp-self-contained/std',
'parachain-info/std',
@@ -416,8 +417,10 @@
derivative = "2.2.0"
pallet-unique = { path = '../../pallets/unique', default-features = false }
up-rpc = { path = "../../primitives/rpc", default-features = false }
+app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false}
fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.27" }
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
+pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
pallet-configuration = { default-features = false, path = "../../pallets/configuration" }
pallet-common = { default-features = false, path = "../../pallets/common" }
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -83,6 +83,7 @@
'pallet-base-fee/std',
'fp-rpc/std',
'up-rpc/std',
+ 'app-promotion-rpc/std',
'fp-evm-mapping/std',
'fp-self-contained/std',
'parachain-info/std',
@@ -409,8 +410,10 @@
derivative = "2.2.0"
pallet-unique = { path = '../../pallets/unique', default-features = false }
up-rpc = { path = "../../primitives/rpc", default-features = false }
+app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false}
rmrk-rpc = { path = "../../primitives/rmrk-rpc", default-features = false }
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
+pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
pallet-configuration = { default-features = false, path = "../../pallets/configuration" }
pallet-common = { default-features = false, path = "../../pallets/common" }
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -30,6 +30,7 @@
"testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",
"testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",
"testEthNesting": "mocha --timeout 9999999 -r ts-node/register './**/eth/nesting/**/*.test.ts'",
+ "testEthPayable": "mocha --timeout 9999999 -r ts-node/register './**/eth/payable.test.ts'",
"load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",
"loadTransfer": "ts-node src/transfer.nload.ts",
"testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",
@@ -64,6 +65,7 @@
"testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",
"testAdminTransferAndBurn": "mocha --timeout 9999999 -r ts-node/register ./**/adminTransferAndBurn.test.ts",
"testSetMintPermission": "mocha --timeout 9999999 -r ts-node/register ./**/setMintPermission.test.ts",
+ "testSetPublicAccessMode": "mocha --timeout 9999999 -r ts-node/register ./**/setPublicAccessMode.test.ts",
"testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts",
"testContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/contractSponsoring.test.ts",
"testEnableContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/enableContractSponsoring.test.ts",
@@ -71,7 +73,6 @@
"testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",
"testSetOffchainSchema": "mocha --timeout 9999999 -r ts-node/register ./**/setOffchainSchema.test.ts",
"testOverflow": "mocha --timeout 9999999 -r ts-node/register ./**/overflow.test.ts",
- "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts",
"testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts",
"testScheduler": "mocha --timeout 9999999 -r ts-node/register ./**/scheduler.test.ts",
"testSchedulingEVM": "mocha --timeout 9999999 -r ts-node/register ./**/eth/scheduling.test.ts",
@@ -80,10 +81,12 @@
"testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",
"testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",
"testLimits": "mocha --timeout 9999999 -r ts-node/register ./**/limits.test.ts",
- "testEthCreateCollection": "mocha --timeout 9999999 -r ts-node/register ./**/eth/createCollection.test.ts",
+ "testEthCreateNFTCollection": "mocha --timeout 9999999 -r ts-node/register ./**/eth/createNFTCollection.test.ts",
+ "testEthCreateRFTCollection": "mocha --timeout 9999999 -r ts-node/register ./**/eth/createRFTCollection.test.ts",
"testRFT": "mocha --timeout 9999999 -r ts-node/register ./**/refungible.test.ts",
"testFT": "mocha --timeout 9999999 -r ts-node/register ./**/fungible.test.ts",
"testRPC": "mocha --timeout 9999999 -r ts-node/register ./**/rpc.test.ts",
+ "testPromotion": "mocha --timeout 9999999 -r ts-node/register ./**/app-promotion.test.ts",
"polkadot-types-fetch-metadata": "curl -H 'Content-Type: application/json' -d '{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\": \"state_getMetadata\", \"params\":[]}' http://localhost:9933 > src/interfaces/metadata.json",
"polkadot-types-from-defs": "ts-node ./node_modules/.bin/polkadot-types-from-defs --endpoint src/interfaces/metadata.json --input src/interfaces/ --package .",
"polkadot-types-from-chain": "ts-node ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .",
tests/src/app-promotion.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/app-promotion.test.ts
@@ -0,0 +1,800 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import {IKeyringPair} from '@polkadot/types/types';
+import {
+ normalizeAccountId,
+ getModuleNames,
+ Pallets,
+} from './util/helpers';
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import {usingPlaygrounds} from './util/playgrounds';
+
+import {encodeAddress} from '@polkadot/util-crypto';
+import {stringToU8a} from '@polkadot/util';
+import {SponsoringMode, contractHelpers, createEthAccountWithBalance, deployFlipper, itWeb3, transferBalanceToEth} from './eth/util/helpers';
+import {DevUniqueHelper} from './util/playgrounds/unique.dev';
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+let alice: IKeyringPair;
+let palletAdmin: IKeyringPair;
+let nominal: bigint;
+const palletAddress = calculatePalleteAddress('appstake');
+let accounts: IKeyringPair[] = [];
+const LOCKING_PERIOD = 20n; // 20 blocks of relay
+const UNLOCKING_PERIOD = 10n; // 20 blocks of parachain
+const rewardAvailableInBlock = (stakedInBlock: bigint) => (stakedInBlock - stakedInBlock % LOCKING_PERIOD) + (LOCKING_PERIOD * 2n);
+
+const beforeEach = async (context: Mocha.Context) => {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ if (!getModuleNames(helper.api!).includes(Pallets.AppPromotion)) context.skip();
+ alice = privateKey('//Alice');
+ palletAdmin = privateKey('//Charlie'); // TODO use custom address
+ await helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})));
+ nominal = helper.balance.getOneTokenNominal();
+ await helper.balance.transferToSubstrate(alice, palletAdmin.address, 1000n * nominal);
+ await helper.balance.transferToSubstrate(alice, palletAddress, 1000n * nominal);
+ accounts = await helper.arrange.createCrowd(100, 1000n, alice); // create accounts-pool to speed up tests
+ });
+};
+
+describe('app-promotions.stake extrinsic', () => {
+ before(async function () {
+ await beforeEach(this);
+ });
+
+ it('should "lock" staking balance, add it to "staked" map, and increase "totalStaked" amount', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [staker, recepient] = [accounts.pop()!, accounts.pop()!];
+ const totalStakedBefore = await helper.staking.getTotalStaked();
+
+ // Minimum stake amount is 100:
+ await expect(helper.staking.stake(staker, 100n * nominal - 1n)).to.be.eventually.rejected;
+ await helper.staking.stake(staker, 100n * nominal);
+
+ // Staker balance is: miscFrozen: 100, feeFrozen: 100, reserved: 0n...
+ // ...so he can not transfer 900
+ expect (await helper.balance.getSubstrateFull(staker.address)).to.contain({miscFrozen: 100n * nominal, feeFrozen: 100n * nominal, reserved: 0n});
+ await expect(helper.balance.transferToSubstrate(staker, recepient.address, 900n * nominal)).to.be.rejected;
+
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(100n * nominal);
+ expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);
+ // it is potentially flaky test. Promotion can credited some tokens. Maybe we need to use closeTo?
+ expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedBefore + 100n * nominal); // total tokens amount staked in app-promotion increased
+
+
+ await helper.staking.stake(staker, 200n * nominal);
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(300n * nominal);
+ expect((await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map((x) => x[1])).to.be.deep.equal([100n * nominal, 200n * nominal]);
+ });
+ });
+
+ it('should allow to create maximum 10 stakes for account', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [staker] = await helper.arrange.createAccounts([2000n], alice);
+ for (let i = 0; i < 10; i++) {
+ await helper.staking.stake(staker, 100n * nominal);
+ }
+
+ // can have 10 stakes
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(1000n * nominal);
+ expect(await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).to.have.length(10);
+
+ await expect(helper.staking.stake(staker, 100n * nominal)).to.be.rejected;
+
+ // After unstake can stake again
+ await helper.staking.unstake(staker);
+ await helper.staking.stake(staker, 100n * nominal);
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.equal(100n * nominal);
+ });
+ });
+
+ it('should reject transaction if stake amount is more than total free balance minus frozen', async () => {
+ await usingPlaygrounds(async helper => {
+ const staker = accounts.pop()!;
+
+ // Can't stake full balance because Alice needs to pay some fee
+ await expect(helper.staking.stake(staker, 1000n * nominal)).to.be.eventually.rejected;
+ await helper.staking.stake(staker, 500n * nominal);
+
+ // Can't stake 500 tkn because Alice has Less than 500 transferable;
+ await expect(helper.staking.stake(staker, 500n * nominal)).to.be.eventually.rejected;
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(500n * nominal);
+ });
+ });
+
+ it('for different accounts in one block is possible', async () => {
+ await usingPlaygrounds(async helper => {
+ const crowd = [accounts.pop()!, accounts.pop()!, accounts.pop()!, accounts.pop()!];
+
+ const crowdStartsToStake = crowd.map(user => helper.staking.stake(user, 100n * nominal));
+ await expect(Promise.all(crowdStartsToStake)).to.be.eventually.fulfilled;
+
+ const crowdStakes = await Promise.all(crowd.map(address => helper.staking.getTotalStaked({Substrate: address.address})));
+ expect(crowdStakes).to.deep.equal([100n * nominal, 100n * nominal, 100n * nominal, 100n * nominal]);
+ });
+ });
+});
+
+describe('unstake balance extrinsic', () => {
+ before(async function () {
+ await beforeEach(this);
+ });
+
+ it('should change balance state from "frozen" to "reserved", add it to "pendingUnstake" map, and subtract it from totalStaked', async () => {
+ await usingPlaygrounds(async helper => {
+ const [staker, recepient] = [accounts.pop()!, accounts.pop()!];
+ const totalStakedBefore = await helper.staking.getTotalStaked();
+ await helper.staking.stake(staker, 900n * nominal);
+ await helper.staking.unstake(staker);
+
+ // Right after unstake balance is reserved
+ // Staker can not transfer
+ expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 900n * nominal, miscFrozen: 0n, feeFrozen: 0n});
+ await expect(helper.balance.transferToSubstrate(staker, recepient.address, 100n * nominal)).to.be.rejected;
+ expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(900n * nominal);
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);
+ expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedBefore);
+ });
+ });
+
+ it('should unlock balance after unlocking period ends and remove it from "pendingUnstake"', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const staker = accounts.pop()!;
+ await helper.staking.stake(staker, 100n * nominal);
+ await helper.staking.unstake(staker);
+ const unstakedInBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address}))[0][0];
+
+ // Wait for unstaking period. Balance now free ~1000; reserved, frozen, miscFrozeb: 0n
+ await helper.wait.forParachainBlockNumber(unstakedInBlock);
+ expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, miscFrozen: 0n, feeFrozen: 0n});
+ expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);
+
+ // staker can transfer:
+ await helper.balance.transferToSubstrate(staker, alice.address, 998n * nominal);
+ expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(1n);
+ });
+ });
+
+ it('should successfully unstake multiple stakes', async () => {
+ await usingPlaygrounds(async helper => {
+ const staker = accounts.pop()!;
+ await helper.staking.stake(staker, 100n * nominal);
+ await helper.staking.stake(staker, 200n * nominal);
+ await helper.staking.stake(staker, 300n * nominal);
+
+ // staked: [100, 200, 300]; unstaked: 0
+ let pendingUnstake = await helper.staking.getPendingUnstake({Substrate: staker.address});
+ let unstakedPerBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address})).map(stake => stake[1]);
+ let stakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(stake => stake[1]);
+ expect(pendingUnstake).to.be.deep.equal(0n);
+ expect(unstakedPerBlock).to.be.deep.equal([]);
+ expect(stakedPerBlock).to.be.deep.equal([100n * nominal, 200n * nominal, 300n * nominal]);
+
+ // Can unstake multiple stakes
+ await helper.staking.unstake(staker);
+ const unstakingBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address}))[0][0];
+ pendingUnstake = await helper.staking.getPendingUnstake({Substrate: staker.address});
+ unstakedPerBlock = (await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address})).map(stake => stake[1]);
+ stakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(stake => stake[1]);
+ expect(pendingUnstake).to.be.equal(600n * nominal);
+ expect(stakedPerBlock).to.be.deep.equal([]);
+ expect(unstakedPerBlock).to.be.deep.equal([600n * nominal]);
+
+ expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 600n * nominal, feeFrozen: 0n, miscFrozen: 0n});
+ await helper.wait.forParachainBlockNumber(unstakingBlock);
+ expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, feeFrozen: 0n, miscFrozen: 0n});
+ expect (await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);
+ });
+ });
+
+ it('should not have any effects if no active stakes', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const staker = accounts.pop()!;
+
+ // unstake has no effect if no stakes at all
+ await helper.staking.unstake(staker);
+ expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(0n);
+ expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n); // TODO bigint closeTo helper
+
+ // TODO stake() unstake() waitUnstaked() unstake();
+
+ // can't unstake if there are only pendingUnstakes
+ await helper.staking.stake(staker, 100n * nominal);
+ await helper.staking.unstake(staker);
+ await helper.staking.unstake(staker);
+
+ expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(100n * nominal);
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);
+ });
+ });
+
+ it('should keep different unlocking block for each unlocking stake', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const staker = accounts.pop()!;
+ await helper.staking.stake(staker, 100n * nominal);
+ await helper.staking.unstake(staker);
+ await helper.staking.stake(staker, 120n * nominal);
+ await helper.staking.unstake(staker);
+
+ const unstakingPerBlock = await helper.staking.getPendingUnstakePerBlock({Substrate: staker.address});
+ expect(unstakingPerBlock).has.length(2);
+ expect(unstakingPerBlock[0][1]).to.equal(100n * nominal);
+ expect(unstakingPerBlock[1][1]).to.equal(120n * nominal);
+ });
+ });
+
+ it('should be possible for different accounts in one block', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const stakers = [accounts.pop()!, accounts.pop()!, accounts.pop()!];
+
+ await Promise.all(stakers.map(staker => helper.staking.stake(staker, 100n * nominal)));
+ await Promise.all(stakers.map(staker => helper.staking.unstake(staker)));
+
+ await Promise.all(stakers.map(async (staker) => {
+ expect(await helper.staking.getPendingUnstake({Substrate: staker.address})).to.be.equal(100n * nominal);
+ expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(0n);
+ }));
+ });
+ });
+});
+
+describe('Admin adress', () => {
+ before(async function () {
+ await beforeEach(this);
+ });
+
+ it('can be set by sudo only', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const nonAdmin = accounts.pop()!;
+ // nonAdmin can not set admin not from himself nor as a sudo
+ await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address}))).to.be.eventually.rejected;
+ await expect(helper.signTransaction(nonAdmin, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address})))).to.be.eventually.rejected;
+
+ // Alice can
+ await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})))).to.be.eventually.fulfilled;
+ });
+ });
+
+ it('can be any valid CrossAccountId', async () => {
+ // We are not going to set an eth address as a sponsor,
+ // but we do want to check, it doesn't break anything;
+ await usingPlaygrounds(async (helper) => {
+ const account = accounts.pop()!;
+ const ethAccount = helper.address.substrateToEth(account.address);
+ // Alice sets Ethereum address as a sudo. Then Substrate address back...
+ await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Ethereum: ethAccount})))).to.be.eventually.fulfilled;
+ await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})))).to.be.eventually.fulfilled;
+
+ // ...It doesn't break anything;
+ const collection = await helper.nft.mintCollection(account, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
+ await expect(helper.signTransaction(account, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;
+ });
+ });
+
+ it('can be reassigned', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [oldAdmin, newAdmin, collectionOwner] = [accounts.pop()!, accounts.pop()!, accounts.pop()!];
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
+
+ await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress(normalizeAccountId(oldAdmin))))).to.be.eventually.fulfilled;
+ await expect(helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress(normalizeAccountId(newAdmin))))).to.be.eventually.fulfilled;
+ await expect(helper.signTransaction(oldAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;
+
+ await expect(helper.signTransaction(newAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.fulfilled;
+ });
+ });
+});
+
+describe('App-promotion collection sponsoring', () => {
+ before(async function () {
+ await beforeEach(this);
+ await usingPlaygrounds(async (helper) => {
+ const tx = helper.api!.tx.sudo.sudo(helper.api!.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address}));
+ await helper.signTransaction(alice, tx);
+ });
+ });
+
+ it('should actually sponsor transactions', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [collectionOwner, tokenSender, receiver] = [accounts.pop()!, accounts.pop()!, accounts.pop()!];
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'Name', description: 'Description', tokenPrefix: 'Prefix', limits: {sponsorTransferTimeout: 0}});
+ const token = await collection.mintToken(collectionOwner, {Substrate: tokenSender.address});
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId));
+ const palletBalanceBefore = await helper.balance.getSubstrate(palletAddress);
+
+ await token.transfer(tokenSender, {Substrate: receiver.address});
+ expect (await token.getOwner()).to.be.deep.equal({Substrate: receiver.address});
+ const palletBalanceAfter = await helper.balance.getSubstrate(palletAddress);
+
+ // senders balance the same, transaction has sponsored
+ expect (await helper.balance.getSubstrate(tokenSender.address)).to.be.equal(1000n * nominal);
+ expect (palletBalanceBefore > palletBalanceAfter).to.be.true;
+ });
+ });
+
+ it('can not be set by non admin', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [collectionOwner, nonAdmin] = [accounts.pop()!, accounts.pop()!];
+
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
+
+ await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;
+ expect((await collection.getData())?.raw.sponsorship).to.equal('Disabled');
+ });
+ });
+
+ it('should set pallet address as confirmed admin', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [collectionOwner, oldSponsor] = [accounts.pop()!, accounts.pop()!];
+
+ // Can set sponsoring for collection without sponsor
+ const collectionWithoutSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'No-sponsor', description: 'New Collection', tokenPrefix: 'Promotion'});
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithoutSponsor.collectionId))).to.be.eventually.fulfilled;
+ expect((await collectionWithoutSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
+
+ // Can set sponsoring for collection with unconfirmed sponsor
+ const collectionWithUnconfirmedSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'Unconfirmed', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: oldSponsor.address});
+ expect((await collectionWithUnconfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Unconfirmed: oldSponsor.address});
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithUnconfirmedSponsor.collectionId))).to.be.eventually.fulfilled;
+ expect((await collectionWithUnconfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
+
+ // Can set sponsoring for collection with confirmed sponsor
+ const collectionWithConfirmedSponsor = await helper.nft.mintCollection(collectionOwner, {name: 'Confirmed', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: oldSponsor.address});
+ await collectionWithConfirmedSponsor.confirmSponsorship(oldSponsor);
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithConfirmedSponsor.collectionId))).to.be.eventually.fulfilled;
+ expect((await collectionWithConfirmedSponsor.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
+ });
+ });
+
+ it('can be overwritten by collection owner', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [collectionOwner, newSponsor] = [accounts.pop()!, accounts.pop()!];
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
+ const collectionId = collection.collectionId;
+
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionId))).to.be.eventually.fulfilled;
+
+ // Collection limits still can be changed by the owner
+ expect(await collection.setLimits(collectionOwner, {sponsorTransferTimeout: 0})).to.be.true;
+ expect((await collection.getData())?.raw.limits.sponsorTransferTimeout).to.be.equal(0);
+ expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
+
+ // Collection sponsor can be changed too
+ expect((await collection.setSponsor(collectionOwner, newSponsor.address))).to.be.true;
+ expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Unconfirmed: newSponsor.address});
+ });
+ });
+
+ it('should not overwrite collection limits set by the owner earlier', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const limits = {ownerCanDestroy: true, ownerCanTransfer: true, sponsorTransferTimeout: 0};
+ const collectionWithLimits = await helper.nft.mintCollection(alice, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', limits});
+
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collectionWithLimits.collectionId))).to.be.eventually.fulfilled;
+ expect((await collectionWithLimits.getData())?.raw.limits).to.be.deep.contain(limits);
+ });
+ });
+
+ it('should reject transaction if collection doesn\'t exist', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const collectionOwner = accounts.pop()!;
+
+ // collection has never existed
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(999999999))).to.be.eventually.rejected;
+ // collection has been burned
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
+ await collection.burn(collectionOwner);
+
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.rejected;
+ });
+ });
+});
+
+describe('app-promotion stopSponsoringCollection', () => {
+ before(async function () {
+ await beforeEach(this);
+ });
+
+ it('can not be called by non-admin', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [collectionOwner, nonAdmin] = [accounts.pop()!, accounts.pop()!];
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
+
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.eventually.fulfilled;
+
+ await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.eventually.rejected;
+ expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: palletAddress});
+ });
+ });
+
+ it('should set sponsoring as disabled', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [collectionOwner, recepient] = [accounts.pop()!, accounts.pop()!];
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', limits: {sponsorTransferTimeout: 0}});
+ const token = await collection.mintToken(collectionOwner, {Substrate: collectionOwner.address});
+
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.sponsorCollection(collection.collectionId));
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId));
+
+ expect((await collection.getData())?.raw.sponsorship).to.be.equal('Disabled');
+
+ // Transactions are not sponsored anymore:
+ const ownerBalanceBefore = await helper.balance.getSubstrate(collectionOwner.address);
+ await token.transfer(collectionOwner, {Substrate: recepient.address});
+ const ownerBalanceAfter = await helper.balance.getSubstrate(collectionOwner.address);
+ expect(ownerBalanceAfter < ownerBalanceBefore).to.be.equal(true);
+ });
+ });
+
+ it('should not affect collection which is not sponsored by pallete', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const collectionOwner = accounts.pop()!;
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion', pendingSponsor: collectionOwner.address});
+ await collection.confirmSponsorship(collectionOwner);
+
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.eventually.rejected;
+
+ expect((await collection.getData())?.raw.sponsorship).to.be.deep.equal({Confirmed: collectionOwner.address});
+ });
+ });
+
+ it('should reject transaction if collection does not exist', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const collectionOwner = accounts.pop()!;
+ const collection = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});
+
+ await collection.burn(collectionOwner);
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(collection.collectionId))).to.be.eventually.rejected;
+ await expect(helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.stopSponsoringCollection(999999999))).to.be.eventually.rejected;
+ });
+ });
+});
+
+describe('app-promotion contract sponsoring', () => {
+ before(async function () {
+ await beforeEach(this);
+ });
+
+ itWeb3('should set palletes address as a sponsor', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+ const contractMethods = contractHelpers(web3, contractOwner);
+
+ await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
+
+ expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true;
+ expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner);
+ expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
+ confirmed: {
+ substrate: palletAddress,
+ },
+ });
+ });
+ });
+
+ itWeb3('should overwrite sponsoring mode and existed sponsor', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+ const contractMethods = contractHelpers(web3, contractOwner);
+
+ await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;
+
+ // Contract is self sponsored
+ expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.be.deep.equal({
+ confirmed: {
+ ethereum: flipper.options.address.toLowerCase(),
+ },
+ });
+
+ // set promotion sponsoring
+ await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
+
+ // new sponsor is pallet address
+ expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true;
+ expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner);
+ expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
+ confirmed: {
+ substrate: palletAddress,
+ },
+ });
+ });
+ });
+
+ itWeb3('can be overwritten by contract owner', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+ const contractMethods = contractHelpers(web3, contractOwner);
+
+ // contract sponsored by pallet
+ await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
+
+ // owner sets self sponsoring
+ await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;
+
+ expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true;
+ expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner);
+ expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
+ confirmed: {
+ ethereum: flipper.options.address.toLowerCase(),
+ },
+ });
+ });
+ });
+
+ itWeb3('can not be set by non admin', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const nonAdmin = accounts.pop()!;
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+ const contractMethods = contractHelpers(web3, contractOwner);
+
+ await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;
+
+ // nonAdmin calls sponsorContract
+ await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address))).to.be.rejected;
+
+ // contract still self-sponsored
+ expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
+ confirmed: {
+ ethereum: flipper.options.address.toLowerCase(),
+ },
+ });
+ });
+
+ itWeb3('should be rejected for non-contract address', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+
+ });
+ });
+ });
+
+ itWeb3('should actually sponsor transactions', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+ const contractHelper = contractHelpers(web3, contractOwner);
+ await contractHelper.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: contractOwner});
+ await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});
+ await transferBalanceToEth(api, alice, flipper.options.address, 1000n);
+
+ await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
+ await flipper.methods.flip().send({from: caller});
+ expect(await flipper.methods.getValue().call()).to.be.true;
+
+ const callerBalance = await helper.balance.getEthereum(caller);
+ const contractBalanceAfter = await helper.balance.getEthereum(flipper.options.address);
+
+ expect(callerBalance).to.be.equal(1000n * nominal);
+ expect(1000n * nominal > contractBalanceAfter).to.be.true;
+ });
+ });
+});
+
+describe('app-promotion stopSponsoringContract', () => {
+ before(async function () {
+ await beforeEach(this);
+ });
+
+ itWeb3('should remove pallet address from contract sponsors', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+ await transferBalanceToEth(api, alice, flipper.options.address);
+ const contractHelper = contractHelpers(web3, contractOwner);
+ await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});
+ await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
+ await helper.signTransaction(palletAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address));
+
+ expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.false;
+ expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner);
+ expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({
+ disabled: null,
+ });
+
+ await flipper.methods.flip().send({from: caller});
+ expect(await flipper.methods.getValue().call()).to.be.true;
+
+ const callerBalance = await helper.balance.getEthereum(caller);
+ const contractBalanceAfter = await helper.balance.getEthereum(flipper.options.address);
+
+ // caller payed for call
+ expect(1000n * nominal > callerBalance).to.be.true;
+ expect(contractBalanceAfter).to.be.equal(1000n * nominal);
+ });
+ });
+
+ itWeb3('can not be called by non-admin', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const nonAdmin = accounts.pop()!;
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+
+ await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
+ await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address))).to.be.rejected;
+ });
+ });
+
+ itWeb3('should not affect a contract which is not sponsored by pallete', async ({api, web3, privateKeyWrapper}) => {
+ await usingPlaygrounds(async (helper) => {
+ const nonAdmin = accounts.pop()!;
+ const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();
+ const flipper = await deployFlipper(web3, contractOwner);
+ const contractHelper = contractHelpers(web3, contractOwner);
+ await expect(contractHelper.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;
+
+ await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address))).to.be.rejected;
+ });
+ });
+});
+
+describe('app-promotion rewards', () => {
+ before(async function () {
+ await beforeEach(this);
+ });
+
+ it('can not be called by non admin', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const nonAdmin = accounts.pop()!;
+ await expect(helper.signTransaction(nonAdmin, helper.api!.tx.appPromotion.payoutStakers(100))).to.be.rejected;
+ });
+ });
+
+ it('should credit 0.05% for staking period', async () => {
+ await usingPlaygrounds(async helper => {
+ const staker = accounts.pop()!;
+
+ await waitPromotionPeriodDoesntEnd(helper);
+
+ await helper.staking.stake(staker, 100n * nominal);
+ await helper.staking.stake(staker, 200n * nominal);
+
+ // wait rewards are available:
+ const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[1][0];
+ await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock));
+
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));
+
+ const totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);
+ expect(totalStakedPerBlock).to.be.deep.equal([calculateIncome(100n * nominal, 10n), calculateIncome(200n * nominal, 10n)]);
+ });
+ });
+
+ it('shoud be paid for more than one period if payments was missed', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const staker = accounts.pop()!;
+
+ await helper.staking.stake(staker, 100n * nominal);
+ // wait for two rewards are available:
+ const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[0][0];
+ await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock) + LOCKING_PERIOD);
+
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));
+ const stakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
+ const frozenBalanceShouldBe = calculateIncome(100n * nominal, 10n, 2);
+ expect(stakedPerBlock[0][1]).to.be.equal(frozenBalanceShouldBe);
+
+ const stakerFullBalance = await helper.balance.getSubstrateFull(staker.address);
+
+ expect(stakerFullBalance).to.contain({reserved: 0n, feeFrozen: frozenBalanceShouldBe, miscFrozen: frozenBalanceShouldBe});
+ });
+ });
+
+ it('should not be credited for unstaked (reserved) balance', async () => {
+ await usingPlaygrounds(async helper => {
+ // staker unstakes before rewards has been payed
+ const staker = accounts.pop()!;
+ await helper.staking.stake(staker, 100n * nominal);
+ const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[0][0];
+ await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock) + LOCKING_PERIOD);
+ await helper.staking.unstake(staker);
+
+ // so he did not receive any rewards
+ const totalBalanceBefore = await helper.balance.getSubstrate(staker.address);
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));
+ const totalBalanceAfter = await helper.balance.getSubstrate(staker.address);
+
+ expect(totalBalanceBefore).to.be.equal(totalBalanceAfter);
+ });
+ });
+
+ it('should bring compound interest', async () => {
+ await usingPlaygrounds(async helper => {
+ const staker = accounts.pop()!;
+
+ await helper.staking.stake(staker, 100n * nominal);
+
+ const stakedInBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}))[0][0];
+ await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock));
+
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));
+ let totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);
+ expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n)]);
+
+ await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock) + LOCKING_PERIOD);
+ await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));
+ totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);
+ expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n, 2)]);
+ });
+ });
+
+ it.skip('can be paid 1000 rewards in a time', async () => {
+ // all other stakes should be unstaked
+ await usingPlaygrounds(async (helper) => {
+ const oneHundredStakers = await helper.arrange.createCrowd(100, 1050n, alice);
+
+ // stakers stakes 10 times each
+ for (let i = 0; i < 10; i++) {
+ await Promise.all(oneHundredStakers.map(staker => helper.staking.stake(staker, 100n * nominal)));
+ }
+ await helper.wait.newBlocks(40);
+ const result = await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));
+ });
+ });
+
+ it.skip('can handle 40.000 rewards', async () => {
+ await usingPlaygrounds(async (helper) => {
+ const [donor] = await helper.arrange.createAccounts([7_000_000n], alice);
+ const crowdStakes = async () => {
+ // each account in the crowd stakes 2 times
+ const crowd = await helper.arrange.createCrowd(500, 300n, donor);
+ await Promise.all(crowd.map(account => helper.staking.stake(account, 100n * nominal)));
+ await Promise.all(crowd.map(account => helper.staking.stake(account, 100n * nominal)));
+ //
+ };
+
+ for (let i = 0; i < 40; i++) {
+ await crowdStakes();
+ }
+
+ // TODO pay rewards for some period
+ });
+ });
+});
+
+function calculatePalleteAddress(palletId: any) {
+ const address = stringToU8a(('modl' + palletId).padEnd(32, '\0'));
+ return encodeAddress(address);
+}
+
+function calculateIncome(base: bigint, calcPeriod: bigint, iter = 0): bigint {
+ const DAY = 7200n;
+ const ACCURACY = 1_000_000_000n;
+ const income = base + base * (ACCURACY * (calcPeriod * 5n) / (10_000n * DAY)) / ACCURACY ;
+
+ if (iter > 1) {
+ return calculateIncome(income, calcPeriod, iter - 1);
+ } else return income;
+}
+
+// Wait while promotion period less than specified block, to avoid boundary cases
+// 0 if this should be the beginning of the period.
+async function waitPromotionPeriodDoesntEnd(helper: DevUniqueHelper, waitBlockLessThan = LOCKING_PERIOD / 3n) {
+ const relayBlockNumber = (await helper.api!.query.parachainSystem.validationData()).value.relayParentNumber.toNumber(); // await helper.chain.getLatestBlockNumber();
+ const currentPeriodBlock = BigInt(relayBlockNumber) % LOCKING_PERIOD;
+
+ if (currentPeriodBlock > waitBlockLessThan) {
+ await helper.wait.forRelayBlockNumber(BigInt(relayBlockNumber) + LOCKING_PERIOD - currentPeriodBlock);
+ }
+}
tests/src/approve.test.tsdiffbeforeafterboth--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -79,11 +79,12 @@
it('[nft] Remove approval by using 0 amount', async () => {
await usingPlaygrounds(async (helper) => {
- const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
+ const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
+ const collectionId = collection.collectionId;
const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address});
expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.true;
- await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 0n);
+ await helper.api?.tx.unique.approve({Substrate: bob.address}, collectionId, tokenId, 0).signAndSend(alice);
expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.false;
});
});
@@ -97,7 +98,7 @@
const amountBefore = await helper.ft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountBefore).to.be.equal(BigInt(1));
- await helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 0n);
+ await helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, 0n);
const amountAfter = await helper.ft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountAfter).to.be.equal(BigInt(0));
});
@@ -111,7 +112,7 @@
const amountBefore = await helper.rft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountBefore).to.be.equal(BigInt(100));
- await helper.rft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 0n);
+ await helper.rft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, 0n);
const amountAfter = await helper.rft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountAfter).to.be.equal(BigInt(0));
});
@@ -289,7 +290,7 @@
const {collectionId} = await helper.ft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'}, 0);
await helper.ft.mintTokens(alice, collectionId, alice.address, 10n);
const tokenId = await helper.ft.getLastTokenId(collectionId);
- await helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 10n);
+ await helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, 10n);
const charlieBefore = await helper.ft.getBalance(collectionId, {Substrate: charlie.address});
await helper.ft.transferTokenFrom(bob, collectionId, tokenId, {Substrate: alice.address}, {Substrate: charlie.address}, 2n);
@@ -321,7 +322,7 @@
const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address});
expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.true;
- await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 0n);
+ await helper.api?.tx.unique.approve({Substrate: bob.address}, collectionId, tokenId, 0).signAndSend(alice);
expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.false;
const transferTokenFromTx = async () => helper.nft.transferTokenFrom(bob, collectionId, tokenId, {Substrate: bob.address}, {Substrate: bob.address});
await expect(transferTokenFromTx()).to.be.rejected;
@@ -337,7 +338,7 @@
const amountBefore = await helper.ft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountBefore).to.be.equal(BigInt(1));
- await helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 0n);
+ await helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, 0n);
const amountAfter = await helper.ft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountAfter).to.be.equal(BigInt(0));
@@ -354,7 +355,7 @@
const amountBefore = await helper.rft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountBefore).to.be.equal(BigInt(100));
- await helper.rft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 0n);
+ await helper.rft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, 0n);
const amountAfter = await helper.rft.getTokenApprovedPieces(collectionId, tokenId, {Substrate: bob.address}, {Substrate: alice.address});
expect(amountAfter).to.be.equal(BigInt(0));
@@ -379,8 +380,7 @@
await usingPlaygrounds(async (helper) => {
const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: bob.address});
- const approveTx = async () => helper.nft.approveToken(bob, collectionId, tokenId, {Substrate: charlie.address}, undefined, 2n);
- await expect(approveTx()).to.be.rejected;
+ await helper.api?.tx.unique.approve({Substrate: charlie.address}, collectionId, tokenId, 2).signAndSend(bob);
expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: charlie.address})).to.be.false;
});
});
@@ -390,7 +390,7 @@
const {collectionId} = await helper.ft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'}, 0);
await helper.ft.mintTokens(alice, collectionId, alice.address, 10n);
const tokenId = await helper.ft.getLastTokenId(collectionId);
- const approveTx = async () => helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 11n);
+ const approveTx = async () => helper.ft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, 11n);
await expect(approveTx()).to.be.rejected;
});
});
@@ -399,7 +399,7 @@
await usingPlaygrounds(async (helper) => {
const {collectionId} = await helper.rft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
const {tokenId} = await helper.rft.mintToken(alice, {collectionId: collectionId, owner: alice.address, pieces: 100n});
- const approveTx = async () => helper.rft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, undefined, 101n);
+ const approveTx = async () => helper.rft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}, 101n);
await expect(approveTx()).to.be.rejected;
});
});
@@ -658,9 +658,9 @@
const {collectionId} = await helper.rft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
const {tokenId} = await helper.rft.mintToken(alice, {collectionId: collectionId, owner: alice.address, pieces: 100n});
await helper.rft.transferToken(alice, collectionId, tokenId, {Substrate: bob.address}, 100n);
- await helper.rft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, undefined, 100n);
+ await helper.rft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, 100n);
- const approveTx = async () => helper.rft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, undefined, 101n);
+ const approveTx = async () => helper.rft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, 101n);
await expect(approveTx()).to.be.rejected;
});
});
@@ -672,8 +672,8 @@
const tokenId = await helper.ft.getLastTokenId(collectionId);
await helper.ft.transferToken(alice, collectionId, tokenId, {Substrate: bob.address}, 10n);
- await helper.ft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, undefined, 10n);
- const approveTx = async () => helper.ft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, undefined, 11n);
+ await helper.ft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, 10n);
+ const approveTx = async () => helper.ft.approveToken(bob, collectionId, tokenId, {Substrate: alice.address}, 11n);
await expect(approveTx()).to.be.rejected;
});
});
tests/src/eth/api/ContractHelpers.soldiffbeforeafterboth--- a/tests/src/eth/api/ContractHelpers.sol
+++ b/tests/src/eth/api/ContractHelpers.sol
@@ -12,9 +12,19 @@
function supportsInterface(bytes4 interfaceID) external view returns (bool);
}
+/// @dev inlined interface
+interface ContractHelpersEvents {
+ event ContractSponsorSet(address indexed contractAddress, address sponsor);
+ event ContractSponsorshipConfirmed(
+ address indexed contractAddress,
+ address sponsor
+ );
+ event ContractSponsorRemoved(address indexed contractAddress);
+}
+
/// @title Magic contract, which allows users to reconfigure other contracts
/// @dev the ERC-165 identifier for this interface is 0xd77fab70
-interface ContractHelpers is Dummy, ERC165 {
+interface ContractHelpers is Dummy, ERC165, ContractHelpersEvents {
/// Get user, which deployed specified contract
/// @dev May return zero address in case if contract is deployed
/// using uniquenetwork evm-migration pallet, or using other terms not
tests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth--- a/tests/src/eth/collectionAdmin.test.ts
+++ b/tests/src/eth/collectionAdmin.test.ts
@@ -15,7 +15,7 @@
import {expect} from 'chai';
import privateKey from '../substrate/privateKey';
-import { UNIQUE } from '../util/helpers';
+import {UNIQUE} from '../util/helpers';
import {
createEthAccount,
createEthAccountWithBalance,
@@ -24,7 +24,6 @@
getCollectionAddressFromResult,
itWeb3,
recordEthFee,
- subToEth,
} from './util/helpers';
describe('Add collection admins', () => {
@@ -37,7 +36,7 @@
.send();
const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
- const newAdmin = await createEthAccount(web3);
+ const newAdmin = createEthAccount(web3);
const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
await collectionEvm.methods.addCollectionAdmin(newAdmin).send();
const adminList = await api.rpc.unique.adminlist(collectionId);
@@ -92,7 +91,7 @@
const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
await collectionEvm.methods.addCollectionAdmin(admin).send();
- const user = await createEthAccount(web3);
+ const user = createEthAccount(web3);
await expect(collectionEvm.methods.addCollectionAdmin(user).call({from: admin}))
.to.be.rejectedWith('NoPermission');
@@ -114,7 +113,7 @@
const notAdmin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
- const user = await createEthAccount(web3);
+ const user = createEthAccount(web3);
await expect(collectionEvm.methods.addCollectionAdmin(user).call({from: notAdmin}))
.to.be.rejectedWith('NoPermission');
@@ -175,7 +174,7 @@
.send();
const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
- const newAdmin = await createEthAccount(web3);
+ const newAdmin = createEthAccount(web3);
const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
await collectionEvm.methods.addCollectionAdmin(newAdmin).send();
{
@@ -226,7 +225,7 @@
const admin0 = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
await collectionEvm.methods.addCollectionAdmin(admin0).send();
- const admin1 = await createEthAccount(web3);
+ const admin1 = createEthAccount(web3);
await collectionEvm.methods.addCollectionAdmin(admin1).send();
await expect(collectionEvm.methods.removeCollectionAdmin(admin1).call({from: admin0}))
@@ -253,7 +252,7 @@
const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
await collectionEvm.methods.addCollectionAdmin(admin).send();
- const notAdmin = await createEthAccount(web3);
+ const notAdmin = createEthAccount(web3);
await expect(collectionEvm.methods.removeCollectionAdmin(admin).call({from: notAdmin}))
.to.be.rejectedWith('NoPermission');
tests/src/eth/collectionSponsoring.test.tsdiffbeforeafterboth--- a/tests/src/eth/collectionSponsoring.test.ts
+++ b/tests/src/eth/collectionSponsoring.test.ts
@@ -1,5 +1,5 @@
import {addToAllowListExpectSuccess, bigIntToSub, confirmSponsorshipExpectSuccess, createCollectionExpectSuccess, enablePublicMintingExpectSuccess, getDetailedCollectionInfo, setCollectionSponsorExpectSuccess} from '../util/helpers';
-import {itWeb3, createEthAccount, collectionIdToAddress, GAS_ARGS, normalizeEvents, createEthAccountWithBalance, evmCollectionHelpers, getCollectionAddressFromResult, evmCollection, ethBalanceViaSub, subToEth} from './util/helpers';
+import {itWeb3, createEthAccount, collectionIdToAddress, GAS_ARGS, normalizeEvents, createEthAccountWithBalance, evmCollectionHelpers, getCollectionAddressFromResult, evmCollection, ethBalanceViaSub} from './util/helpers';
import nonFungibleAbi from './nonFungibleAbi.json';
import {expect} from 'chai';
import {evmToAddress} from '@polkadot/util-crypto';
tests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth--- a/tests/src/eth/contractSponsoring.test.ts
+++ b/tests/src/eth/contractSponsoring.test.ts
@@ -15,6 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {expect} from 'chai';
+import { expectSubstrateEventsAtBlock } from '../util/helpers';
import {
contractHelpers,
createEthAccountWithBalance,
@@ -24,6 +25,7 @@
SponsoringMode,
createEthAccount,
ethBalanceViaSub,
+ normalizeEvents,
} from './util/helpers';
describe('Sponsoring EVM contracts', () => {
@@ -36,6 +38,41 @@
expect(await helpers.methods.hasSponsor(flipper.options.address).call()).to.be.true;
});
+ itWeb3('Set self sponsored events', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const flipper = await deployFlipper(web3, owner);
+ const helpers = contractHelpers(web3, owner);
+
+ const result = await helpers.methods.selfSponsoredEnable(flipper.options.address).send();
+ // console.log(result);
+ const ethEvents = normalizeEvents(result.events);
+ expect(ethEvents).to.be.deep.equal([
+ {
+ address: flipper.options.address,
+ event: 'ContractSponsorSet',
+ args: {
+ contractAddress: flipper.options.address,
+ sponsor: flipper.options.address,
+ },
+ },
+ {
+ address: flipper.options.address,
+ event: 'ContractSponsorshipConfirmed',
+ args: {
+ contractAddress: flipper.options.address,
+ sponsor: flipper.options.address,
+ },
+ },
+ ]);
+
+ await expectSubstrateEventsAtBlock(
+ api,
+ result.blockNumber,
+ 'evmContractHelpers',
+ ['ContractSponsorSet','ContractSponsorshipConfirmed'],
+ );
+ });
+
itWeb3('Self sponsored can not be set by the address that did not deployed the contract', async ({api, web3, privateKeyWrapper}) => {
const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const notOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
@@ -75,6 +112,33 @@
expect(await helpers.methods.hasPendingSponsor(flipper.options.address).call()).to.be.true;
});
+ itWeb3('Set sponsor event', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const flipper = await deployFlipper(web3, owner);
+ const helpers = contractHelpers(web3, owner);
+
+ const result = await helpers.methods.setSponsor(flipper.options.address, sponsor).send();
+ const events = normalizeEvents(result.events);
+ expect(events).to.be.deep.equal([
+ {
+ address: flipper.options.address,
+ event: 'ContractSponsorSet',
+ args: {
+ contractAddress: flipper.options.address,
+ sponsor: sponsor,
+ },
+ },
+ ]);
+
+ await expectSubstrateEventsAtBlock(
+ api,
+ result.blockNumber,
+ 'evmContractHelpers',
+ ['ContractSponsorSet'],
+ );
+ });
+
itWeb3('Sponsor can not be set by the address that did not deployed the contract', async ({api, web3, privateKeyWrapper}) => {
const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
@@ -97,6 +161,33 @@
expect(await helpers.methods.hasSponsor(flipper.options.address).call()).to.be.true;
});
+ itWeb3('Confirm sponsorship event', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const flipper = await deployFlipper(web3, owner);
+ const helpers = contractHelpers(web3, owner);
+ await expect(helpers.methods.setSponsor(flipper.options.address, sponsor).send()).to.be.not.rejected;
+ const result = await helpers.methods.confirmSponsorship(flipper.options.address).send({from: sponsor});
+ const events = normalizeEvents(result.events);
+ expect(events).to.be.deep.equal([
+ {
+ address: flipper.options.address,
+ event: 'ContractSponsorshipConfirmed',
+ args: {
+ contractAddress: flipper.options.address,
+ sponsor: sponsor,
+ },
+ },
+ ]);
+
+ await expectSubstrateEventsAtBlock(
+ api,
+ result.blockNumber,
+ 'evmContractHelpers',
+ ['ContractSponsorshipConfirmed'],
+ );
+ });
+
itWeb3('Sponsorship can not be confirmed by the address that not pending as sponsor', async ({api, web3, privateKeyWrapper}) => {
const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
@@ -160,6 +251,35 @@
expect(await helpers.methods.hasSponsor(flipper.options.address).call()).to.be.false;
});
+ itWeb3('Remove sponsor event', async ({api, web3, privateKeyWrapper}) => {
+ const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
+ const flipper = await deployFlipper(web3, owner);
+ const helpers = contractHelpers(web3, owner);
+
+ await helpers.methods.setSponsor(flipper.options.address, sponsor).send();
+ await helpers.methods.confirmSponsorship(flipper.options.address).send({from: sponsor});
+
+ const result = await helpers.methods.removeSponsor(flipper.options.address).send();
+ const events = normalizeEvents(result.events);
+ expect(events).to.be.deep.equal([
+ {
+ address: flipper.options.address,
+ event: 'ContractSponsorRemoved',
+ args: {
+ contractAddress: flipper.options.address,
+ },
+ },
+ ]);
+
+ await expectSubstrateEventsAtBlock(
+ api,
+ result.blockNumber,
+ 'evmContractHelpers',
+ ['ContractSponsorRemoved'],
+ );
+ });
+
itWeb3('Sponsor can not be removed by the address that did not deployed the contract', async ({api, web3, privateKeyWrapper}) => {
const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
const notOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
tests/src/eth/createNFTCollection.test.tsdiffbeforeafterboth--- a/tests/src/eth/createNFTCollection.test.ts
+++ b/tests/src/eth/createNFTCollection.test.ts
@@ -181,7 +181,7 @@
});
itWeb3('(!negative test!) Create collection (no funds)', async ({web3}) => {
- const owner = await createEthAccount(web3);
+ const owner = createEthAccount(web3);
const helper = evmCollectionHelpers(web3, owner);
const collectionName = 'A';
const description = 'A';
@@ -194,7 +194,7 @@
itWeb3('(!negative test!) Check owner', async ({api, web3, privateKeyWrapper}) => {
const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const notOwner = await createEthAccount(web3);
+ const notOwner = createEthAccount(web3);
const collectionHelpers = evmCollectionHelpers(web3, owner);
const result = await collectionHelpers.methods.createNonfungibleCollection('A', 'A', 'A').send();
const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);
tests/src/eth/createRFTCollection.test.tsdiffbeforeafterboth--- a/tests/src/eth/createRFTCollection.test.ts
+++ b/tests/src/eth/createRFTCollection.test.ts
@@ -189,7 +189,7 @@
});
itWeb3('(!negative test!) Create collection (no funds)', async ({web3}) => {
- const owner = await createEthAccount(web3);
+ const owner = createEthAccount(web3);
const helper = evmCollectionHelpers(web3, owner);
const collectionName = 'A';
const description = 'A';
@@ -202,7 +202,7 @@
itWeb3('(!negative test!) Check owner', async ({api, web3, privateKeyWrapper}) => {
const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const notOwner = await createEthAccount(web3);
+ const notOwner = createEthAccount(web3);
const collectionHelpers = evmCollectionHelpers(web3, owner);
const result = await collectionHelpers.methods.createRefungibleCollection('A', 'A', 'A').send();
const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);
tests/src/eth/nesting/nest.test.tsdiffbeforeafterboth--- a/tests/src/eth/nesting/nest.test.ts
+++ b/tests/src/eth/nesting/nest.test.ts
@@ -1,217 +1,220 @@
-import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
import {Contract} from 'web3-eth-contract';
-import {expect} from 'chai';
-import Web3 from 'web3';
-import {createEthAccountWithBalance, evmCollectionHelpers, GAS_ARGS, getCollectionAddressFromResult, itWeb3, tokenIdToAddress} from '../../eth/util/helpers';
-import nonFungibleAbi from '../nonFungibleAbi.json';
+import {itEth, EthUniqueHelper, usingEthPlaygrounds, expect} from '../util/playgrounds';
+
const createNestingCollection = async (
- api: ApiPromise,
- web3: Web3,
+ helper: EthUniqueHelper,
owner: string,
): Promise<{ collectionId: number, collectionAddress: string, contract: Contract }> => {
- const collectionHelper = evmCollectionHelpers(web3, owner);
-
- const result = await collectionHelper.methods
- .createNonfungibleCollection('A', 'B', 'C')
- .send();
- const {collectionIdAddress: collectionAddress, collectionId} = await getCollectionAddressFromResult(api, result);
+ const {collectionAddress, collectionId} = await helper.eth.createNonfungibleCollection(owner, 'A', 'B', 'C');
- const contract = new web3.eth.Contract(nonFungibleAbi as any, collectionAddress, {from: owner, ...GAS_ARGS});
+ const contract = helper.ethNativeContract.collection(collectionAddress, 'nft', owner);
await contract.methods.setCollectionNesting(true).send({from: owner});
return {collectionId, collectionAddress, contract};
};
-describe('Integration Test: EVM Nesting', () => {
- itWeb3('NFT: allows an Owner to nest/unnest their token', async ({api, web3, privateKeyWrapper}) => {
- const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const {collectionId, contract} = await createNestingCollection(api, web3, owner);
- // Create a token to be nested
- const targetNFTTokenId = await contract.methods.nextTokenId().call();
- await contract.methods.mint(
- owner,
- targetNFTTokenId,
- ).send({from: owner});
-
- const targetNftTokenAddress = tokenIdToAddress(collectionId, targetNFTTokenId);
-
- // Create a nested token
- const firstTokenId = await contract.methods.nextTokenId().call();
- await contract.methods.mint(
- targetNftTokenAddress,
- firstTokenId,
- ).send({from: owner});
+describe('EVM nesting tests group', () => {
+ let donor: IKeyringPair;
- expect(await contract.methods.ownerOf(firstTokenId).call()).to.be.equal(targetNftTokenAddress);
-
- // Create a token to be nested and nest
- const secondTokenId = await contract.methods.nextTokenId().call();
- await contract.methods.mint(
- owner,
- secondTokenId,
- ).send({from: owner});
-
- await contract.methods.transfer(targetNftTokenAddress, secondTokenId).send({from: owner});
-
- expect(await contract.methods.ownerOf(secondTokenId).call()).to.be.equal(targetNftTokenAddress);
-
- // Unnest token back
- await contract.methods.transferFrom(targetNftTokenAddress, owner, secondTokenId).send({from: owner});
- expect(await contract.methods.ownerOf(secondTokenId).call()).to.be.equal(owner);
+ before(async function() {
+ await usingEthPlaygrounds(async (helper, privateKey) => {
+ donor = privateKey('//Alice');
+ });
});
- itWeb3('NFT: allows an Owner to nest/unnest their token (Restricted nesting)', async ({api, web3, privateKeyWrapper}) => {
- const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
-
- const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(api, web3, owner);
- const {collectionAddress: collectionAddressB, contract: contractB} = await createNestingCollection(api, web3, owner);
- await contractA.methods.setCollectionNesting(true, [collectionAddressA, collectionAddressB]).send({from: owner});
-
- // Create a token to nest into
- const targetNftTokenId = await contractA.methods.nextTokenId().call();
- await contractA.methods.mint(
- owner,
- targetNftTokenId,
- ).send({from: owner});
- const nftTokenAddressA1 = tokenIdToAddress(collectionIdA, targetNftTokenId);
-
- // Create a token for nesting in the same collection as the target
- const nftTokenIdA = await contractA.methods.nextTokenId().call();
- await contractA.methods.mint(
- owner,
- nftTokenIdA,
- ).send({from: owner});
-
- // Create a token for nesting in a different collection
- const nftTokenIdB = await contractB.methods.nextTokenId().call();
- await contractB.methods.mint(
- owner,
- nftTokenIdB,
- ).send({from: owner});
-
- // Nest
- await contractA.methods.transfer(nftTokenAddressA1, nftTokenIdA).send({from: owner});
- expect(await contractA.methods.ownerOf(nftTokenIdA).call()).to.be.equal(nftTokenAddressA1);
-
- await contractB.methods.transfer(nftTokenAddressA1, nftTokenIdB).send({from: owner});
- expect(await contractB.methods.ownerOf(nftTokenIdB).call()).to.be.equal(nftTokenAddressA1);
- });
-});
-
-describe('Negative Test: EVM Nesting', async() => {
- itWeb3('NFT: disallows to nest token if nesting is disabled', async ({api, web3, privateKeyWrapper}) => {
- const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
-
- const {collectionId, contract} = await createNestingCollection(api, web3, owner);
- await contract.methods.setCollectionNesting(false).send({from: owner});
-
- // Create a token to nest into
- const targetNftTokenId = await contract.methods.nextTokenId().call();
- await contract.methods.mint(
- owner,
- targetNftTokenId,
- ).send({from: owner});
-
- const targetNftTokenAddress = tokenIdToAddress(collectionId, targetNftTokenId);
-
- // Create a token to nest
- const nftTokenId = await contract.methods.nextTokenId().call();
- await contract.methods.mint(
- owner,
- nftTokenId,
- ).send({from: owner});
-
- // Try to nest
- await expect(contract.methods
- .transfer(targetNftTokenAddress, nftTokenId)
- .call({from: owner})).to.be.rejectedWith('UserIsNotAllowedToNest');
- });
-
- itWeb3('NFT: disallows a non-Owner to nest someone else\'s token', async ({api, web3, privateKeyWrapper}) => {
- const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const malignant = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
-
- const {collectionId, contract} = await createNestingCollection(api, web3, owner);
-
- // Mint a token
- const targetTokenId = await contract.methods.nextTokenId().call();
- await contract.methods.mint(
- owner,
- targetTokenId,
- ).send({from: owner});
- const targetTokenAddress = tokenIdToAddress(collectionId, targetTokenId);
-
- // Mint a token belonging to a different account
- const tokenId = await contract.methods.nextTokenId().call();
- await contract.methods.mint(
- malignant,
- tokenId,
- ).send({from: owner});
-
- // Try to nest one token in another as a non-owner account
- await expect(contract.methods
- .transfer(targetTokenAddress, tokenId)
- .call({from: malignant})).to.be.rejectedWith('UserIsNotAllowedToNest');
- });
-
- itWeb3('NFT: disallows a non-Owner to nest someone else\'s token (Restricted nesting)', async ({api, web3, privateKeyWrapper}) => {
- const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const malignant = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
-
- const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(api, web3, owner);
- const {collectionAddress: collectionAddressB, contract: contractB} = await createNestingCollection(api, web3, owner);
-
- await contractA.methods.setCollectionNesting(true, [collectionAddressA, collectionAddressB]).send({from: owner});
-
- // Create a token in one collection
- const nftTokenIdA = await contractA.methods.nextTokenId().call();
- await contractA.methods.mint(
- owner,
- nftTokenIdA,
- ).send({from: owner});
- const nftTokenAddressA = tokenIdToAddress(collectionIdA, nftTokenIdA);
-
- // Create a token in another collection belonging to someone else
- const nftTokenIdB = await contractB.methods.nextTokenId().call();
- await contractB.methods.mint(
- malignant,
- nftTokenIdB,
- ).send({from: owner});
-
- // Try to drag someone else's token into the other collection and nest
- await expect(contractB.methods
- .transfer(nftTokenAddressA, nftTokenIdB)
- .call({from: malignant})).to.be.rejectedWith('UserIsNotAllowedToNest');
+ describe('Integration Test: EVM Nesting', () => {
+ itEth('NFT: allows an Owner to nest/unnest their token', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const {collectionId, contract} = await createNestingCollection(helper, owner);
+
+ // Create a token to be nested
+ const targetNFTTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ targetNFTTokenId,
+ ).send({from: owner});
+
+ const targetNftTokenAddress = helper.ethAddress.fromTokenId(collectionId, targetNFTTokenId);
+
+ // Create a nested token
+ const firstTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ targetNftTokenAddress,
+ firstTokenId,
+ ).send({from: owner});
+
+ expect(await contract.methods.ownerOf(firstTokenId).call()).to.be.equal(targetNftTokenAddress);
+
+ // Create a token to be nested and nest
+ const secondTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ secondTokenId,
+ ).send({from: owner});
+
+ await contract.methods.transfer(targetNftTokenAddress, secondTokenId).send({from: owner});
+
+ expect(await contract.methods.ownerOf(secondTokenId).call()).to.be.equal(targetNftTokenAddress);
+
+ // Unnest token back
+ await contract.methods.transferFrom(targetNftTokenAddress, owner, secondTokenId).send({from: owner});
+ expect(await contract.methods.ownerOf(secondTokenId).call()).to.be.equal(owner);
+ });
+
+ itEth('NFT: allows an Owner to nest/unnest their token (Restricted nesting)', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+
+ const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(helper, owner);
+ const {collectionAddress: collectionAddressB, contract: contractB} = await createNestingCollection(helper, owner);
+ await contractA.methods.setCollectionNesting(true, [collectionAddressA, collectionAddressB]).send({from: owner});
+
+ // Create a token to nest into
+ const targetNftTokenId = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ targetNftTokenId,
+ ).send({from: owner});
+ const nftTokenAddressA1 = helper.ethAddress.fromTokenId(collectionIdA, targetNftTokenId);
+
+ // Create a token for nesting in the same collection as the target
+ const nftTokenIdA = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ nftTokenIdA,
+ ).send({from: owner});
+
+ // Create a token for nesting in a different collection
+ const nftTokenIdB = await contractB.methods.nextTokenId().call();
+ await contractB.methods.mint(
+ owner,
+ nftTokenIdB,
+ ).send({from: owner});
+
+ // Nest
+ await contractA.methods.transfer(nftTokenAddressA1, nftTokenIdA).send({from: owner});
+ expect(await contractA.methods.ownerOf(nftTokenIdA).call()).to.be.equal(nftTokenAddressA1);
+
+ await contractB.methods.transfer(nftTokenAddressA1, nftTokenIdB).send({from: owner});
+ expect(await contractB.methods.ownerOf(nftTokenIdB).call()).to.be.equal(nftTokenAddressA1);
+ });
});
- itWeb3('NFT: disallows to nest token in an unlisted collection', async ({api, web3, privateKeyWrapper}) => {
- const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
-
- const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(api, web3, owner);
- const {contract: contractB} = await createNestingCollection(api, web3, owner);
-
- await contractA.methods.setCollectionNesting(true, [collectionAddressA]).send({from: owner});
-
- // Create a token in one collection
- const nftTokenIdA = await contractA.methods.nextTokenId().call();
- await contractA.methods.mint(
- owner,
- nftTokenIdA,
- ).send({from: owner});
- const nftTokenAddressA = tokenIdToAddress(collectionIdA, nftTokenIdA);
-
- // Create a token in another collection
- const nftTokenIdB = await contractB.methods.nextTokenId().call();
- await contractB.methods.mint(
- owner,
- nftTokenIdB,
- ).send({from: owner});
-
- // Try to nest into a token in the other collection, disallowed in the first
- await expect(contractB.methods
- .transfer(nftTokenAddressA, nftTokenIdB)
- .call()).to.be.rejectedWith('SourceCollectionIsNotAllowedToNest');
+ describe('Negative Test: EVM Nesting', async() => {
+ itEth('NFT: disallows to nest token if nesting is disabled', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+
+ const {collectionId, contract} = await createNestingCollection(helper, owner);
+ await contract.methods.setCollectionNesting(false).send({from: owner});
+
+ // Create a token to nest into
+ const targetNftTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ targetNftTokenId,
+ ).send({from: owner});
+
+ const targetNftTokenAddress = helper.ethAddress.fromTokenId(collectionId, targetNftTokenId);
+
+ // Create a token to nest
+ const nftTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ nftTokenId,
+ ).send({from: owner});
+
+ // Try to nest
+ await expect(contract.methods
+ .transfer(targetNftTokenAddress, nftTokenId)
+ .call({from: owner})).to.be.rejectedWith('UserIsNotAllowedToNest');
+ });
+
+ itEth('NFT: disallows a non-Owner to nest someone else\'s token', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const malignant = await helper.eth.createAccountWithBalance(donor);
+
+ const {collectionId, contract} = await createNestingCollection(helper, owner);
+
+ // Mint a token
+ const targetTokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ owner,
+ targetTokenId,
+ ).send({from: owner});
+ const targetTokenAddress = helper.ethAddress.fromTokenId(collectionId, targetTokenId);
+
+ // Mint a token belonging to a different account
+ const tokenId = await contract.methods.nextTokenId().call();
+ await contract.methods.mint(
+ malignant,
+ tokenId,
+ ).send({from: owner});
+
+ // Try to nest one token in another as a non-owner account
+ await expect(contract.methods
+ .transfer(targetTokenAddress, tokenId)
+ .call({from: malignant})).to.be.rejectedWith('UserIsNotAllowedToNest');
+ });
+
+ itEth('NFT: disallows a non-Owner to nest someone else\'s token (Restricted nesting)', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const malignant = await helper.eth.createAccountWithBalance(donor);
+
+ const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(helper, owner);
+ const {collectionAddress: collectionAddressB, contract: contractB} = await createNestingCollection(helper, owner);
+
+ await contractA.methods.setCollectionNesting(true, [collectionAddressA, collectionAddressB]).send({from: owner});
+
+ // Create a token in one collection
+ const nftTokenIdA = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ nftTokenIdA,
+ ).send({from: owner});
+ const nftTokenAddressA = helper.ethAddress.fromTokenId(collectionIdA, nftTokenIdA);
+
+ // Create a token in another collection belonging to someone else
+ const nftTokenIdB = await contractB.methods.nextTokenId().call();
+ await contractB.methods.mint(
+ malignant,
+ nftTokenIdB,
+ ).send({from: owner});
+
+ // Try to drag someone else's token into the other collection and nest
+ await expect(contractB.methods
+ .transfer(nftTokenAddressA, nftTokenIdB)
+ .call({from: malignant})).to.be.rejectedWith('UserIsNotAllowedToNest');
+ });
+
+ itEth('NFT: disallows to nest token in an unlisted collection', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+
+ const {collectionId: collectionIdA, collectionAddress: collectionAddressA, contract: contractA} = await createNestingCollection(helper, owner);
+ const {contract: contractB} = await createNestingCollection(helper, owner);
+
+ await contractA.methods.setCollectionNesting(true, [collectionAddressA]).send({from: owner});
+
+ // Create a token in one collection
+ const nftTokenIdA = await contractA.methods.nextTokenId().call();
+ await contractA.methods.mint(
+ owner,
+ nftTokenIdA,
+ ).send({from: owner});
+ const nftTokenAddressA = helper.ethAddress.fromTokenId(collectionIdA, nftTokenIdA);
+
+ // Create a token in another collection
+ const nftTokenIdB = await contractB.methods.nextTokenId().call();
+ await contractB.methods.mint(
+ owner,
+ nftTokenIdB,
+ ).send({from: owner});
+
+ // Try to nest into a token in the other collection, disallowed in the first
+ await expect(contractB.methods
+ .transfer(nftTokenAddressA, nftTokenIdB)
+ .call()).to.be.rejectedWith('SourceCollectionIsNotAllowedToNest');
+ });
});
});
tests/src/eth/payable.test.tsdiffbeforeafterboth--- a/tests/src/eth/payable.test.ts
+++ b/tests/src/eth/payable.test.ts
@@ -14,97 +14,91 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {expect} from 'chai';
-import {submitTransactionAsync} from '../substrate/substrate-api';
-import {createEthAccountWithBalance, deployCollector, GAS_ARGS, itWeb3, subToEth, transferBalanceToEth} from './util/helpers';
-import {evmToAddress} from '@polkadot/util-crypto';
-import {getGenericResult, UNIQUE} from '../util/helpers';
-import {getBalanceSingle, transferBalanceExpectSuccess} from '../substrate/get-balance';
+import {IKeyringPair} from '@polkadot/types/types';
+
+import {itEth, expect, usingEthPlaygrounds} from './util/playgrounds';
describe('EVM payable contracts', () => {
- itWeb3('Evm contract can receive wei from eth account', async ({api, web3, privateKeyWrapper}) => {
- const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const contract = await deployCollector(web3, deployer);
+ let donor: IKeyringPair;
- await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: '10000', ...GAS_ARGS});
+ before(async function() {
+ await usingEthPlaygrounds(async (helper, privateKey) => {
+ donor = privateKey('//Alice');
+ });
+ });
+
+ itEth('Evm contract can receive wei from eth account', async ({helper}) => {
+ const deployer = await helper.eth.createAccountWithBalance(donor);
+ const contract = await helper.eth.deployCollectorContract(deployer);
+
+ const web3 = helper.getWeb3();
+
+ await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: '10000', gas: helper.eth.DEFAULT_GAS});
expect(await contract.methods.getCollected().call()).to.be.equal('10000');
});
- itWeb3('Evm contract can receive wei from substrate account', async ({api, web3, privateKeyWrapper}) => {
- const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const contract = await deployCollector(web3, deployer);
- const alice = privateKeyWrapper('//Alice');
+ itEth('Evm contract can receive wei from substrate account', async ({helper}) => {
+ const deployer = await helper.eth.createAccountWithBalance(donor);
+ const contract = await helper.eth.deployCollectorContract(deployer);
+ const [alice] = await helper.arrange.createAccounts([10n], donor);
+
+ const weiCount = '10000';
// Transaction fee/value will be payed from subToEth(sender) evm balance,
// which is backed by evmToAddress(subToEth(sender)) substrate balance
- await transferBalanceToEth(api, alice, subToEth(alice.address));
+ await helper.eth.transferBalanceFromSubstrate(alice, helper.address.substrateToEth(alice.address), 5n);
+
- {
- const tx = api.tx.evm.call(
- subToEth(alice.address),
- contract.options.address,
- contract.methods.giveMoney().encodeABI(),
- '10000',
- GAS_ARGS.gas,
- await web3.eth.getGasPrice(),
- null,
- null,
- [],
- );
- const events = await submitTransactionAsync(alice, tx);
- const result = getGenericResult(events);
- expect(result.success).to.be.true;
- }
+ await helper.eth.callEVM(alice, contract.options.address, contract.methods.giveMoney().encodeABI(), weiCount);
- expect(await contract.methods.getCollected().call()).to.be.equal('10000');
+ expect(await contract.methods.getCollected().call()).to.be.equal(weiCount);
});
// We can't handle sending balance to backing storage of evm balance, because evmToAddress operation is irreversible
- itWeb3('Wei sent directly to backing storage of evm contract balance is unaccounted', async({api, web3, privateKeyWrapper}) => {
- const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const contract = await deployCollector(web3, deployer);
- const alice = privateKeyWrapper('//Alice');
+ itEth('Wei sent directly to backing storage of evm contract balance is unaccounted', async({helper}) => {
+ const deployer = await helper.eth.createAccountWithBalance(donor);
+ const contract = await helper.eth.deployCollectorContract(deployer);
+ const [alice] = await helper.arrange.createAccounts([10n], donor);
+
+ const weiCount = 10_000n;
- await transferBalanceExpectSuccess(api, alice, evmToAddress(contract.options.address), '10000');
+ await helper.eth.transferBalanceFromSubstrate(alice, contract.options.address, weiCount, false);
- expect(await contract.methods.getUnaccounted().call()).to.be.equal('10000');
+ expect(await contract.methods.getUnaccounted().call()).to.be.equal(weiCount.toString());
});
- itWeb3('Balance can be retrieved from evm contract', async({api, web3, privateKeyWrapper}) => {
- const FEE_BALANCE = 1000n * UNIQUE;
- const CONTRACT_BALANCE = 1n * UNIQUE;
+ itEth('Balance can be retrieved from evm contract', async({helper, privateKey}) => {
+ const FEE_BALANCE = 10n * helper.balance.getOneTokenNominal();
+ const CONTRACT_BALANCE = 1n * helper.balance.getOneTokenNominal();
+
+ const deployer = await helper.eth.createAccountWithBalance(donor);
+ const contract = await helper.eth.deployCollectorContract(deployer);
+ const [alice] = await helper.arrange.createAccounts([20n], donor);
- const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
- const contract = await deployCollector(web3, deployer);
- const alice = privateKeyWrapper('//Alice');
+ const web3 = helper.getWeb3();
- await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: CONTRACT_BALANCE.toString(), ...GAS_ARGS});
+ await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: CONTRACT_BALANCE.toString(), gas: helper.eth.DEFAULT_GAS});
- const receiver = privateKeyWrapper(`//Receiver${Date.now()}`);
+ const receiver = privateKey(`//Receiver${Date.now()}`);
// First receive balance on eth balance of bob
{
- const ethReceiver = subToEth(receiver.address);
+ const ethReceiver = helper.address.substrateToEth(receiver.address);
expect(await web3.eth.getBalance(ethReceiver)).to.be.equal('0');
await contract.methods.withdraw(ethReceiver).send({from: deployer});
expect(await web3.eth.getBalance(ethReceiver)).to.be.equal(CONTRACT_BALANCE.toString());
}
// Some balance is required to pay fee for evm.withdraw call
- await transferBalanceExpectSuccess(api, alice, receiver.address, FEE_BALANCE.toString());
+ await helper.balance.transferToSubstrate(alice, receiver.address, FEE_BALANCE);
+ // await transferBalanceExpectSuccess(api, alice, receiver.address, FEE_BALANCE.toString());
// Withdraw balance from eth to substrate
{
- const initialReceiverBalance = await getBalanceSingle(api, receiver.address);
- const tx = api.tx.evm.withdraw(
- subToEth(receiver.address),
- CONTRACT_BALANCE.toString(),
- );
- const events = await submitTransactionAsync(receiver, tx);
- const result = getGenericResult(events);
- expect(result.success).to.be.true;
- const finalReceiverBalance = await getBalanceSingle(api, receiver.address);
+ const initialReceiverBalance = await helper.balance.getSubstrate(receiver.address);
+ await helper.executeExtrinsic(receiver, 'api.tx.evm.withdraw', [helper.address.substrateToEth(receiver.address), CONTRACT_BALANCE.toString()], true);
+ const finalReceiverBalance = await helper.balance.getSubstrate(receiver.address);
expect(finalReceiverBalance > initialReceiverBalance).to.be.true;
}
tests/src/eth/reFungibleToken.test.tsdiffbeforeafterboth--- a/tests/src/eth/reFungibleToken.test.ts
+++ b/tests/src/eth/reFungibleToken.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {approve, createCollection, createRefungibleToken, transfer, transferFrom, UNIQUE, requirePallets, Pallets} from '../util/helpers';
-import {collectionIdFromAddress, collectionIdToAddress, createEthAccount, createEthAccountWithBalance, createNonfungibleCollection, createRefungibleCollection, evmCollection, evmCollectionHelpers, getCollectionAddressFromResult, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, tokenIdToAddress, transferBalanceToEth, uniqueNFT, uniqueRefungible, uniqueRefungibleToken} from './util/helpers';
+import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, createRefungibleCollection, evmCollection, evmCollectionHelpers, getCollectionAddressFromResult, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, tokenIdToAddress, transferBalanceToEth, uniqueRefungible, uniqueRefungibleToken} from './util/helpers';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
tests/src/eth/util/contractHelpersAbi.jsondiffbeforeafterboth--- a/tests/src/eth/util/contractHelpersAbi.json
+++ b/tests/src/eth/util/contractHelpersAbi.json
@@ -1,5 +1,56 @@
[
{
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "ContractSponsorRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sponsor",
+ "type": "address"
+ }
+ ],
+ "name": "ContractSponsorSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sponsor",
+ "type": "address"
+ }
+ ],
+ "name": "ContractSponsorshipConfirmed",
+ "type": "event"
+ },
+ {
"inputs": [
{
"internalType": "address",
tests/src/eth/util/playgrounds/index.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/eth/util/playgrounds/index.ts
@@ -0,0 +1,49 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+import {IKeyringPair} from '@polkadot/types/types';
+
+import config from '../../../config';
+
+import {EthUniqueHelper} from './unique.dev';
+import {SilentLogger, SilentConsole} from '../../../util/playgrounds/unique.dev';
+
+export {EthUniqueHelper} from './unique.dev';
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+chai.use(chaiAsPromised);
+export const expect = chai.expect;
+
+export const usingEthPlaygrounds = async (code: (helper: EthUniqueHelper, privateKey: (seed: string) => IKeyringPair) => Promise<void>) => {
+ const silentConsole = new SilentConsole();
+ silentConsole.enable();
+
+ const helper = new EthUniqueHelper(new SilentLogger());
+
+ try {
+ await helper.connect(config.substrateUrl);
+ await helper.connectWeb3(config.substrateUrl);
+ const ss58Format = helper.chain.getChainProperties().ss58Format;
+ const privateKey = (seed: string) => helper.util.fromSeed(seed, ss58Format);
+ await code(helper, privateKey);
+ }
+ finally {
+ await helper.disconnect();
+ await helper.disconnectWeb3();
+ silentConsole.disable();
+ }
+};
+
+export async function itEth(name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: (seed: string) => IKeyringPair }) => any, opts: { only?: boolean, skip?: boolean } = {}) {
+ let i: any = it;
+ if (opts.only) i = i.only;
+ else if (opts.skip) i = i.skip;
+ i(name, async () => {
+ await usingEthPlaygrounds(async (helper, privateKey) => {
+ await cb({helper, privateKey});
+ });
+ });
+}
+itEth.only = (name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: (seed: string) => IKeyringPair }) => any) => itEth(name, cb, {only: true});
+itEth.skip = (name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: (seed: string) => IKeyringPair }) => any) => itEth(name, cb, {skip: true});
\ No newline at end of file
tests/src/eth/util/playgrounds/types.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/eth/util/playgrounds/types.ts
@@ -0,0 +1,9 @@
+export interface ContractImports {
+ solPath: string;
+ fsPath: string;
+}
+
+export interface CompiledContract {
+ abi: any;
+ object: string;
+}
\ No newline at end of file
tests/src/eth/util/playgrounds/unique.dev.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/eth/util/playgrounds/unique.dev.ts
@@ -0,0 +1,268 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+/* eslint-disable function-call-argument-newline */
+
+import {readFile} from 'fs/promises';
+
+import Web3 from 'web3';
+import {WebsocketProvider} from 'web3-core';
+import {Contract} from 'web3-eth-contract';
+
+import * as solc from 'solc';
+
+import {evmToAddress} from '@polkadot/util-crypto';
+import {IKeyringPair} from '@polkadot/types/types';
+
+import {DevUniqueHelper} from '../../../util/playgrounds/unique.dev';
+
+import {ContractImports, CompiledContract} from './types';
+
+// Native contracts ABI
+import collectionHelpersAbi from '../../collectionHelpersAbi.json';
+import fungibleAbi from '../../fungibleAbi.json';
+import nonFungibleAbi from '../../nonFungibleAbi.json';
+import refungibleAbi from '../../reFungibleAbi.json';
+import refungibleTokenAbi from '../../reFungibleTokenAbi.json';
+import contractHelpersAbi from './../contractHelpersAbi.json';
+
+class EthGroupBase {
+ helper: EthUniqueHelper;
+
+ constructor(helper: EthUniqueHelper) {
+ this.helper = helper;
+ }
+}
+
+
+class ContractGroup extends EthGroupBase {
+ async findImports(imports?: ContractImports[]){
+ if(!imports) return function(path: string) {
+ return {error: `File not found: ${path}`};
+ };
+
+ const knownImports = {} as any;
+ for(const imp of imports) {
+ knownImports[imp.solPath] = (await readFile(imp.fsPath)).toString();
+ }
+
+ return function(path: string) {
+ if(knownImports.hasOwnPropertyDescriptor(path)) return {contents: knownImports[path]};
+ return {error: `File not found: ${path}`};
+ };
+ }
+
+ async compile(name: string, src: string, imports?: ContractImports[]): Promise<CompiledContract> {
+ const out = JSON.parse(solc.compile(JSON.stringify({
+ language: 'Solidity',
+ sources: {
+ [`${name}.sol`]: {
+ content: src,
+ },
+ },
+ settings: {
+ outputSelection: {
+ '*': {
+ '*': ['*'],
+ },
+ },
+ },
+ }), {import: await this.findImports(imports)})).contracts[`${name}.sol`][name];
+
+ return {
+ abi: out.abi,
+ object: '0x' + out.evm.bytecode.object,
+ };
+ }
+
+ async deployByCode(signer: string, name: string, src: string, imports?: ContractImports[]): Promise<Contract> {
+ const compiledContract = await this.compile(name, src, imports);
+ return this.deployByAbi(signer, compiledContract.abi, compiledContract.object);
+ }
+
+ async deployByAbi(signer: string, abi: any, object: string): Promise<Contract> {
+ const web3 = this.helper.getWeb3();
+ const contract = new web3.eth.Contract(abi, undefined, {
+ data: object,
+ from: signer,
+ gas: this.helper.eth.DEFAULT_GAS,
+ });
+ return await contract.deploy({data: object}).send({from: signer});
+ }
+
+}
+
+class NativeContractGroup extends EthGroupBase {
+
+ contractHelpers(caller: string): Contract {
+ const web3 = this.helper.getWeb3();
+ return new web3.eth.Contract(contractHelpersAbi as any, '0x842899ECF380553E8a4de75bF534cdf6fBF64049', {from: caller, gas: this.helper.eth.DEFAULT_GAS});
+ }
+
+ collectionHelpers(caller: string) {
+ const web3 = this.helper.getWeb3();
+ return new web3.eth.Contract(collectionHelpersAbi as any, '0x6c4e9fe1ae37a41e93cee429e8e1881abdcbb54f', {from: caller, gas: this.helper.eth.DEFAULT_GAS});
+ }
+
+ collection(address: string, mode: 'nft' | 'rft' | 'ft', caller?: string): Contract {
+ const abi = {
+ 'nft': nonFungibleAbi,
+ 'rft': refungibleAbi,
+ 'ft': fungibleAbi,
+ }[mode];
+ const web3 = this.helper.getWeb3();
+ return new web3.eth.Contract(abi as any, address, {gas: this.helper.eth.DEFAULT_GAS, ...(caller ? {from: caller} : {})});
+ }
+
+ rftTokenByAddress(address: string, caller?: string): Contract {
+ const web3 = this.helper.getWeb3();
+ return new web3.eth.Contract(refungibleTokenAbi as any, address, {gas: this.helper.eth.DEFAULT_GAS, ...(caller ? {from: caller} : {})});
+ }
+
+ rftToken(collectionId: number, tokenId: number, caller?: string): Contract {
+ return this.rftTokenByAddress(this.helper.ethAddress.fromTokenId(collectionId, tokenId), caller);
+ }
+}
+
+
+class EthGroup extends EthGroupBase {
+ DEFAULT_GAS = 2_500_000;
+
+ createAccount() {
+ const web3 = this.helper.getWeb3();
+ const account = web3.eth.accounts.create();
+ web3.eth.accounts.wallet.add(account.privateKey);
+ return account.address;
+ }
+
+ async createAccountWithBalance(donor: IKeyringPair, amount=1000n) {
+ const account = this.createAccount();
+ await this.transferBalanceFromSubstrate(donor, account, amount);
+
+ return account;
+ }
+
+ async transferBalanceFromSubstrate(donor: IKeyringPair, recepient: string, amount=1000n, inTokens=true) {
+ return await this.helper.balance.transferToSubstrate(donor, evmToAddress(recepient), amount * (inTokens ? this.helper.balance.getOneTokenNominal() : 1n));
+ }
+
+ async callEVM(signer: IKeyringPair, contractAddress: string, abi: any, value: string, gasLimit?: number) {
+ if(!gasLimit) gasLimit = this.DEFAULT_GAS;
+ const web3 = this.helper.getWeb3();
+ const gasPrice = await web3.eth.getGasPrice();
+ // TODO: check execution status
+ await this.helper.executeExtrinsic(
+ signer,
+ 'api.tx.evm.call', [this.helper.address.substrateToEth(signer.address), contractAddress, abi, value, gasLimit, gasPrice, null, null, []],
+ true,
+ );
+ }
+
+ async createNonfungibleCollection(signer: string, name: string, description: string, tokenPrefix: string): Promise<{collectionId: number, collectionAddress: string}> {
+ const collectionHelper = this.helper.ethNativeContract.collectionHelpers(signer);
+
+ const result = await collectionHelper.methods.createNonfungibleCollection(name, description, tokenPrefix).send();
+
+ const collectionAddress = this.helper.ethAddress.normalizeAddress(result.events.CollectionCreated.returnValues.collectionId);
+ const collectionId = this.helper.ethAddress.extractCollectionId(collectionAddress);
+
+ return {collectionId, collectionAddress};
+ }
+
+ async deployCollectorContract(signer: string): Promise<Contract> {
+ return await this.helper.ethContract.deployByCode(signer, 'Collector', `
+ // SPDX-License-Identifier: UNLICENSED
+ pragma solidity ^0.8.6;
+
+ contract Collector {
+ uint256 collected;
+ fallback() external payable {
+ giveMoney();
+ }
+ function giveMoney() public payable {
+ collected += msg.value;
+ }
+ function getCollected() public view returns (uint256) {
+ return collected;
+ }
+ function getUnaccounted() public view returns (uint256) {
+ return address(this).balance - collected;
+ }
+
+ function withdraw(address payable target) public {
+ target.transfer(collected);
+ collected = 0;
+ }
+ }
+ `);
+ }
+}
+
+
+class EthAddressGroup extends EthGroupBase {
+ extractCollectionId(address: string): number {
+ if (!(address.length === 42 || address.length === 40)) throw new Error('address wrong format');
+ return parseInt(address.substr(address.length - 8), 16);
+ }
+
+ fromCollectionId(collectionId: number): string {
+ if (collectionId >= 0xffffffff || collectionId < 0) throw new Error('collectionId overflow');
+ return Web3.utils.toChecksumAddress(`0x17c4e6453cc49aaaaeaca894e6d9683e${collectionId.toString(16).padStart(8, '0')}`);
+ }
+
+ extractTokenId(address: string): {collectionId: number, tokenId: number} {
+ if (!address.startsWith('0x'))
+ throw 'address not starts with "0x"';
+ if (address.length > 42)
+ throw 'address length is more than 20 bytes';
+ return {
+ collectionId: Number('0x' + address.substring(address.length - 16, address.length - 8)),
+ tokenId: Number('0x' + address.substring(address.length - 8)),
+ };
+ }
+
+ fromTokenId(collectionId: number, tokenId: number): string {
+ return this.helper.util.getNestingTokenAddress(collectionId, tokenId);
+ }
+
+ normalizeAddress(address: string): string {
+ return '0x' + address.substring(address.length - 40);
+ }
+}
+
+
+export class EthUniqueHelper extends DevUniqueHelper {
+ web3: Web3 | null = null;
+ web3Provider: WebsocketProvider | null = null;
+
+ eth: EthGroup;
+ ethAddress: EthAddressGroup;
+ ethNativeContract: NativeContractGroup;
+ ethContract: ContractGroup;
+
+ constructor(logger: { log: (msg: any, level: any) => void, level: any }) {
+ super(logger);
+ this.eth = new EthGroup(this);
+ this.ethAddress = new EthAddressGroup(this);
+ this.ethNativeContract = new NativeContractGroup(this);
+ this.ethContract = new ContractGroup(this);
+ }
+
+ getWeb3(): Web3 {
+ if(this.web3 === null) throw Error('Web3 not connected');
+ return this.web3;
+ }
+
+ async connectWeb3(wsEndpoint: string) {
+ if(this.web3 !== null) return;
+ this.web3Provider = new Web3.providers.WebsocketProvider(wsEndpoint);
+ this.web3 = new Web3(this.web3Provider);
+ }
+
+ async disconnectWeb3() {
+ if(this.web3 === null) return;
+ this.web3Provider?.connection.close();
+ this.web3 = null;
+ }
+}
+
\ No newline at end of file
tests/src/interfaces/appPromotion/definitions.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/appPromotion/definitions.ts
@@ -0,0 +1,58 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+type RpcParam = {
+ name: string;
+ type: string;
+ isOptional?: true;
+};
+
+const CROSS_ACCOUNT_ID_TYPE = 'PalletEvmAccountBasicCrossAccountIdRepr';
+
+const crossAccountParam = (name = 'account') => ({name, type: CROSS_ACCOUNT_ID_TYPE});
+const atParam = {name: 'at', type: 'Hash', isOptional: true};
+
+const fun = (description: string, params: RpcParam[], type: string) => ({
+ description,
+ params: [...params, atParam],
+ type,
+});
+
+export default {
+ types: {},
+ rpc: {
+ totalStaked: fun(
+ 'Returns the total amount of staked tokens',
+ [{name: 'staker', type: CROSS_ACCOUNT_ID_TYPE, isOptional: true}],
+ 'u128',
+ ),
+ totalStakedPerBlock: fun(
+ 'Returns the total amount of staked tokens per block when staked',
+ [crossAccountParam('staker')],
+ 'Vec<(u32, u128)>',
+ ),
+ pendingUnstake: fun(
+ 'Returns the total amount of unstaked tokens',
+ [{name: 'staker', type: CROSS_ACCOUNT_ID_TYPE, isOptional: true}],
+ 'u128',
+ ),
+ pendingUnstakePerBlock: fun(
+ 'Returns the total amount of unstaked tokens per block',
+ [crossAccountParam('staker')],
+ 'Vec<(u32, u128)>',
+ ),
+ },
+};
tests/src/interfaces/appPromotion/index.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/appPromotion/index.ts
@@ -0,0 +1,4 @@
+// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
+/* eslint-disable */
+
+export * from './types';
tests/src/interfaces/appPromotion/types.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/interfaces/appPromotion/types.ts
@@ -0,0 +1,4 @@
+// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
+/* eslint-disable */
+
+export type PHANTOM_APPPROMOTION = 'appPromotion';
tests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-consts.ts
+++ b/tests/src/interfaces/augment-api-consts.ts
@@ -8,13 +8,39 @@
import type { ApiTypes, AugmentedConst } from '@polkadot/api-base/types';
import type { Option, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
import type { Codec } from '@polkadot/types-codec/types';
-import type { Permill } from '@polkadot/types/interfaces/runtime';
+import type { Perbill, Permill } from '@polkadot/types/interfaces/runtime';
import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion } from '@polkadot/types/lookup';
export type __AugmentedConst<ApiType extends ApiTypes> = AugmentedConst<ApiType>;
declare module '@polkadot/api-base/types/consts' {
interface AugmentedConsts<ApiType extends ApiTypes> {
+ appPromotion: {
+ /**
+ * Rate of return for interval in blocks defined in `RecalculationInterval`.
+ **/
+ intervalIncome: Perbill & AugmentedConst<ApiType>;
+ /**
+ * Decimals for the `Currency`.
+ **/
+ nominal: u128 & AugmentedConst<ApiType>;
+ /**
+ * The app's pallet id, used for deriving its sovereign account ID.
+ **/
+ palletId: FrameSupportPalletId & AugmentedConst<ApiType>;
+ /**
+ * In parachain blocks.
+ **/
+ pendingInterval: u32 & AugmentedConst<ApiType>;
+ /**
+ * In relay blocks.
+ **/
+ recalculationInterval: u32 & AugmentedConst<ApiType>;
+ /**
+ * Generic const
+ **/
+ [key: string]: Codec;
+ };
balances: {
/**
* The minimum amount required to keep an account open.
tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -11,6 +11,36 @@
declare module '@polkadot/api-base/types/errors' {
interface AugmentedErrors<ApiType extends ApiTypes> {
+ appPromotion: {
+ /**
+ * Error due to action requiring admin to be set.
+ **/
+ AdminNotSet: AugmentedError<ApiType>;
+ /**
+ * Errors caused by incorrect actions with a locked balance.
+ **/
+ IncorrectLockedBalanceOperation: AugmentedError<ApiType>;
+ /**
+ * No permission to perform an action.
+ **/
+ NoPermission: AugmentedError<ApiType>;
+ /**
+ * Insufficient funds to perform an action.
+ **/
+ NotSufficientFunds: AugmentedError<ApiType>;
+ /**
+ * Occurs when a pending unstake cannot be added in this block. PENDING_LIMIT_PER_BLOCK` limits exceeded.
+ **/
+ PendingForBlockOverflow: AugmentedError<ApiType>;
+ /**
+ * The error is due to the fact that the collection/contract must already be sponsored in order to perform the action.
+ **/
+ SponsorNotSet: AugmentedError<ApiType>;
+ /**
+ * Generic error
+ **/
+ [key: string]: AugmentedError<ApiType>;
+ };
balances: {
/**
* Beneficiary account must pre-exist
@@ -265,8 +295,12 @@
};
evmContractHelpers: {
/**
- * This method is only executable by owner
+ * No pending sponsor for contract.
**/
+ NoPendingSponsor: AugmentedError<ApiType>;
+ /**
+ * This method is only executable by contract owner
+ **/
NoPermission: AugmentedError<ApiType>;
/**
* Generic error
@@ -274,7 +308,13 @@
[key: string]: AugmentedError<ApiType>;
};
evmMigration: {
+ /**
+ * Migration of this account is not yet started, or already finished.
+ **/
AccountIsNotMigrating: AugmentedError<ApiType>;
+ /**
+ * Can only migrate to empty address.
+ **/
AccountNotEmpty: AugmentedError<ApiType>;
/**
* Generic error
tests/src/interfaces/augment-api-events.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -15,6 +15,44 @@
declare module '@polkadot/api-base/types/events' {
interface AugmentedEvents<ApiType extends ApiTypes> {
+ appPromotion: {
+ /**
+ * The admin was set
+ *
+ * # Arguments
+ * * AccountId: ID of the admin
+ **/
+ SetAdmin: AugmentedEvent<ApiType, [AccountId32]>;
+ /**
+ * Staking was performed
+ *
+ * # Arguments
+ * * AccountId: ID of the staker
+ * * Balance : staking amount
+ **/
+ Stake: AugmentedEvent<ApiType, [AccountId32, u128]>;
+ /**
+ * Staking recalculation was performed
+ *
+ * # Arguments
+ * * AccountId: ID of the staker.
+ * * Balance : recalculation base
+ * * Balance : total income
+ **/
+ StakingRecalculation: AugmentedEvent<ApiType, [AccountId32, u128, u128]>;
+ /**
+ * Unstaking was performed
+ *
+ * # Arguments
+ * * AccountId: ID of the staker
+ * * Balance : unstaking amount
+ **/
+ Unstake: AugmentedEvent<ApiType, [AccountId32, u128]>;
+ /**
+ * Generic event
+ **/
+ [key: string]: AugmentedEvent<ApiType>;
+ };
balances: {
/**
* A balance was set by root.
@@ -208,6 +246,24 @@
**/
[key: string]: AugmentedEvent<ApiType>;
};
+ evmContractHelpers: {
+ /**
+ * Collection sponsor was removed.
+ **/
+ ContractSponsorRemoved: AugmentedEvent<ApiType, [H160]>;
+ /**
+ * Contract sponsor was set.
+ **/
+ ContractSponsorSet: AugmentedEvent<ApiType, [H160, AccountId32]>;
+ /**
+ * New sponsor was confirm.
+ **/
+ ContractSponsorshipConfirmed: AugmentedEvent<ApiType, [H160, AccountId32]>;
+ /**
+ * Generic event
+ **/
+ [key: string]: AugmentedEvent<ApiType>;
+ };
parachainSystem: {
/**
* Downward messages were processed using the given weight.
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -6,10 +6,10 @@
import '@polkadot/api-base/types/storage';
import type { ApiTypes, AugmentedQuery, QueryableStorageEntry } from '@polkadot/api-base/types';
-import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
+import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsTokenChild } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUniqueSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild } from '@polkadot/types/lookup';
import type { Observable } from '@polkadot/types/types';
export type __AugmentedQuery<ApiType extends ApiTypes> = AugmentedQuery<ApiType, () => unknown>;
@@ -17,6 +17,28 @@
declare module '@polkadot/api-base/types/storage' {
interface AugmentedQueries<ApiType extends ApiTypes> {
+ appPromotion: {
+ admin: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;
+ /**
+ * Stores a key for record for which the next revenue recalculation would be performed.
+ * If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.
+ **/
+ nextCalculatedRecord: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[AccountId32, u32]>>>, []> & QueryableStorageEntry<ApiType, []>;
+ pendingUnstake: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[AccountId32, u128]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+ /**
+ * Amount of tokens staked by account in the blocknumber.
+ **/
+ staked: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<ITuple<[u128, u32]>>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;
+ /**
+ * Amount of stakes for an Account
+ **/
+ stakesPerAccount: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<u8>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
+ totalStaked: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
+ /**
+ * Generic query
+ **/
+ [key: string]: QueryableStorageEntry<ApiType>;
+ };
balances: {
/**
* The Balances pallet example of storing the balance of an account.
@@ -194,12 +216,66 @@
[key: string]: QueryableStorageEntry<ApiType>;
};
evmContractHelpers: {
+ /**
+ * Storage for users that allowed for sponsorship.
+ *
+ * ### Usage
+ * Prefer to delete record from storage if user no more allowed for sponsorship.
+ *
+ * * **Key1** - contract address.
+ * * **Key2** - user that allowed for sponsorship.
+ * * **Value** - allowance for sponsorship.
+ **/
allowlist: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<bool>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;
+ /**
+ * Storege for contracts with [`Allowlisted`](SponsoringModeT::Allowlisted) sponsoring mode.
+ *
+ * ### Usage
+ * Prefer to delete collection from storage if mode chaged to non `Allowlisted`, than set **Value** to **false**.
+ *
+ * * **Key** - contract address.
+ * * **Value** - is contract in [`Allowlisted`](SponsoringModeT::Allowlisted) mode.
+ **/
allowlistEnabled: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
+ /**
+ * Store owner for contract.
+ *
+ * * **Key** - contract address.
+ * * **Value** - owner for contract.
+ **/
owner: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<H160>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
selfSponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<bool>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
+ /**
+ * Storage for last sponsored block.
+ *
+ * * **Key1** - contract address.
+ * * **Key2** - sponsored user address.
+ * * **Value** - last sponsored block number.
+ **/
sponsorBasket: AugmentedQuery<ApiType, (arg1: H160 | string | Uint8Array, arg2: H160 | string | Uint8Array) => Observable<Option<u32>>, [H160, H160]> & QueryableStorageEntry<ApiType, [H160, H160]>;
+ /**
+ * Store for contract sponsorship state.
+ *
+ * * **Key** - contract address.
+ * * **Value** - sponsorship state.
+ **/
+ sponsoring: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<UpDataStructsSponsorshipStateBasicCrossAccountIdRepr>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
+ /**
+ * Store for sponsoring mode.
+ *
+ * ### Usage
+ * Prefer to delete collection from storage if mode chaged to [`Disabled`](SponsoringModeT::Disabled).
+ *
+ * * **Key** - contract address.
+ * * **Value** - [`sponsoring mode`](SponsoringModeT).
+ **/
sponsoringMode: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<Option<PalletEvmContractHelpersSponsoringModeT>>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
+ /**
+ * Storage for sponsoring rate limit in blocks.
+ *
+ * * **Key** - contract address.
+ * * **Value** - amount of sponsored blocks.
+ **/
sponsoringRateLimit: AugmentedQuery<ApiType, (arg: H160 | string | Uint8Array) => Observable<u32>, [H160]> & QueryableStorageEntry<ApiType, [H160]>;
/**
* Generic query
@@ -281,7 +357,7 @@
*
* Currently used to store RMRK data.
**/
- tokenAuxProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: UpDataStructsPropertyScope | 'None' | 'Rmrk' | 'Eth' | number | Uint8Array, arg4: Bytes | string | Uint8Array) => Observable<Option<Bytes>>, [u32, u32, UpDataStructsPropertyScope, Bytes]> & QueryableStorageEntry<ApiType, [u32, u32, UpDataStructsPropertyScope, Bytes]>;
+ tokenAuxProperties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: UpDataStructsPropertyScope | 'None' | 'Rmrk' | number | Uint8Array, arg4: Bytes | string | Uint8Array) => Observable<Option<Bytes>>, [u32, u32, UpDataStructsPropertyScope, Bytes]> & QueryableStorageEntry<ApiType, [u32, u32, UpDataStructsPropertyScope, Bytes]>;
/**
* Used to enumerate token's children.
**/
tests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -9,7 +9,7 @@
import type { AugmentedRpc } from '@polkadot/rpc-core/types';
import type { Metadata, StorageKey } from '@polkadot/types';
import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, f64, u128, u32, u64 } from '@polkadot/types-codec';
-import type { AnyNumber, Codec } from '@polkadot/types-codec/types';
+import type { AnyNumber, Codec, ITuple } from '@polkadot/types-codec/types';
import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';
import type { EpochAuthorship } from '@polkadot/types/interfaces/babe';
import type { BeefySignedCommitment } from '@polkadot/types/interfaces/beefy';
@@ -35,6 +35,24 @@
declare module '@polkadot/rpc-core/types/jsonrpc' {
interface RpcInterface {
+ appPromotion: {
+ /**
+ * Returns the total amount of unstaked tokens
+ **/
+ pendingUnstake: AugmentedRpc<(staker?: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
+ /**
+ * Returns the total amount of unstaked tokens per block
+ **/
+ pendingUnstakePerBlock: AugmentedRpc<(staker: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<ITuple<[u32, u128]>>>>;
+ /**
+ * Returns the total amount of staked tokens
+ **/
+ totalStaked: AugmentedRpc<(staker?: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
+ /**
+ * Returns the total amount of staked tokens per block when staked
+ **/
+ totalStakedPerBlock: AugmentedRpc<(staker: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<ITuple<[u32, u128]>>>>;
+ };
author: {
/**
* Returns true if the keystore has private keys for the given public key and key type.
tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -17,6 +17,20 @@
declare module '@polkadot/api-base/types/submittable' {
interface AugmentedSubmittables<ApiType extends ApiTypes> {
+ appPromotion: {
+ payoutStakers: AugmentedSubmittable<(stakersNumber: Option<u8> | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u8>]>;
+ setAdminAddress: AugmentedSubmittable<(admin: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr]>;
+ sponsorCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
+ sponsorContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
+ stake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u128]>;
+ stopSponsoringCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
+ stopSponsoringContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
+ unstake: AugmentedSubmittable<() => SubmittableExtrinsic<ApiType>, []>;
+ /**
+ * Generic tx
+ **/
+ [key: string]: SubmittableExtrinsicFunction<ApiType>;
+ };
balances: {
/**
* Exactly as `transfer`, except the origin must be root and the source account may be
@@ -181,8 +195,21 @@
[key: string]: SubmittableExtrinsicFunction<ApiType>;
};
evmMigration: {
+ /**
+ * Start contract migration, inserts contract stub at target address,
+ * and marks account as pending, allowing to insert storage
+ **/
begin: AugmentedSubmittable<(address: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;
+ /**
+ * Finish contract migration, allows it to be called.
+ * It is not possible to alter contract storage via [`Self::set_data`]
+ * after this call.
+ **/
finish: AugmentedSubmittable<(address: H160 | string | Uint8Array, code: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160, Bytes]>;
+ /**
+ * Insert items into contract storage, this method can be called
+ * multiple times
+ **/
setData: AugmentedSubmittable<(address: H160 | string | Uint8Array, data: Vec<ITuple<[H256, H256]>> | ([H256 | string | Uint8Array, H256 | string | Uint8Array])[]) => SubmittableExtrinsic<ApiType>, [H160, Vec<ITuple<[H256, H256]>>]>;
/**
* Generic tx
tests/src/interfaces/augment-types.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -5,7 +5,7 @@
// this is required to allow for ambient/previous definitions
import '@polkadot/types/types/registry';
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
import type { Data, StorageKey } from '@polkadot/types';
import type { BitVec, Bool, Bytes, F32, F64, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, f32, f64, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
@@ -804,6 +804,9 @@
Owner: Owner;
PageCounter: PageCounter;
PageIndexData: PageIndexData;
+ PalletAppPromotionCall: PalletAppPromotionCall;
+ PalletAppPromotionError: PalletAppPromotionError;
+ PalletAppPromotionEvent: PalletAppPromotionEvent;
PalletBalancesAccountData: PalletBalancesAccountData;
PalletBalancesBalanceLock: PalletBalancesBalanceLock;
PalletBalancesCall: PalletBalancesCall;
@@ -832,6 +835,7 @@
PalletEvmCall: PalletEvmCall;
PalletEvmCoderSubstrateError: PalletEvmCoderSubstrateError;
PalletEvmContractHelpersError: PalletEvmContractHelpersError;
+ PalletEvmContractHelpersEvent: PalletEvmContractHelpersEvent;
PalletEvmContractHelpersSponsoringModeT: PalletEvmContractHelpersSponsoringModeT;
PalletEvmError: PalletEvmError;
PalletEvmEvent: PalletEvmEvent;
@@ -1295,7 +1299,8 @@
UpDataStructsPropertyScope: UpDataStructsPropertyScope;
UpDataStructsRpcCollection: UpDataStructsRpcCollection;
UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;
- UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;
+ UpDataStructsSponsorshipStateAccountId32: UpDataStructsSponsorshipStateAccountId32;
+ UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: UpDataStructsSponsorshipStateBasicCrossAccountIdRepr;
UpDataStructsTokenChild: UpDataStructsTokenChild;
UpDataStructsTokenData: UpDataStructsTokenData;
UpgradeGoAhead: UpgradeGoAhead;
tests/src/interfaces/default/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -806,6 +806,64 @@
readonly perPeriod: Compact<u128>;
}
+/** @name PalletAppPromotionCall */
+export interface PalletAppPromotionCall extends Enum {
+ readonly isSetAdminAddress: boolean;
+ readonly asSetAdminAddress: {
+ readonly admin: PalletEvmAccountBasicCrossAccountIdRepr;
+ } & Struct;
+ readonly isStake: boolean;
+ readonly asStake: {
+ readonly amount: u128;
+ } & Struct;
+ readonly isUnstake: boolean;
+ readonly isSponsorCollection: boolean;
+ readonly asSponsorCollection: {
+ readonly collectionId: u32;
+ } & Struct;
+ readonly isStopSponsoringCollection: boolean;
+ readonly asStopSponsoringCollection: {
+ readonly collectionId: u32;
+ } & Struct;
+ readonly isSponsorContract: boolean;
+ readonly asSponsorContract: {
+ readonly contractId: H160;
+ } & Struct;
+ readonly isStopSponsoringContract: boolean;
+ readonly asStopSponsoringContract: {
+ readonly contractId: H160;
+ } & Struct;
+ readonly isPayoutStakers: boolean;
+ readonly asPayoutStakers: {
+ readonly stakersNumber: Option<u8>;
+ } & Struct;
+ readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';
+}
+
+/** @name PalletAppPromotionError */
+export interface PalletAppPromotionError extends Enum {
+ readonly isAdminNotSet: boolean;
+ readonly isNoPermission: boolean;
+ readonly isNotSufficientFunds: boolean;
+ readonly isPendingForBlockOverflow: boolean;
+ readonly isSponsorNotSet: boolean;
+ readonly isIncorrectLockedBalanceOperation: boolean;
+ readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';
+}
+
+/** @name PalletAppPromotionEvent */
+export interface PalletAppPromotionEvent extends Enum {
+ readonly isStakingRecalculation: boolean;
+ readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>;
+ readonly isStake: boolean;
+ readonly asStake: ITuple<[AccountId32, u128]>;
+ readonly isUnstake: boolean;
+ readonly asUnstake: ITuple<[AccountId32, u128]>;
+ readonly isSetAdmin: boolean;
+ readonly asSetAdmin: AccountId32;
+ readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin';
+}
+
/** @name PalletBalancesAccountData */
export interface PalletBalancesAccountData extends Struct {
readonly free: u128;
@@ -1127,7 +1185,19 @@
/** @name PalletEvmContractHelpersError */
export interface PalletEvmContractHelpersError extends Enum {
readonly isNoPermission: boolean;
- readonly type: 'NoPermission';
+ readonly isNoPendingSponsor: boolean;
+ readonly type: 'NoPermission' | 'NoPendingSponsor';
+}
+
+/** @name PalletEvmContractHelpersEvent */
+export interface PalletEvmContractHelpersEvent extends Enum {
+ readonly isContractSponsorSet: boolean;
+ readonly asContractSponsorSet: ITuple<[H160, AccountId32]>;
+ readonly isContractSponsorshipConfirmed: boolean;
+ readonly asContractSponsorshipConfirmed: ITuple<[H160, AccountId32]>;
+ readonly isContractSponsorRemoved: boolean;
+ readonly asContractSponsorRemoved: H160;
+ readonly type: 'ContractSponsorSet' | 'ContractSponsorshipConfirmed' | 'ContractSponsorRemoved';
}
/** @name PalletEvmContractHelpersSponsoringModeT */
@@ -2419,7 +2489,7 @@
readonly name: Vec<u16>;
readonly description: Vec<u16>;
readonly tokenPrefix: Bytes;
- readonly sponsorship: UpDataStructsSponsorshipState;
+ readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;
readonly limits: UpDataStructsCollectionLimits;
readonly permissions: UpDataStructsCollectionPermissions;
readonly externalCollection: bool;
@@ -2580,8 +2650,7 @@
export interface UpDataStructsPropertyScope extends Enum {
readonly isNone: boolean;
readonly isRmrk: boolean;
- readonly isEth: boolean;
- readonly type: 'None' | 'Rmrk' | 'Eth';
+ readonly type: 'None' | 'Rmrk';
}
/** @name UpDataStructsRpcCollection */
@@ -2591,7 +2660,7 @@
readonly name: Vec<u16>;
readonly description: Vec<u16>;
readonly tokenPrefix: Bytes;
- readonly sponsorship: UpDataStructsSponsorshipState;
+ readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;
readonly limits: UpDataStructsCollectionLimits;
readonly permissions: UpDataStructsCollectionPermissions;
readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
@@ -2607,8 +2676,8 @@
readonly type: 'SponsoringDisabled' | 'Blocks';
}
-/** @name UpDataStructsSponsorshipState */
-export interface UpDataStructsSponsorshipState extends Enum {
+/** @name UpDataStructsSponsorshipStateAccountId32 */
+export interface UpDataStructsSponsorshipStateAccountId32 extends Enum {
readonly isDisabled: boolean;
readonly isUnconfirmed: boolean;
readonly asUnconfirmed: AccountId32;
@@ -2617,6 +2686,16 @@
readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
}
+/** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr */
+export interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {
+ readonly isDisabled: boolean;
+ readonly isUnconfirmed: boolean;
+ readonly asUnconfirmed: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly isConfirmed: boolean;
+ readonly asConfirmed: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
+}
+
/** @name UpDataStructsTokenChild */
export interface UpDataStructsTokenChild extends Struct {
readonly token: u32;
tests/src/interfaces/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/definitions.ts
+++ b/tests/src/interfaces/definitions.ts
@@ -15,5 +15,6 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
export {default as unique} from './unique/definitions';
+export {default as appPromotion} from './appPromotion/definitions';
export {default as rmrk} from './rmrk/definitions';
export {default as default} from './default/definitions';
\ No newline at end of file
tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1057,7 +1057,18 @@
}
},
/**
- * Lookup103: pallet_evm::pallet::Event<T>
+ * Lookup103: pallet_app_promotion::pallet::Event<T>
+ **/
+ PalletAppPromotionEvent: {
+ _enum: {
+ StakingRecalculation: '(AccountId32,u128,u128)',
+ Stake: '(AccountId32,u128)',
+ Unstake: '(AccountId32,u128)',
+ SetAdmin: 'AccountId32'
+ }
+ },
+ /**
+ * Lookup104: pallet_evm::pallet::Event<T>
**/
PalletEvmEvent: {
_enum: {
@@ -1071,7 +1082,7 @@
}
},
/**
- * Lookup104: ethereum::log::Log
+ * Lookup105: ethereum::log::Log
**/
EthereumLog: {
address: 'H160',
@@ -1079,7 +1090,7 @@
data: 'Bytes'
},
/**
- * Lookup108: pallet_ethereum::pallet::Event
+ * Lookup109: pallet_ethereum::pallet::Event
**/
PalletEthereumEvent: {
_enum: {
@@ -1087,7 +1098,7 @@
}
},
/**
- * Lookup109: evm_core::error::ExitReason
+ * Lookup110: evm_core::error::ExitReason
**/
EvmCoreErrorExitReason: {
_enum: {
@@ -1098,13 +1109,13 @@
}
},
/**
- * Lookup110: evm_core::error::ExitSucceed
+ * Lookup111: evm_core::error::ExitSucceed
**/
EvmCoreErrorExitSucceed: {
_enum: ['Stopped', 'Returned', 'Suicided']
},
/**
- * Lookup111: evm_core::error::ExitError
+ * Lookup112: evm_core::error::ExitError
**/
EvmCoreErrorExitError: {
_enum: {
@@ -1126,13 +1137,13 @@
}
},
/**
- * Lookup114: evm_core::error::ExitRevert
+ * Lookup115: evm_core::error::ExitRevert
**/
EvmCoreErrorExitRevert: {
_enum: ['Reverted']
},
/**
- * Lookup115: evm_core::error::ExitFatal
+ * Lookup116: evm_core::error::ExitFatal
**/
EvmCoreErrorExitFatal: {
_enum: {
@@ -1143,7 +1154,17 @@
}
},
/**
- * Lookup116: frame_system::Phase
+ * Lookup117: pallet_evm_contract_helpers::pallet::Event<T>
+ **/
+ PalletEvmContractHelpersEvent: {
+ _enum: {
+ ContractSponsorSet: '(H160,AccountId32)',
+ ContractSponsorshipConfirmed: '(H160,AccountId32)',
+ ContractSponsorRemoved: 'H160'
+ }
+ },
+ /**
+ * Lookup118: frame_system::Phase
**/
FrameSystemPhase: {
_enum: {
@@ -1153,14 +1174,14 @@
}
},
/**
- * Lookup118: frame_system::LastRuntimeUpgradeInfo
+ * Lookup120: frame_system::LastRuntimeUpgradeInfo
**/
FrameSystemLastRuntimeUpgradeInfo: {
specVersion: 'Compact<u32>',
specName: 'Text'
},
/**
- * Lookup119: frame_system::pallet::Call<T>
+ * Lookup121: frame_system::pallet::Call<T>
**/
FrameSystemCall: {
_enum: {
@@ -1198,7 +1219,7 @@
}
},
/**
- * Lookup124: frame_system::limits::BlockWeights
+ * Lookup126: frame_system::limits::BlockWeights
**/
FrameSystemLimitsBlockWeights: {
baseBlock: 'u64',
@@ -1206,7 +1227,7 @@
perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'
},
/**
- * Lookup125: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
+ * Lookup127: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
**/
FrameSupportWeightsPerDispatchClassWeightsPerClass: {
normal: 'FrameSystemLimitsWeightsPerClass',
@@ -1214,7 +1235,7 @@
mandatory: 'FrameSystemLimitsWeightsPerClass'
},
/**
- * Lookup126: frame_system::limits::WeightsPerClass
+ * Lookup128: frame_system::limits::WeightsPerClass
**/
FrameSystemLimitsWeightsPerClass: {
baseExtrinsic: 'u64',
@@ -1223,13 +1244,13 @@
reserved: 'Option<u64>'
},
/**
- * Lookup128: frame_system::limits::BlockLength
+ * Lookup130: frame_system::limits::BlockLength
**/
FrameSystemLimitsBlockLength: {
max: 'FrameSupportWeightsPerDispatchClassU32'
},
/**
- * Lookup129: frame_support::weights::PerDispatchClass<T>
+ * Lookup131: frame_support::weights::PerDispatchClass<T>
**/
FrameSupportWeightsPerDispatchClassU32: {
normal: 'u32',
@@ -1237,14 +1258,14 @@
mandatory: 'u32'
},
/**
- * Lookup130: frame_support::weights::RuntimeDbWeight
+ * Lookup132: frame_support::weights::RuntimeDbWeight
**/
FrameSupportWeightsRuntimeDbWeight: {
read: 'u64',
write: 'u64'
},
/**
- * Lookup131: sp_version::RuntimeVersion
+ * Lookup133: sp_version::RuntimeVersion
**/
SpVersionRuntimeVersion: {
specName: 'Text',
@@ -1257,13 +1278,13 @@
stateVersion: 'u8'
},
/**
- * Lookup136: frame_system::pallet::Error<T>
+ * Lookup138: frame_system::pallet::Error<T>
**/
FrameSystemError: {
_enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
},
/**
- * Lookup137: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>
+ * Lookup139: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>
**/
PolkadotPrimitivesV2PersistedValidationData: {
parentHead: 'Bytes',
@@ -1272,19 +1293,19 @@
maxPovSize: 'u32'
},
/**
- * Lookup140: polkadot_primitives::v2::UpgradeRestriction
+ * Lookup142: polkadot_primitives::v2::UpgradeRestriction
**/
PolkadotPrimitivesV2UpgradeRestriction: {
_enum: ['Present']
},
/**
- * Lookup141: sp_trie::storage_proof::StorageProof
+ * Lookup143: sp_trie::storage_proof::StorageProof
**/
SpTrieStorageProof: {
trieNodes: 'BTreeSet<Bytes>'
},
/**
- * Lookup143: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
+ * Lookup145: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
**/
CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {
dmqMqcHead: 'H256',
@@ -1293,7 +1314,7 @@
egressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>'
},
/**
- * Lookup146: polkadot_primitives::v2::AbridgedHrmpChannel
+ * Lookup148: polkadot_primitives::v2::AbridgedHrmpChannel
**/
PolkadotPrimitivesV2AbridgedHrmpChannel: {
maxCapacity: 'u32',
@@ -1304,7 +1325,7 @@
mqcHead: 'Option<H256>'
},
/**
- * Lookup147: polkadot_primitives::v2::AbridgedHostConfiguration
+ * Lookup149: polkadot_primitives::v2::AbridgedHostConfiguration
**/
PolkadotPrimitivesV2AbridgedHostConfiguration: {
maxCodeSize: 'u32',
@@ -1318,14 +1339,14 @@
validationUpgradeDelay: 'u32'
},
/**
- * Lookup153: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
+ * Lookup155: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
**/
PolkadotCorePrimitivesOutboundHrmpMessage: {
recipient: 'u32',
data: 'Bytes'
},
/**
- * Lookup154: cumulus_pallet_parachain_system::pallet::Call<T>
+ * Lookup156: cumulus_pallet_parachain_system::pallet::Call<T>
**/
CumulusPalletParachainSystemCall: {
_enum: {
@@ -1344,7 +1365,7 @@
}
},
/**
- * Lookup155: cumulus_primitives_parachain_inherent::ParachainInherentData
+ * Lookup157: cumulus_primitives_parachain_inherent::ParachainInherentData
**/
CumulusPrimitivesParachainInherentParachainInherentData: {
validationData: 'PolkadotPrimitivesV2PersistedValidationData',
@@ -1353,27 +1374,27 @@
horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'
},
/**
- * Lookup157: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
+ * Lookup159: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
**/
PolkadotCorePrimitivesInboundDownwardMessage: {
sentAt: 'u32',
msg: 'Bytes'
},
/**
- * Lookup160: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
+ * Lookup162: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
**/
PolkadotCorePrimitivesInboundHrmpMessage: {
sentAt: 'u32',
data: 'Bytes'
},
/**
- * Lookup163: cumulus_pallet_parachain_system::pallet::Error<T>
+ * Lookup165: cumulus_pallet_parachain_system::pallet::Error<T>
**/
CumulusPalletParachainSystemError: {
_enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']
},
/**
- * Lookup165: pallet_balances::BalanceLock<Balance>
+ * Lookup167: pallet_balances::BalanceLock<Balance>
**/
PalletBalancesBalanceLock: {
id: '[u8;8]',
@@ -1381,26 +1402,26 @@
reasons: 'PalletBalancesReasons'
},
/**
- * Lookup166: pallet_balances::Reasons
+ * Lookup168: pallet_balances::Reasons
**/
PalletBalancesReasons: {
_enum: ['Fee', 'Misc', 'All']
},
/**
- * Lookup169: pallet_balances::ReserveData<ReserveIdentifier, Balance>
+ * Lookup171: pallet_balances::ReserveData<ReserveIdentifier, Balance>
**/
PalletBalancesReserveData: {
id: '[u8;16]',
amount: 'u128'
},
/**
- * Lookup171: pallet_balances::Releases
+ * Lookup173: pallet_balances::Releases
**/
PalletBalancesReleases: {
_enum: ['V1_0_0', 'V2_0_0']
},
/**
- * Lookup172: pallet_balances::pallet::Call<T, I>
+ * Lookup174: pallet_balances::pallet::Call<T, I>
**/
PalletBalancesCall: {
_enum: {
@@ -1433,13 +1454,13 @@
}
},
/**
- * Lookup175: pallet_balances::pallet::Error<T, I>
+ * Lookup177: pallet_balances::pallet::Error<T, I>
**/
PalletBalancesError: {
_enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']
},
/**
- * Lookup177: pallet_timestamp::pallet::Call<T>
+ * Lookup179: pallet_timestamp::pallet::Call<T>
**/
PalletTimestampCall: {
_enum: {
@@ -1449,13 +1470,13 @@
}
},
/**
- * Lookup179: pallet_transaction_payment::Releases
+ * Lookup181: pallet_transaction_payment::Releases
**/
PalletTransactionPaymentReleases: {
_enum: ['V1Ancient', 'V2']
},
/**
- * Lookup180: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
+ * Lookup182: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
**/
PalletTreasuryProposal: {
proposer: 'AccountId32',
@@ -1464,7 +1485,7 @@
bond: 'u128'
},
/**
- * Lookup183: pallet_treasury::pallet::Call<T, I>
+ * Lookup185: pallet_treasury::pallet::Call<T, I>
**/
PalletTreasuryCall: {
_enum: {
@@ -1488,17 +1509,17 @@
}
},
/**
- * Lookup186: frame_support::PalletId
+ * Lookup188: frame_support::PalletId
**/
FrameSupportPalletId: '[u8;8]',
/**
- * Lookup187: pallet_treasury::pallet::Error<T, I>
+ * Lookup189: pallet_treasury::pallet::Error<T, I>
**/
PalletTreasuryError: {
_enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals', 'InsufficientPermission', 'ProposalNotApproved']
},
/**
- * Lookup188: pallet_sudo::pallet::Call<T>
+ * Lookup190: pallet_sudo::pallet::Call<T>
**/
PalletSudoCall: {
_enum: {
@@ -1522,7 +1543,7 @@
}
},
/**
- * Lookup190: orml_vesting::module::Call<T>
+ * Lookup192: orml_vesting::module::Call<T>
**/
OrmlVestingModuleCall: {
_enum: {
@@ -1541,7 +1562,7 @@
}
},
/**
- * Lookup192: cumulus_pallet_xcmp_queue::pallet::Call<T>
+ * Lookup194: cumulus_pallet_xcmp_queue::pallet::Call<T>
**/
CumulusPalletXcmpQueueCall: {
_enum: {
@@ -1590,7 +1611,7 @@
}
},
/**
- * Lookup193: pallet_xcm::pallet::Call<T>
+ * Lookup195: pallet_xcm::pallet::Call<T>
**/
PalletXcmCall: {
_enum: {
@@ -1644,7 +1665,7 @@
}
},
/**
- * Lookup194: xcm::VersionedXcm<Call>
+ * Lookup196: xcm::VersionedXcm<Call>
**/
XcmVersionedXcm: {
_enum: {
@@ -1654,7 +1675,7 @@
}
},
/**
- * Lookup195: xcm::v0::Xcm<Call>
+ * Lookup197: xcm::v0::Xcm<Call>
**/
XcmV0Xcm: {
_enum: {
@@ -1708,7 +1729,7 @@
}
},
/**
- * Lookup197: xcm::v0::order::Order<Call>
+ * Lookup199: xcm::v0::order::Order<Call>
**/
XcmV0Order: {
_enum: {
@@ -1751,7 +1772,7 @@
}
},
/**
- * Lookup199: xcm::v0::Response
+ * Lookup201: xcm::v0::Response
**/
XcmV0Response: {
_enum: {
@@ -1759,7 +1780,7 @@
}
},
/**
- * Lookup200: xcm::v1::Xcm<Call>
+ * Lookup202: xcm::v1::Xcm<Call>
**/
XcmV1Xcm: {
_enum: {
@@ -1818,7 +1839,7 @@
}
},
/**
- * Lookup202: xcm::v1::order::Order<Call>
+ * Lookup204: xcm::v1::order::Order<Call>
**/
XcmV1Order: {
_enum: {
@@ -1863,7 +1884,7 @@
}
},
/**
- * Lookup204: xcm::v1::Response
+ * Lookup206: xcm::v1::Response
**/
XcmV1Response: {
_enum: {
@@ -1872,11 +1893,11 @@
}
},
/**
- * Lookup218: cumulus_pallet_xcm::pallet::Call<T>
+ * Lookup220: cumulus_pallet_xcm::pallet::Call<T>
**/
CumulusPalletXcmCall: 'Null',
/**
- * Lookup219: cumulus_pallet_dmp_queue::pallet::Call<T>
+ * Lookup221: cumulus_pallet_dmp_queue::pallet::Call<T>
**/
CumulusPalletDmpQueueCall: {
_enum: {
@@ -1887,7 +1908,7 @@
}
},
/**
- * Lookup220: pallet_inflation::pallet::Call<T>
+ * Lookup222: pallet_inflation::pallet::Call<T>
**/
PalletInflationCall: {
_enum: {
@@ -1897,7 +1918,7 @@
}
},
/**
- * Lookup221: pallet_unique::Call<T>
+ * Lookup223: pallet_unique::Call<T>
**/
PalletUniqueCall: {
_enum: {
@@ -2029,7 +2050,7 @@
}
},
/**
- * Lookup226: up_data_structs::CollectionMode
+ * Lookup228: up_data_structs::CollectionMode
**/
UpDataStructsCollectionMode: {
_enum: {
@@ -2039,7 +2060,7 @@
}
},
/**
- * Lookup227: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
+ * Lookup229: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
**/
UpDataStructsCreateCollectionData: {
mode: 'UpDataStructsCollectionMode',
@@ -2054,13 +2075,13 @@
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup229: up_data_structs::AccessMode
+ * Lookup231: up_data_structs::AccessMode
**/
UpDataStructsAccessMode: {
_enum: ['Normal', 'AllowList']
},
/**
- * Lookup231: up_data_structs::CollectionLimits
+ * Lookup233: up_data_structs::CollectionLimits
**/
UpDataStructsCollectionLimits: {
accountTokenOwnershipLimit: 'Option<u32>',
@@ -2074,7 +2095,7 @@
transfersEnabled: 'Option<bool>'
},
/**
- * Lookup233: up_data_structs::SponsoringRateLimit
+ * Lookup235: up_data_structs::SponsoringRateLimit
**/
UpDataStructsSponsoringRateLimit: {
_enum: {
@@ -2083,7 +2104,7 @@
}
},
/**
- * Lookup236: up_data_structs::CollectionPermissions
+ * Lookup238: up_data_structs::CollectionPermissions
**/
UpDataStructsCollectionPermissions: {
access: 'Option<UpDataStructsAccessMode>',
@@ -2091,7 +2112,7 @@
nesting: 'Option<UpDataStructsNestingPermissions>'
},
/**
- * Lookup238: up_data_structs::NestingPermissions
+ * Lookup240: up_data_structs::NestingPermissions
**/
UpDataStructsNestingPermissions: {
tokenOwner: 'bool',
@@ -2099,18 +2120,18 @@
restricted: 'Option<UpDataStructsOwnerRestrictedSet>'
},
/**
- * Lookup240: up_data_structs::OwnerRestrictedSet
+ * Lookup242: up_data_structs::OwnerRestrictedSet
**/
UpDataStructsOwnerRestrictedSet: 'BTreeSet<u32>',
/**
- * Lookup245: up_data_structs::PropertyKeyPermission
+ * Lookup247: up_data_structs::PropertyKeyPermission
**/
UpDataStructsPropertyKeyPermission: {
key: 'Bytes',
permission: 'UpDataStructsPropertyPermission'
},
/**
- * Lookup246: up_data_structs::PropertyPermission
+ * Lookup248: up_data_structs::PropertyPermission
**/
UpDataStructsPropertyPermission: {
mutable: 'bool',
@@ -2118,14 +2139,14 @@
tokenOwner: 'bool'
},
/**
- * Lookup249: up_data_structs::Property
+ * Lookup251: up_data_structs::Property
**/
UpDataStructsProperty: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup252: up_data_structs::CreateItemData
+ * Lookup254: up_data_structs::CreateItemData
**/
UpDataStructsCreateItemData: {
_enum: {
@@ -2135,26 +2156,26 @@
}
},
/**
- * Lookup253: up_data_structs::CreateNftData
+ * Lookup255: up_data_structs::CreateNftData
**/
UpDataStructsCreateNftData: {
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup254: up_data_structs::CreateFungibleData
+ * Lookup256: up_data_structs::CreateFungibleData
**/
UpDataStructsCreateFungibleData: {
value: 'u128'
},
/**
- * Lookup255: up_data_structs::CreateReFungibleData
+ * Lookup257: up_data_structs::CreateReFungibleData
**/
UpDataStructsCreateReFungibleData: {
pieces: 'u128',
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup258: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup260: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateItemExData: {
_enum: {
@@ -2165,14 +2186,14 @@
}
},
/**
- * Lookup260: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup262: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateNftExData: {
properties: 'Vec<UpDataStructsProperty>',
owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup267: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup269: up_data_structs::CreateRefungibleExSingleOwner<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateRefungibleExSingleOwner: {
user: 'PalletEvmAccountBasicCrossAccountIdRepr',
@@ -2180,14 +2201,14 @@
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup269: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup271: up_data_structs::CreateRefungibleExMultipleOwners<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateRefungibleExMultipleOwners: {
users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',
properties: 'Vec<UpDataStructsProperty>'
},
/**
- * Lookup270: pallet_unique_scheduler::pallet::Call<T>
+ * Lookup272: pallet_unique_scheduler::pallet::Call<T>
**/
PalletUniqueSchedulerCall: {
_enum: {
@@ -2211,7 +2232,7 @@
}
},
/**
- * Lookup272: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>
+ * Lookup274: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>
**/
FrameSupportScheduleMaybeHashed: {
_enum: {
@@ -2220,7 +2241,7 @@
}
},
/**
- * Lookup273: pallet_configuration::pallet::Call<T>
+ * Lookup275: pallet_configuration::pallet::Call<T>
**/
PalletConfigurationCall: {
_enum: {
@@ -2233,15 +2254,15 @@
}
},
/**
- * Lookup274: pallet_template_transaction_payment::Call<T>
+ * Lookup276: pallet_template_transaction_payment::Call<T>
**/
PalletTemplateTransactionPaymentCall: 'Null',
/**
- * Lookup275: pallet_structure::pallet::Call<T>
+ * Lookup277: pallet_structure::pallet::Call<T>
**/
PalletStructureCall: 'Null',
/**
- * Lookup276: pallet_rmrk_core::pallet::Call<T>
+ * Lookup278: pallet_rmrk_core::pallet::Call<T>
**/
PalletRmrkCoreCall: {
_enum: {
@@ -2332,7 +2353,7 @@
}
},
/**
- * Lookup282: rmrk_traits::resource::ResourceTypes<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup284: rmrk_traits::resource::ResourceTypes<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceResourceTypes: {
_enum: {
@@ -2342,7 +2363,7 @@
}
},
/**
- * Lookup284: rmrk_traits::resource::BasicResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup286: rmrk_traits::resource::BasicResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceBasicResource: {
src: 'Option<Bytes>',
@@ -2351,7 +2372,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup286: rmrk_traits::resource::ComposableResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup288: rmrk_traits::resource::ComposableResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceComposableResource: {
parts: 'Vec<u32>',
@@ -2362,7 +2383,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup287: rmrk_traits::resource::SlotResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup289: rmrk_traits::resource::SlotResource<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceSlotResource: {
base: 'u32',
@@ -2373,7 +2394,7 @@
thumb: 'Option<Bytes>'
},
/**
- * Lookup290: pallet_rmrk_equip::pallet::Call<T>
+ * Lookup292: pallet_rmrk_equip::pallet::Call<T>
**/
PalletRmrkEquipCall: {
_enum: {
@@ -2394,7 +2415,7 @@
}
},
/**
- * Lookup293: rmrk_traits::part::PartType<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup295: rmrk_traits::part::PartType<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartPartType: {
_enum: {
@@ -2403,7 +2424,7 @@
}
},
/**
- * Lookup295: rmrk_traits::part::FixedPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup297: rmrk_traits::part::FixedPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartFixedPart: {
id: 'u32',
@@ -2411,7 +2432,7 @@
src: 'Bytes'
},
/**
- * Lookup296: rmrk_traits::part::SlotPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup298: rmrk_traits::part::SlotPart<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartSlotPart: {
id: 'u32',
@@ -2420,7 +2441,7 @@
z: 'u32'
},
/**
- * Lookup297: rmrk_traits::part::EquippableList<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup299: rmrk_traits::part::EquippableList<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPartEquippableList: {
_enum: {
@@ -2430,7 +2451,7 @@
}
},
/**
- * Lookup299: rmrk_traits::theme::Theme<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>, S>>
+ * Lookup301: rmrk_traits::theme::Theme<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>, S>>
**/
RmrkTraitsTheme: {
name: 'Bytes',
@@ -2438,14 +2459,43 @@
inherit: 'bool'
},
/**
- * Lookup301: rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup303: rmrk_traits::theme::ThemeProperty<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsThemeThemeProperty: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup303: pallet_evm::pallet::Call<T>
+ * Lookup305: pallet_app_promotion::pallet::Call<T>
+ **/
+ PalletAppPromotionCall: {
+ _enum: {
+ set_admin_address: {
+ admin: 'PalletEvmAccountBasicCrossAccountIdRepr',
+ },
+ stake: {
+ amount: 'u128',
+ },
+ unstake: 'Null',
+ sponsor_collection: {
+ collectionId: 'u32',
+ },
+ stop_sponsoring_collection: {
+ collectionId: 'u32',
+ },
+ sponsor_contract: {
+ contractId: 'H160',
+ },
+ stop_sponsoring_contract: {
+ contractId: 'H160',
+ },
+ payout_stakers: {
+ stakersNumber: 'Option<u8>'
+ }
+ }
+ },
+ /**
+ * Lookup307: pallet_evm::pallet::Call<T>
**/
PalletEvmCall: {
_enum: {
@@ -2488,7 +2538,7 @@
}
},
/**
- * Lookup307: pallet_ethereum::pallet::Call<T>
+ * Lookup311: pallet_ethereum::pallet::Call<T>
**/
PalletEthereumCall: {
_enum: {
@@ -2498,7 +2548,7 @@
}
},
/**
- * Lookup308: ethereum::transaction::TransactionV2
+ * Lookup312: ethereum::transaction::TransactionV2
**/
EthereumTransactionTransactionV2: {
_enum: {
@@ -2508,7 +2558,7 @@
}
},
/**
- * Lookup309: ethereum::transaction::LegacyTransaction
+ * Lookup313: ethereum::transaction::LegacyTransaction
**/
EthereumTransactionLegacyTransaction: {
nonce: 'U256',
@@ -2520,7 +2570,7 @@
signature: 'EthereumTransactionTransactionSignature'
},
/**
- * Lookup310: ethereum::transaction::TransactionAction
+ * Lookup314: ethereum::transaction::TransactionAction
**/
EthereumTransactionTransactionAction: {
_enum: {
@@ -2529,7 +2579,7 @@
}
},
/**
- * Lookup311: ethereum::transaction::TransactionSignature
+ * Lookup315: ethereum::transaction::TransactionSignature
**/
EthereumTransactionTransactionSignature: {
v: 'u64',
@@ -2537,7 +2587,7 @@
s: 'H256'
},
/**
- * Lookup313: ethereum::transaction::EIP2930Transaction
+ * Lookup317: ethereum::transaction::EIP2930Transaction
**/
EthereumTransactionEip2930Transaction: {
chainId: 'u64',
@@ -2553,14 +2603,14 @@
s: 'H256'
},
/**
- * Lookup315: ethereum::transaction::AccessListItem
+ * Lookup319: ethereum::transaction::AccessListItem
**/
EthereumTransactionAccessListItem: {
address: 'H160',
storageKeys: 'Vec<H256>'
},
/**
- * Lookup316: ethereum::transaction::EIP1559Transaction
+ * Lookup320: ethereum::transaction::EIP1559Transaction
**/
EthereumTransactionEip1559Transaction: {
chainId: 'u64',
@@ -2577,7 +2627,7 @@
s: 'H256'
},
/**
- * Lookup317: pallet_evm_migration::pallet::Call<T>
+ * Lookup321: pallet_evm_migration::pallet::Call<T>
**/
PalletEvmMigrationCall: {
_enum: {
@@ -2595,19 +2645,19 @@
}
},
/**
- * Lookup320: pallet_sudo::pallet::Error<T>
+ * Lookup324: pallet_sudo::pallet::Error<T>
**/
PalletSudoError: {
_enum: ['RequireSudo']
},
/**
- * Lookup322: orml_vesting::module::Error<T>
+ * Lookup326: orml_vesting::module::Error<T>
**/
OrmlVestingModuleError: {
_enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
},
/**
- * Lookup324: cumulus_pallet_xcmp_queue::InboundChannelDetails
+ * Lookup328: cumulus_pallet_xcmp_queue::InboundChannelDetails
**/
CumulusPalletXcmpQueueInboundChannelDetails: {
sender: 'u32',
@@ -2615,19 +2665,19 @@
messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
},
/**
- * Lookup325: cumulus_pallet_xcmp_queue::InboundState
+ * Lookup329: cumulus_pallet_xcmp_queue::InboundState
**/
CumulusPalletXcmpQueueInboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup328: polkadot_parachain::primitives::XcmpMessageFormat
+ * Lookup332: polkadot_parachain::primitives::XcmpMessageFormat
**/
PolkadotParachainPrimitivesXcmpMessageFormat: {
_enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
},
/**
- * Lookup331: cumulus_pallet_xcmp_queue::OutboundChannelDetails
+ * Lookup335: cumulus_pallet_xcmp_queue::OutboundChannelDetails
**/
CumulusPalletXcmpQueueOutboundChannelDetails: {
recipient: 'u32',
@@ -2637,13 +2687,13 @@
lastIndex: 'u16'
},
/**
- * Lookup332: cumulus_pallet_xcmp_queue::OutboundState
+ * Lookup336: cumulus_pallet_xcmp_queue::OutboundState
**/
CumulusPalletXcmpQueueOutboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup334: cumulus_pallet_xcmp_queue::QueueConfigData
+ * Lookup338: cumulus_pallet_xcmp_queue::QueueConfigData
**/
CumulusPalletXcmpQueueQueueConfigData: {
suspendThreshold: 'u32',
@@ -2654,29 +2704,29 @@
xcmpMaxIndividualWeight: 'u64'
},
/**
- * Lookup336: cumulus_pallet_xcmp_queue::pallet::Error<T>
+ * Lookup340: cumulus_pallet_xcmp_queue::pallet::Error<T>
**/
CumulusPalletXcmpQueueError: {
_enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
},
/**
- * Lookup337: pallet_xcm::pallet::Error<T>
+ * Lookup341: pallet_xcm::pallet::Error<T>
**/
PalletXcmError: {
_enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
},
/**
- * Lookup338: cumulus_pallet_xcm::pallet::Error<T>
+ * Lookup342: cumulus_pallet_xcm::pallet::Error<T>
**/
CumulusPalletXcmError: 'Null',
/**
- * Lookup339: cumulus_pallet_dmp_queue::ConfigData
+ * Lookup343: cumulus_pallet_dmp_queue::ConfigData
**/
CumulusPalletDmpQueueConfigData: {
maxIndividual: 'u64'
},
/**
- * Lookup340: cumulus_pallet_dmp_queue::PageIndexData
+ * Lookup344: cumulus_pallet_dmp_queue::PageIndexData
**/
CumulusPalletDmpQueuePageIndexData: {
beginUsed: 'u32',
@@ -2684,19 +2734,19 @@
overweightCount: 'u64'
},
/**
- * Lookup343: cumulus_pallet_dmp_queue::pallet::Error<T>
+ * Lookup347: cumulus_pallet_dmp_queue::pallet::Error<T>
**/
CumulusPalletDmpQueueError: {
_enum: ['Unknown', 'OverLimit']
},
/**
- * Lookup347: pallet_unique::Error<T>
+ * Lookup351: pallet_unique::Error<T>
**/
PalletUniqueError: {
_enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument', 'RepartitionCalledOnNonRefungibleCollection']
},
/**
- * Lookup350: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
+ * Lookup354: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
**/
PalletUniqueSchedulerScheduledV3: {
maybeId: 'Option<[u8;16]>',
@@ -2706,7 +2756,7 @@
origin: 'OpalRuntimeOriginCaller'
},
/**
- * Lookup351: opal_runtime::OriginCaller
+ * Lookup355: opal_runtime::OriginCaller
**/
OpalRuntimeOriginCaller: {
_enum: {
@@ -2815,7 +2865,7 @@
}
},
/**
- * Lookup352: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
+ * Lookup356: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
**/
FrameSupportDispatchRawOrigin: {
_enum: {
@@ -2825,7 +2875,7 @@
}
},
/**
- * Lookup353: pallet_xcm::pallet::Origin
+ * Lookup357: pallet_xcm::pallet::Origin
**/
PalletXcmOrigin: {
_enum: {
@@ -2834,7 +2884,7 @@
}
},
/**
- * Lookup354: cumulus_pallet_xcm::pallet::Origin
+ * Lookup358: cumulus_pallet_xcm::pallet::Origin
**/
CumulusPalletXcmOrigin: {
_enum: {
@@ -2843,7 +2893,7 @@
}
},
/**
- * Lookup355: pallet_ethereum::RawOrigin
+ * Lookup359: pallet_ethereum::RawOrigin
**/
PalletEthereumRawOrigin: {
_enum: {
@@ -2851,17 +2901,17 @@
}
},
/**
- * Lookup356: sp_core::Void
+ * Lookup360: sp_core::Void
**/
SpCoreVoid: 'Null',
/**
- * Lookup357: pallet_unique_scheduler::pallet::Error<T>
+ * Lookup361: pallet_unique_scheduler::pallet::Error<T>
**/
PalletUniqueSchedulerError: {
_enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']
},
/**
- * Lookup358: up_data_structs::Collection<sp_core::crypto::AccountId32>
+ * Lookup362: up_data_structs::Collection<sp_core::crypto::AccountId32>
**/
UpDataStructsCollection: {
owner: 'AccountId32',
@@ -2869,15 +2919,15 @@
name: 'Vec<u16>',
description: 'Vec<u16>',
tokenPrefix: 'Bytes',
- sponsorship: 'UpDataStructsSponsorshipState',
+ sponsorship: 'UpDataStructsSponsorshipStateAccountId32',
limits: 'UpDataStructsCollectionLimits',
permissions: 'UpDataStructsCollectionPermissions',
externalCollection: 'bool'
},
/**
- * Lookup359: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
+ * Lookup363: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
**/
- UpDataStructsSponsorshipState: {
+ UpDataStructsSponsorshipStateAccountId32: {
_enum: {
Disabled: 'Null',
Unconfirmed: 'AccountId32',
@@ -2885,7 +2935,7 @@
}
},
/**
- * Lookup360: up_data_structs::Properties
+ * Lookup364: up_data_structs::Properties
**/
UpDataStructsProperties: {
map: 'UpDataStructsPropertiesMapBoundedVec',
@@ -2893,15 +2943,15 @@
spaceLimit: 'u32'
},
/**
- * Lookup361: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup365: up_data_structs::PropertiesMap<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
/**
- * Lookup366: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
+ * Lookup370: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
**/
UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
/**
- * Lookup373: up_data_structs::CollectionStats
+ * Lookup377: up_data_structs::CollectionStats
**/
UpDataStructsCollectionStats: {
created: 'u32',
@@ -2909,18 +2959,18 @@
alive: 'u32'
},
/**
- * Lookup374: up_data_structs::TokenChild
+ * Lookup378: up_data_structs::TokenChild
**/
UpDataStructsTokenChild: {
token: 'u32',
collection: 'u32'
},
/**
- * Lookup375: PhantomType::up_data_structs<T>
+ * Lookup379: PhantomType::up_data_structs<T>
**/
PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',
/**
- * Lookup377: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup381: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsTokenData: {
properties: 'Vec<UpDataStructsProperty>',
@@ -2928,7 +2978,7 @@
pieces: 'u128'
},
/**
- * Lookup379: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+ * Lookup383: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
**/
UpDataStructsRpcCollection: {
owner: 'AccountId32',
@@ -2936,7 +2986,7 @@
name: 'Vec<u16>',
description: 'Vec<u16>',
tokenPrefix: 'Bytes',
- sponsorship: 'UpDataStructsSponsorshipState',
+ sponsorship: 'UpDataStructsSponsorshipStateAccountId32',
limits: 'UpDataStructsCollectionLimits',
permissions: 'UpDataStructsCollectionPermissions',
tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
@@ -2944,7 +2994,7 @@
readOnly: 'bool'
},
/**
- * Lookup380: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
+ * Lookup384: rmrk_traits::collection::CollectionInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
**/
RmrkTraitsCollectionCollectionInfo: {
issuer: 'AccountId32',
@@ -2954,7 +3004,7 @@
nftsCount: 'u32'
},
/**
- * Lookup381: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup385: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsNftNftInfo: {
owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
@@ -2964,14 +3014,14 @@
pending: 'bool'
},
/**
- * Lookup383: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
+ * Lookup387: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
**/
RmrkTraitsNftRoyaltyInfo: {
recipient: 'AccountId32',
amount: 'Permill'
},
/**
- * Lookup384: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup388: rmrk_traits::resource::ResourceInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsResourceResourceInfo: {
id: 'u32',
@@ -2980,14 +3030,14 @@
pendingRemoval: 'bool'
},
/**
- * Lookup385: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup389: rmrk_traits::property::PropertyInfo<sp_runtime::bounded::bounded_vec::BoundedVec<T, S>, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsPropertyPropertyInfo: {
key: 'Bytes',
value: 'Bytes'
},
/**
- * Lookup386: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
+ * Lookup390: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, sp_runtime::bounded::bounded_vec::BoundedVec<T, S>>
**/
RmrkTraitsBaseBaseInfo: {
issuer: 'AccountId32',
@@ -2995,80 +3045,86 @@
symbol: 'Bytes'
},
/**
- * Lookup387: rmrk_traits::nft::NftChild
+ * Lookup391: rmrk_traits::nft::NftChild
**/
RmrkTraitsNftNftChild: {
collectionId: 'u32',
nftId: 'u32'
},
/**
- * Lookup389: pallet_common::pallet::Error<T>
+ * Lookup393: pallet_common::pallet::Error<T>
**/
PalletCommonError: {
_enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal']
},
/**
- * Lookup391: pallet_fungible::pallet::Error<T>
+ * Lookup395: pallet_fungible::pallet::Error<T>
**/
PalletFungibleError: {
_enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
},
/**
- * Lookup392: pallet_refungible::ItemData
+ * Lookup396: pallet_refungible::ItemData
**/
PalletRefungibleItemData: {
constData: 'Bytes'
},
/**
- * Lookup397: pallet_refungible::pallet::Error<T>
+ * Lookup401: pallet_refungible::pallet::Error<T>
**/
PalletRefungibleError: {
_enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RepartitionWhileNotOwningAllPieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
},
/**
- * Lookup398: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup402: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
PalletNonfungibleItemData: {
owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup400: up_data_structs::PropertyScope
+ * Lookup404: up_data_structs::PropertyScope
**/
UpDataStructsPropertyScope: {
- _enum: ['None', 'Rmrk', 'Eth']
+ _enum: ['None', 'Rmrk']
},
/**
- * Lookup402: pallet_nonfungible::pallet::Error<T>
+ * Lookup406: pallet_nonfungible::pallet::Error<T>
**/
PalletNonfungibleError: {
_enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
},
/**
- * Lookup403: pallet_structure::pallet::Error<T>
+ * Lookup407: pallet_structure::pallet::Error<T>
**/
PalletStructureError: {
_enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
},
/**
- * Lookup404: pallet_rmrk_core::pallet::Error<T>
+ * Lookup408: pallet_rmrk_core::pallet::Error<T>
**/
PalletRmrkCoreError: {
_enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
},
/**
- * Lookup406: pallet_rmrk_equip::pallet::Error<T>
+ * Lookup410: pallet_rmrk_equip::pallet::Error<T>
**/
PalletRmrkEquipError: {
_enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst', 'PartDoesntExist', 'NoEquippableOnFixedPart']
},
/**
- * Lookup409: pallet_evm::pallet::Error<T>
+ * Lookup416: pallet_app_promotion::pallet::Error<T>
**/
+ PalletAppPromotionError: {
+ _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFunds', 'PendingForBlockOverflow', 'SponsorNotSet', 'IncorrectLockedBalanceOperation']
+ },
+ /**
+ * Lookup419: pallet_evm::pallet::Error<T>
+ **/
PalletEvmError: {
_enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
},
/**
- * Lookup412: fp_rpc::TransactionStatus
+ * Lookup422: fp_rpc::TransactionStatus
**/
FpRpcTransactionStatus: {
transactionHash: 'H256',
@@ -3080,11 +3136,11 @@
logsBloom: 'EthbloomBloom'
},
/**
- * Lookup414: ethbloom::Bloom
+ * Lookup424: ethbloom::Bloom
**/
EthbloomBloom: '[u8;256]',
/**
- * Lookup416: ethereum::receipt::ReceiptV3
+ * Lookup426: ethereum::receipt::ReceiptV3
**/
EthereumReceiptReceiptV3: {
_enum: {
@@ -3094,7 +3150,7 @@
}
},
/**
- * Lookup417: ethereum::receipt::EIP658ReceiptData
+ * Lookup427: ethereum::receipt::EIP658ReceiptData
**/
EthereumReceiptEip658ReceiptData: {
statusCode: 'u8',
@@ -3103,7 +3159,7 @@
logs: 'Vec<EthereumLog>'
},
/**
- * Lookup418: ethereum::block::Block<ethereum::transaction::TransactionV2>
+ * Lookup428: ethereum::block::Block<ethereum::transaction::TransactionV2>
**/
EthereumBlock: {
header: 'EthereumHeader',
@@ -3111,7 +3167,7 @@
ommers: 'Vec<EthereumHeader>'
},
/**
- * Lookup419: ethereum::header::Header
+ * Lookup429: ethereum::header::Header
**/
EthereumHeader: {
parentHash: 'H256',
@@ -3131,41 +3187,51 @@
nonce: 'EthereumTypesHashH64'
},
/**
- * Lookup420: ethereum_types::hash::H64
+ * Lookup430: ethereum_types::hash::H64
**/
EthereumTypesHashH64: '[u8;8]',
/**
- * Lookup425: pallet_ethereum::pallet::Error<T>
+ * Lookup435: pallet_ethereum::pallet::Error<T>
**/
PalletEthereumError: {
_enum: ['InvalidSignature', 'PreLogExists']
},
/**
- * Lookup426: pallet_evm_coder_substrate::pallet::Error<T>
+ * Lookup436: pallet_evm_coder_substrate::pallet::Error<T>
**/
PalletEvmCoderSubstrateError: {
_enum: ['OutOfGas', 'OutOfFund']
},
/**
- * Lookup427: pallet_evm_contract_helpers::SponsoringModeT
+ * Lookup437: up_data_structs::SponsorshipState<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
+ UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: {
+ _enum: {
+ Disabled: 'Null',
+ Unconfirmed: 'PalletEvmAccountBasicCrossAccountIdRepr',
+ Confirmed: 'PalletEvmAccountBasicCrossAccountIdRepr'
+ }
+ },
+ /**
+ * Lookup438: pallet_evm_contract_helpers::SponsoringModeT
+ **/
PalletEvmContractHelpersSponsoringModeT: {
_enum: ['Disabled', 'Allowlisted', 'Generous']
},
/**
- * Lookup429: pallet_evm_contract_helpers::pallet::Error<T>
+ * Lookup440: pallet_evm_contract_helpers::pallet::Error<T>
**/
PalletEvmContractHelpersError: {
- _enum: ['NoPermission']
+ _enum: ['NoPermission', 'NoPendingSponsor']
},
/**
- * Lookup430: pallet_evm_migration::pallet::Error<T>
+ * Lookup441: pallet_evm_migration::pallet::Error<T>
**/
PalletEvmMigrationError: {
_enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
},
/**
- * Lookup432: sp_runtime::MultiSignature
+ * Lookup443: sp_runtime::MultiSignature
**/
SpRuntimeMultiSignature: {
_enum: {
@@ -3175,43 +3241,43 @@
}
},
/**
- * Lookup433: sp_core::ed25519::Signature
+ * Lookup444: sp_core::ed25519::Signature
**/
SpCoreEd25519Signature: '[u8;64]',
/**
- * Lookup435: sp_core::sr25519::Signature
+ * Lookup446: sp_core::sr25519::Signature
**/
SpCoreSr25519Signature: '[u8;64]',
/**
- * Lookup436: sp_core::ecdsa::Signature
+ * Lookup447: sp_core::ecdsa::Signature
**/
SpCoreEcdsaSignature: '[u8;65]',
/**
- * Lookup439: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+ * Lookup450: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
**/
FrameSystemExtensionsCheckSpecVersion: 'Null',
/**
- * Lookup440: frame_system::extensions::check_genesis::CheckGenesis<T>
+ * Lookup451: frame_system::extensions::check_genesis::CheckGenesis<T>
**/
FrameSystemExtensionsCheckGenesis: 'Null',
/**
- * Lookup443: frame_system::extensions::check_nonce::CheckNonce<T>
+ * Lookup454: frame_system::extensions::check_nonce::CheckNonce<T>
**/
FrameSystemExtensionsCheckNonce: 'Compact<u32>',
/**
- * Lookup444: frame_system::extensions::check_weight::CheckWeight<T>
+ * Lookup455: frame_system::extensions::check_weight::CheckWeight<T>
**/
FrameSystemExtensionsCheckWeight: 'Null',
/**
- * Lookup445: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+ * Lookup456: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
**/
PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
/**
- * Lookup446: opal_runtime::Runtime
+ * Lookup457: opal_runtime::Runtime
**/
OpalRuntimeRuntime: 'Null',
/**
- * Lookup447: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
+ * Lookup458: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
**/
PalletEthereumFakeTransactionFinalizer: 'Null'
};
tests/src/interfaces/registry.tsdiffbeforeafterboth--- a/tests/src/interfaces/registry.ts
+++ b/tests/src/interfaces/registry.ts
@@ -5,7 +5,7 @@
// this is required to allow for ambient/previous definitions
import '@polkadot/types/types/registry';
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletAppPromotionCall, PalletAppPromotionError, PalletAppPromotionEvent, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletConfigurationCall, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersEvent, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUniqueSchedulerCall, PalletUniqueSchedulerError, PalletUniqueSchedulerEvent, PalletUniqueSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExMultipleOwners, UpDataStructsCreateRefungibleExSingleOwner, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsPropertyScope, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipStateAccountId32, UpDataStructsSponsorshipStateBasicCrossAccountIdRepr, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
declare module '@polkadot/types/types/registry' {
interface InterfaceTypes {
@@ -83,6 +83,9 @@
OrmlVestingModuleError: OrmlVestingModuleError;
OrmlVestingModuleEvent: OrmlVestingModuleEvent;
OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;
+ PalletAppPromotionCall: PalletAppPromotionCall;
+ PalletAppPromotionError: PalletAppPromotionError;
+ PalletAppPromotionEvent: PalletAppPromotionEvent;
PalletBalancesAccountData: PalletBalancesAccountData;
PalletBalancesBalanceLock: PalletBalancesBalanceLock;
PalletBalancesCall: PalletBalancesCall;
@@ -103,6 +106,7 @@
PalletEvmCall: PalletEvmCall;
PalletEvmCoderSubstrateError: PalletEvmCoderSubstrateError;
PalletEvmContractHelpersError: PalletEvmContractHelpersError;
+ PalletEvmContractHelpersEvent: PalletEvmContractHelpersEvent;
PalletEvmContractHelpersSponsoringModeT: PalletEvmContractHelpersSponsoringModeT;
PalletEvmError: PalletEvmError;
PalletEvmEvent: PalletEvmEvent;
@@ -213,7 +217,8 @@
UpDataStructsPropertyScope: UpDataStructsPropertyScope;
UpDataStructsRpcCollection: UpDataStructsRpcCollection;
UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;
- UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;
+ UpDataStructsSponsorshipStateAccountId32: UpDataStructsSponsorshipStateAccountId32;
+ UpDataStructsSponsorshipStateBasicCrossAccountIdRepr: UpDataStructsSponsorshipStateBasicCrossAccountIdRepr;
UpDataStructsTokenChild: UpDataStructsTokenChild;
UpDataStructsTokenData: UpDataStructsTokenData;
XcmDoubleEncoded: XcmDoubleEncoded;
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1198,7 +1198,20 @@
readonly type: 'BaseCreated' | 'EquippablesUpdated';
}
- /** @name PalletEvmEvent (103) */
+ /** @name PalletAppPromotionEvent (103) */
+ interface PalletAppPromotionEvent extends Enum {
+ readonly isStakingRecalculation: boolean;
+ readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>;
+ readonly isStake: boolean;
+ readonly asStake: ITuple<[AccountId32, u128]>;
+ readonly isUnstake: boolean;
+ readonly asUnstake: ITuple<[AccountId32, u128]>;
+ readonly isSetAdmin: boolean;
+ readonly asSetAdmin: AccountId32;
+ readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin';
+ }
+
+ /** @name PalletEvmEvent (104) */
interface PalletEvmEvent extends Enum {
readonly isLog: boolean;
readonly asLog: EthereumLog;
@@ -1217,21 +1230,21 @@
readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
}
- /** @name EthereumLog (104) */
+ /** @name EthereumLog (105) */
interface EthereumLog extends Struct {
readonly address: H160;
readonly topics: Vec<H256>;
readonly data: Bytes;
}
- /** @name PalletEthereumEvent (108) */
+ /** @name PalletEthereumEvent (109) */
interface PalletEthereumEvent extends Enum {
readonly isExecuted: boolean;
readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
readonly type: 'Executed';
}
- /** @name EvmCoreErrorExitReason (109) */
+ /** @name EvmCoreErrorExitReason (110) */
interface EvmCoreErrorExitReason extends Enum {
readonly isSucceed: boolean;
readonly asSucceed: EvmCoreErrorExitSucceed;
@@ -1244,7 +1257,7 @@
readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
}
- /** @name EvmCoreErrorExitSucceed (110) */
+ /** @name EvmCoreErrorExitSucceed (111) */
interface EvmCoreErrorExitSucceed extends Enum {
readonly isStopped: boolean;
readonly isReturned: boolean;
@@ -1252,7 +1265,7 @@
readonly type: 'Stopped' | 'Returned' | 'Suicided';
}
- /** @name EvmCoreErrorExitError (111) */
+ /** @name EvmCoreErrorExitError (112) */
interface EvmCoreErrorExitError extends Enum {
readonly isStackUnderflow: boolean;
readonly isStackOverflow: boolean;
@@ -1273,13 +1286,13 @@
readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
}
- /** @name EvmCoreErrorExitRevert (114) */
+ /** @name EvmCoreErrorExitRevert (115) */
interface EvmCoreErrorExitRevert extends Enum {
readonly isReverted: boolean;
readonly type: 'Reverted';
}
- /** @name EvmCoreErrorExitFatal (115) */
+ /** @name EvmCoreErrorExitFatal (116) */
interface EvmCoreErrorExitFatal extends Enum {
readonly isNotSupported: boolean;
readonly isUnhandledInterrupt: boolean;
@@ -1290,7 +1303,18 @@
readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
}
- /** @name FrameSystemPhase (116) */
+ /** @name PalletEvmContractHelpersEvent (117) */
+ interface PalletEvmContractHelpersEvent extends Enum {
+ readonly isContractSponsorSet: boolean;
+ readonly asContractSponsorSet: ITuple<[H160, AccountId32]>;
+ readonly isContractSponsorshipConfirmed: boolean;
+ readonly asContractSponsorshipConfirmed: ITuple<[H160, AccountId32]>;
+ readonly isContractSponsorRemoved: boolean;
+ readonly asContractSponsorRemoved: H160;
+ readonly type: 'ContractSponsorSet' | 'ContractSponsorshipConfirmed' | 'ContractSponsorRemoved';
+ }
+
+ /** @name FrameSystemPhase (118) */
interface FrameSystemPhase extends Enum {
readonly isApplyExtrinsic: boolean;
readonly asApplyExtrinsic: u32;
@@ -1299,13 +1323,13 @@
readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
}
- /** @name FrameSystemLastRuntimeUpgradeInfo (118) */
+ /** @name FrameSystemLastRuntimeUpgradeInfo (120) */
interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
readonly specVersion: Compact<u32>;
readonly specName: Text;
}
- /** @name FrameSystemCall (119) */
+ /** @name FrameSystemCall (121) */
interface FrameSystemCall extends Enum {
readonly isFillBlock: boolean;
readonly asFillBlock: {
@@ -1347,21 +1371,21 @@
readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';
}
- /** @name FrameSystemLimitsBlockWeights (124) */
+ /** @name FrameSystemLimitsBlockWeights (126) */
interface FrameSystemLimitsBlockWeights extends Struct {
readonly baseBlock: u64;
readonly maxBlock: u64;
readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
}
- /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (125) */
+ /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (127) */
interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
readonly normal: FrameSystemLimitsWeightsPerClass;
readonly operational: FrameSystemLimitsWeightsPerClass;
readonly mandatory: FrameSystemLimitsWeightsPerClass;
}
- /** @name FrameSystemLimitsWeightsPerClass (126) */
+ /** @name FrameSystemLimitsWeightsPerClass (128) */
interface FrameSystemLimitsWeightsPerClass extends Struct {
readonly baseExtrinsic: u64;
readonly maxExtrinsic: Option<u64>;
@@ -1369,25 +1393,25 @@
readonly reserved: Option<u64>;
}
- /** @name FrameSystemLimitsBlockLength (128) */
+ /** @name FrameSystemLimitsBlockLength (130) */
interface FrameSystemLimitsBlockLength extends Struct {
readonly max: FrameSupportWeightsPerDispatchClassU32;
}
- /** @name FrameSupportWeightsPerDispatchClassU32 (129) */
+ /** @name FrameSupportWeightsPerDispatchClassU32 (131) */
interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
readonly normal: u32;
readonly operational: u32;
readonly mandatory: u32;
}
- /** @name FrameSupportWeightsRuntimeDbWeight (130) */
+ /** @name FrameSupportWeightsRuntimeDbWeight (132) */
interface FrameSupportWeightsRuntimeDbWeight extends Struct {
readonly read: u64;
readonly write: u64;
}
- /** @name SpVersionRuntimeVersion (131) */
+ /** @name SpVersionRuntimeVersion (133) */
interface SpVersionRuntimeVersion extends Struct {
readonly specName: Text;
readonly implName: Text;
@@ -1399,7 +1423,7 @@
readonly stateVersion: u8;
}
- /** @name FrameSystemError (136) */
+ /** @name FrameSystemError (138) */
interface FrameSystemError extends Enum {
readonly isInvalidSpecName: boolean;
readonly isSpecVersionNeedsToIncrease: boolean;
@@ -1410,7 +1434,7 @@
readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
}
- /** @name PolkadotPrimitivesV2PersistedValidationData (137) */
+ /** @name PolkadotPrimitivesV2PersistedValidationData (139) */
interface PolkadotPrimitivesV2PersistedValidationData extends Struct {
readonly parentHead: Bytes;
readonly relayParentNumber: u32;
@@ -1418,18 +1442,18 @@
readonly maxPovSize: u32;
}
- /** @name PolkadotPrimitivesV2UpgradeRestriction (140) */
+ /** @name PolkadotPrimitivesV2UpgradeRestriction (142) */
interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {
readonly isPresent: boolean;
readonly type: 'Present';
}
- /** @name SpTrieStorageProof (141) */
+ /** @name SpTrieStorageProof (143) */
interface SpTrieStorageProof extends Struct {
readonly trieNodes: BTreeSet<Bytes>;
}
- /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (143) */
+ /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (145) */
interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {
readonly dmqMqcHead: H256;
readonly relayDispatchQueueSize: ITuple<[u32, u32]>;
@@ -1437,7 +1461,7 @@
readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;
}
- /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (146) */
+ /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (148) */
interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {
readonly maxCapacity: u32;
readonly maxTotalSize: u32;
@@ -1447,7 +1471,7 @@
readonly mqcHead: Option<H256>;
}
- /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (147) */
+ /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (149) */
interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {
readonly maxCodeSize: u32;
readonly maxHeadDataSize: u32;
@@ -1460,13 +1484,13 @@
readonly validationUpgradeDelay: u32;
}
- /** @name PolkadotCorePrimitivesOutboundHrmpMessage (153) */
+ /** @name PolkadotCorePrimitivesOutboundHrmpMessage (155) */
interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {
readonly recipient: u32;
readonly data: Bytes;
}
- /** @name CumulusPalletParachainSystemCall (154) */
+ /** @name CumulusPalletParachainSystemCall (156) */
interface CumulusPalletParachainSystemCall extends Enum {
readonly isSetValidationData: boolean;
readonly asSetValidationData: {
@@ -1487,7 +1511,7 @@
readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';
}
- /** @name CumulusPrimitivesParachainInherentParachainInherentData (155) */
+ /** @name CumulusPrimitivesParachainInherentParachainInherentData (157) */
interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {
readonly validationData: PolkadotPrimitivesV2PersistedValidationData;
readonly relayChainState: SpTrieStorageProof;
@@ -1495,19 +1519,19 @@
readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;
}
- /** @name PolkadotCorePrimitivesInboundDownwardMessage (157) */
+ /** @name PolkadotCorePrimitivesInboundDownwardMessage (159) */
interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
readonly sentAt: u32;
readonly msg: Bytes;
}
- /** @name PolkadotCorePrimitivesInboundHrmpMessage (160) */
+ /** @name PolkadotCorePrimitivesInboundHrmpMessage (162) */
interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {
readonly sentAt: u32;
readonly data: Bytes;
}
- /** @name CumulusPalletParachainSystemError (163) */
+ /** @name CumulusPalletParachainSystemError (165) */
interface CumulusPalletParachainSystemError extends Enum {
readonly isOverlappingUpgrades: boolean;
readonly isProhibitedByPolkadot: boolean;
@@ -1520,14 +1544,14 @@
readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';
}
- /** @name PalletBalancesBalanceLock (165) */
+ /** @name PalletBalancesBalanceLock (167) */
interface PalletBalancesBalanceLock extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
readonly reasons: PalletBalancesReasons;
}
- /** @name PalletBalancesReasons (166) */
+ /** @name PalletBalancesReasons (168) */
interface PalletBalancesReasons extends Enum {
readonly isFee: boolean;
readonly isMisc: boolean;
@@ -1535,20 +1559,20 @@
readonly type: 'Fee' | 'Misc' | 'All';
}
- /** @name PalletBalancesReserveData (169) */
+ /** @name PalletBalancesReserveData (171) */
interface PalletBalancesReserveData extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
}
- /** @name PalletBalancesReleases (171) */
+ /** @name PalletBalancesReleases (173) */
interface PalletBalancesReleases extends Enum {
readonly isV100: boolean;
readonly isV200: boolean;
readonly type: 'V100' | 'V200';
}
- /** @name PalletBalancesCall (172) */
+ /** @name PalletBalancesCall (174) */
interface PalletBalancesCall extends Enum {
readonly isTransfer: boolean;
readonly asTransfer: {
@@ -1585,7 +1609,7 @@
readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';
}
- /** @name PalletBalancesError (175) */
+ /** @name PalletBalancesError (177) */
interface PalletBalancesError extends Enum {
readonly isVestingBalance: boolean;
readonly isLiquidityRestrictions: boolean;
@@ -1598,7 +1622,7 @@
readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';
}
- /** @name PalletTimestampCall (177) */
+ /** @name PalletTimestampCall (179) */
interface PalletTimestampCall extends Enum {
readonly isSet: boolean;
readonly asSet: {
@@ -1607,14 +1631,14 @@
readonly type: 'Set';
}
- /** @name PalletTransactionPaymentReleases (179) */
+ /** @name PalletTransactionPaymentReleases (181) */
interface PalletTransactionPaymentReleases extends Enum {
readonly isV1Ancient: boolean;
readonly isV2: boolean;
readonly type: 'V1Ancient' | 'V2';
}
- /** @name PalletTreasuryProposal (180) */
+ /** @name PalletTreasuryProposal (182) */
interface PalletTreasuryProposal extends Struct {
readonly proposer: AccountId32;
readonly value: u128;
@@ -1622,7 +1646,7 @@
readonly bond: u128;
}
- /** @name PalletTreasuryCall (183) */
+ /** @name PalletTreasuryCall (185) */
interface PalletTreasuryCall extends Enum {
readonly isProposeSpend: boolean;
readonly asProposeSpend: {
@@ -1649,10 +1673,10 @@
readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';
}
- /** @name FrameSupportPalletId (186) */
+ /** @name FrameSupportPalletId (188) */
interface FrameSupportPalletId extends U8aFixed {}
- /** @name PalletTreasuryError (187) */
+ /** @name PalletTreasuryError (189) */
interface PalletTreasuryError extends Enum {
readonly isInsufficientProposersBalance: boolean;
readonly isInvalidIndex: boolean;
@@ -1662,7 +1686,7 @@
readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';
}
- /** @name PalletSudoCall (188) */
+ /** @name PalletSudoCall (190) */
interface PalletSudoCall extends Enum {
readonly isSudo: boolean;
readonly asSudo: {
@@ -1685,7 +1709,7 @@
readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';
}
- /** @name OrmlVestingModuleCall (190) */
+ /** @name OrmlVestingModuleCall (192) */
interface OrmlVestingModuleCall extends Enum {
readonly isClaim: boolean;
readonly isVestedTransfer: boolean;
@@ -1705,7 +1729,7 @@
readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';
}
- /** @name CumulusPalletXcmpQueueCall (192) */
+ /** @name CumulusPalletXcmpQueueCall (194) */
interface CumulusPalletXcmpQueueCall extends Enum {
readonly isServiceOverweight: boolean;
readonly asServiceOverweight: {
@@ -1741,7 +1765,7 @@
readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';
}
- /** @name PalletXcmCall (193) */
+ /** @name PalletXcmCall (195) */
interface PalletXcmCall extends Enum {
readonly isSend: boolean;
readonly asSend: {
@@ -1803,7 +1827,7 @@
readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';
}
- /** @name XcmVersionedXcm (194) */
+ /** @name XcmVersionedXcm (196) */
interface XcmVersionedXcm extends Enum {
readonly isV0: boolean;
readonly asV0: XcmV0Xcm;
@@ -1814,7 +1838,7 @@
readonly type: 'V0' | 'V1' | 'V2';
}
- /** @name XcmV0Xcm (195) */
+ /** @name XcmV0Xcm (197) */
interface XcmV0Xcm extends Enum {
readonly isWithdrawAsset: boolean;
readonly asWithdrawAsset: {
@@ -1877,7 +1901,7 @@
readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
}
- /** @name XcmV0Order (197) */
+ /** @name XcmV0Order (199) */
interface XcmV0Order extends Enum {
readonly isNull: boolean;
readonly isDepositAsset: boolean;
@@ -1925,14 +1949,14 @@
readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}
- /** @name XcmV0Response (199) */
+ /** @name XcmV0Response (201) */
interface XcmV0Response extends Enum {
readonly isAssets: boolean;
readonly asAssets: Vec<XcmV0MultiAsset>;
readonly type: 'Assets';
}
- /** @name XcmV1Xcm (200) */
+ /** @name XcmV1Xcm (202) */
interface XcmV1Xcm extends Enum {
readonly isWithdrawAsset: boolean;
readonly asWithdrawAsset: {
@@ -2001,7 +2025,7 @@
readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';
}
- /** @name XcmV1Order (202) */
+ /** @name XcmV1Order (204) */
interface XcmV1Order extends Enum {
readonly isNoop: boolean;
readonly isDepositAsset: boolean;
@@ -2051,7 +2075,7 @@
readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}
- /** @name XcmV1Response (204) */
+ /** @name XcmV1Response (206) */
interface XcmV1Response extends Enum {
readonly isAssets: boolean;
readonly asAssets: XcmV1MultiassetMultiAssets;
@@ -2060,10 +2084,10 @@
readonly type: 'Assets' | 'Version';
}
- /** @name CumulusPalletXcmCall (218) */
+ /** @name CumulusPalletXcmCall (220) */
type CumulusPalletXcmCall = Null;
- /** @name CumulusPalletDmpQueueCall (219) */
+ /** @name CumulusPalletDmpQueueCall (221) */
interface CumulusPalletDmpQueueCall extends Enum {
readonly isServiceOverweight: boolean;
readonly asServiceOverweight: {
@@ -2073,7 +2097,7 @@
readonly type: 'ServiceOverweight';
}
- /** @name PalletInflationCall (220) */
+ /** @name PalletInflationCall (222) */
interface PalletInflationCall extends Enum {
readonly isStartInflation: boolean;
readonly asStartInflation: {
@@ -2082,7 +2106,7 @@
readonly type: 'StartInflation';
}
- /** @name PalletUniqueCall (221) */
+ /** @name PalletUniqueCall (223) */
interface PalletUniqueCall extends Enum {
readonly isCreateCollection: boolean;
readonly asCreateCollection: {
@@ -2240,7 +2264,7 @@
readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition';
}
- /** @name UpDataStructsCollectionMode (226) */
+ /** @name UpDataStructsCollectionMode (228) */
interface UpDataStructsCollectionMode extends Enum {
readonly isNft: boolean;
readonly isFungible: boolean;
@@ -2249,7 +2273,7 @@
readonly type: 'Nft' | 'Fungible' | 'ReFungible';
}
- /** @name UpDataStructsCreateCollectionData (227) */
+ /** @name UpDataStructsCreateCollectionData (229) */
interface UpDataStructsCreateCollectionData extends Struct {
readonly mode: UpDataStructsCollectionMode;
readonly access: Option<UpDataStructsAccessMode>;
@@ -2263,14 +2287,14 @@
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsAccessMode (229) */
+ /** @name UpDataStructsAccessMode (231) */
interface UpDataStructsAccessMode extends Enum {
readonly isNormal: boolean;
readonly isAllowList: boolean;
readonly type: 'Normal' | 'AllowList';
}
- /** @name UpDataStructsCollectionLimits (231) */
+ /** @name UpDataStructsCollectionLimits (233) */
interface UpDataStructsCollectionLimits extends Struct {
readonly accountTokenOwnershipLimit: Option<u32>;
readonly sponsoredDataSize: Option<u32>;
@@ -2283,7 +2307,7 @@
readonly transfersEnabled: Option<bool>;
}
- /** @name UpDataStructsSponsoringRateLimit (233) */
+ /** @name UpDataStructsSponsoringRateLimit (235) */
interface UpDataStructsSponsoringRateLimit extends Enum {
readonly isSponsoringDisabled: boolean;
readonly isBlocks: boolean;
@@ -2291,43 +2315,43 @@
readonly type: 'SponsoringDisabled' | 'Blocks';
}
- /** @name UpDataStructsCollectionPermissions (236) */
+ /** @name UpDataStructsCollectionPermissions (238) */
interface UpDataStructsCollectionPermissions extends Struct {
readonly access: Option<UpDataStructsAccessMode>;
readonly mintMode: Option<bool>;
readonly nesting: Option<UpDataStructsNestingPermissions>;
}
- /** @name UpDataStructsNestingPermissions (238) */
+ /** @name UpDataStructsNestingPermissions (240) */
interface UpDataStructsNestingPermissions extends Struct {
readonly tokenOwner: bool;
readonly collectionAdmin: bool;
readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;
}
- /** @name UpDataStructsOwnerRestrictedSet (240) */
+ /** @name UpDataStructsOwnerRestrictedSet (242) */
interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}
- /** @name UpDataStructsPropertyKeyPermission (245) */
+ /** @name UpDataStructsPropertyKeyPermission (247) */
interface UpDataStructsPropertyKeyPermission extends Struct {
readonly key: Bytes;
readonly permission: UpDataStructsPropertyPermission;
}
- /** @name UpDataStructsPropertyPermission (246) */
+ /** @name UpDataStructsPropertyPermission (248) */
interface UpDataStructsPropertyPermission extends Struct {
readonly mutable: bool;
readonly collectionAdmin: bool;
readonly tokenOwner: bool;
}
- /** @name UpDataStructsProperty (249) */
+ /** @name UpDataStructsProperty (251) */
interface UpDataStructsProperty extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name UpDataStructsCreateItemData (252) */
+ /** @name UpDataStructsCreateItemData (254) */
interface UpDataStructsCreateItemData extends Enum {
readonly isNft: boolean;
readonly asNft: UpDataStructsCreateNftData;
@@ -2338,23 +2362,23 @@
readonly type: 'Nft' | 'Fungible' | 'ReFungible';
}
- /** @name UpDataStructsCreateNftData (253) */
+ /** @name UpDataStructsCreateNftData (255) */
interface UpDataStructsCreateNftData extends Struct {
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsCreateFungibleData (254) */
+ /** @name UpDataStructsCreateFungibleData (256) */
interface UpDataStructsCreateFungibleData extends Struct {
readonly value: u128;
}
- /** @name UpDataStructsCreateReFungibleData (255) */
+ /** @name UpDataStructsCreateReFungibleData (257) */
interface UpDataStructsCreateReFungibleData extends Struct {
readonly pieces: u128;
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsCreateItemExData (258) */
+ /** @name UpDataStructsCreateItemExData (260) */
interface UpDataStructsCreateItemExData extends Enum {
readonly isNft: boolean;
readonly asNft: Vec<UpDataStructsCreateNftExData>;
@@ -2367,26 +2391,26 @@
readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';
}
- /** @name UpDataStructsCreateNftExData (260) */
+ /** @name UpDataStructsCreateNftExData (262) */
interface UpDataStructsCreateNftExData extends Struct {
readonly properties: Vec<UpDataStructsProperty>;
readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name UpDataStructsCreateRefungibleExSingleOwner (267) */
+ /** @name UpDataStructsCreateRefungibleExSingleOwner (269) */
interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {
readonly user: PalletEvmAccountBasicCrossAccountIdRepr;
readonly pieces: u128;
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name UpDataStructsCreateRefungibleExMultipleOwners (269) */
+ /** @name UpDataStructsCreateRefungibleExMultipleOwners (271) */
interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {
readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
readonly properties: Vec<UpDataStructsProperty>;
}
- /** @name PalletUniqueSchedulerCall (270) */
+ /** @name PalletUniqueSchedulerCall (272) */
interface PalletUniqueSchedulerCall extends Enum {
readonly isScheduleNamed: boolean;
readonly asScheduleNamed: {
@@ -2411,7 +2435,7 @@
readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';
}
- /** @name FrameSupportScheduleMaybeHashed (272) */
+ /** @name FrameSupportScheduleMaybeHashed (274) */
interface FrameSupportScheduleMaybeHashed extends Enum {
readonly isValue: boolean;
readonly asValue: Call;
@@ -2420,7 +2444,7 @@
readonly type: 'Value' | 'Hash';
}
- /** @name PalletConfigurationCall (273) */
+ /** @name PalletConfigurationCall (275) */
interface PalletConfigurationCall extends Enum {
readonly isSetWeightToFeeCoefficientOverride: boolean;
readonly asSetWeightToFeeCoefficientOverride: {
@@ -2433,13 +2457,13 @@
readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride';
}
- /** @name PalletTemplateTransactionPaymentCall (274) */
+ /** @name PalletTemplateTransactionPaymentCall (276) */
type PalletTemplateTransactionPaymentCall = Null;
- /** @name PalletStructureCall (275) */
+ /** @name PalletStructureCall (277) */
type PalletStructureCall = Null;
- /** @name PalletRmrkCoreCall (276) */
+ /** @name PalletRmrkCoreCall (278) */
interface PalletRmrkCoreCall extends Enum {
readonly isCreateCollection: boolean;
readonly asCreateCollection: {
@@ -2545,7 +2569,7 @@
readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';
}
- /** @name RmrkTraitsResourceResourceTypes (282) */
+ /** @name RmrkTraitsResourceResourceTypes (284) */
interface RmrkTraitsResourceResourceTypes extends Enum {
readonly isBasic: boolean;
readonly asBasic: RmrkTraitsResourceBasicResource;
@@ -2556,7 +2580,7 @@
readonly type: 'Basic' | 'Composable' | 'Slot';
}
- /** @name RmrkTraitsResourceBasicResource (284) */
+ /** @name RmrkTraitsResourceBasicResource (286) */
interface RmrkTraitsResourceBasicResource extends Struct {
readonly src: Option<Bytes>;
readonly metadata: Option<Bytes>;
@@ -2564,7 +2588,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name RmrkTraitsResourceComposableResource (286) */
+ /** @name RmrkTraitsResourceComposableResource (288) */
interface RmrkTraitsResourceComposableResource extends Struct {
readonly parts: Vec<u32>;
readonly base: u32;
@@ -2574,7 +2598,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name RmrkTraitsResourceSlotResource (287) */
+ /** @name RmrkTraitsResourceSlotResource (289) */
interface RmrkTraitsResourceSlotResource extends Struct {
readonly base: u32;
readonly src: Option<Bytes>;
@@ -2584,7 +2608,7 @@
readonly thumb: Option<Bytes>;
}
- /** @name PalletRmrkEquipCall (290) */
+ /** @name PalletRmrkEquipCall (292) */
interface PalletRmrkEquipCall extends Enum {
readonly isCreateBase: boolean;
readonly asCreateBase: {
@@ -2606,7 +2630,7 @@
readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';
}
- /** @name RmrkTraitsPartPartType (293) */
+ /** @name RmrkTraitsPartPartType (295) */
interface RmrkTraitsPartPartType extends Enum {
readonly isFixedPart: boolean;
readonly asFixedPart: RmrkTraitsPartFixedPart;
@@ -2615,14 +2639,14 @@
readonly type: 'FixedPart' | 'SlotPart';
}
- /** @name RmrkTraitsPartFixedPart (295) */
+ /** @name RmrkTraitsPartFixedPart (297) */
interface RmrkTraitsPartFixedPart extends Struct {
readonly id: u32;
readonly z: u32;
readonly src: Bytes;
}
- /** @name RmrkTraitsPartSlotPart (296) */
+ /** @name RmrkTraitsPartSlotPart (298) */
interface RmrkTraitsPartSlotPart extends Struct {
readonly id: u32;
readonly equippable: RmrkTraitsPartEquippableList;
@@ -2630,7 +2654,7 @@
readonly z: u32;
}
- /** @name RmrkTraitsPartEquippableList (297) */
+ /** @name RmrkTraitsPartEquippableList (299) */
interface RmrkTraitsPartEquippableList extends Enum {
readonly isAll: boolean;
readonly isEmpty: boolean;
@@ -2639,20 +2663,54 @@
readonly type: 'All' | 'Empty' | 'Custom';
}
- /** @name RmrkTraitsTheme (299) */
+ /** @name RmrkTraitsTheme (301) */
interface RmrkTraitsTheme extends Struct {
readonly name: Bytes;
readonly properties: Vec<RmrkTraitsThemeThemeProperty>;
readonly inherit: bool;
}
- /** @name RmrkTraitsThemeThemeProperty (301) */
+ /** @name RmrkTraitsThemeThemeProperty (303) */
interface RmrkTraitsThemeThemeProperty extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name PalletEvmCall (303) */
+ /** @name PalletAppPromotionCall (305) */
+ interface PalletAppPromotionCall extends Enum {
+ readonly isSetAdminAddress: boolean;
+ readonly asSetAdminAddress: {
+ readonly admin: PalletEvmAccountBasicCrossAccountIdRepr;
+ } & Struct;
+ readonly isStake: boolean;
+ readonly asStake: {
+ readonly amount: u128;
+ } & Struct;
+ readonly isUnstake: boolean;
+ readonly isSponsorCollection: boolean;
+ readonly asSponsorCollection: {
+ readonly collectionId: u32;
+ } & Struct;
+ readonly isStopSponsoringCollection: boolean;
+ readonly asStopSponsoringCollection: {
+ readonly collectionId: u32;
+ } & Struct;
+ readonly isSponsorContract: boolean;
+ readonly asSponsorContract: {
+ readonly contractId: H160;
+ } & Struct;
+ readonly isStopSponsoringContract: boolean;
+ readonly asStopSponsoringContract: {
+ readonly contractId: H160;
+ } & Struct;
+ readonly isPayoutStakers: boolean;
+ readonly asPayoutStakers: {
+ readonly stakersNumber: Option<u8>;
+ } & Struct;
+ readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';
+ }
+
+ /** @name PalletEvmCall (307) */
interface PalletEvmCall extends Enum {
readonly isWithdraw: boolean;
readonly asWithdraw: {
@@ -2697,7 +2755,7 @@
readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
}
- /** @name PalletEthereumCall (307) */
+ /** @name PalletEthereumCall (311) */
interface PalletEthereumCall extends Enum {
readonly isTransact: boolean;
readonly asTransact: {
@@ -2706,7 +2764,7 @@
readonly type: 'Transact';
}
- /** @name EthereumTransactionTransactionV2 (308) */
+ /** @name EthereumTransactionTransactionV2 (312) */
interface EthereumTransactionTransactionV2 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumTransactionLegacyTransaction;
@@ -2717,7 +2775,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumTransactionLegacyTransaction (309) */
+ /** @name EthereumTransactionLegacyTransaction (313) */
interface EthereumTransactionLegacyTransaction extends Struct {
readonly nonce: U256;
readonly gasPrice: U256;
@@ -2728,7 +2786,7 @@
readonly signature: EthereumTransactionTransactionSignature;
}
- /** @name EthereumTransactionTransactionAction (310) */
+ /** @name EthereumTransactionTransactionAction (314) */
interface EthereumTransactionTransactionAction extends Enum {
readonly isCall: boolean;
readonly asCall: H160;
@@ -2736,14 +2794,14 @@
readonly type: 'Call' | 'Create';
}
- /** @name EthereumTransactionTransactionSignature (311) */
+ /** @name EthereumTransactionTransactionSignature (315) */
interface EthereumTransactionTransactionSignature extends Struct {
readonly v: u64;
readonly r: H256;
readonly s: H256;
}
- /** @name EthereumTransactionEip2930Transaction (313) */
+ /** @name EthereumTransactionEip2930Transaction (317) */
interface EthereumTransactionEip2930Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -2758,13 +2816,13 @@
readonly s: H256;
}
- /** @name EthereumTransactionAccessListItem (315) */
+ /** @name EthereumTransactionAccessListItem (319) */
interface EthereumTransactionAccessListItem extends Struct {
readonly address: H160;
readonly storageKeys: Vec<H256>;
}
- /** @name EthereumTransactionEip1559Transaction (316) */
+ /** @name EthereumTransactionEip1559Transaction (320) */
interface EthereumTransactionEip1559Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -2780,7 +2838,7 @@
readonly s: H256;
}
- /** @name PalletEvmMigrationCall (317) */
+ /** @name PalletEvmMigrationCall (321) */
interface PalletEvmMigrationCall extends Enum {
readonly isBegin: boolean;
readonly asBegin: {
@@ -2799,13 +2857,13 @@
readonly type: 'Begin' | 'SetData' | 'Finish';
}
- /** @name PalletSudoError (320) */
+ /** @name PalletSudoError (324) */
interface PalletSudoError extends Enum {
readonly isRequireSudo: boolean;
readonly type: 'RequireSudo';
}
- /** @name OrmlVestingModuleError (322) */
+ /** @name OrmlVestingModuleError (326) */
interface OrmlVestingModuleError extends Enum {
readonly isZeroVestingPeriod: boolean;
readonly isZeroVestingPeriodCount: boolean;
@@ -2816,21 +2874,21 @@
readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
}
- /** @name CumulusPalletXcmpQueueInboundChannelDetails (324) */
+ /** @name CumulusPalletXcmpQueueInboundChannelDetails (328) */
interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
readonly sender: u32;
readonly state: CumulusPalletXcmpQueueInboundState;
readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
}
- /** @name CumulusPalletXcmpQueueInboundState (325) */
+ /** @name CumulusPalletXcmpQueueInboundState (329) */
interface CumulusPalletXcmpQueueInboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name PolkadotParachainPrimitivesXcmpMessageFormat (328) */
+ /** @name PolkadotParachainPrimitivesXcmpMessageFormat (332) */
interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
readonly isConcatenatedVersionedXcm: boolean;
readonly isConcatenatedEncodedBlob: boolean;
@@ -2838,7 +2896,7 @@
readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
}
- /** @name CumulusPalletXcmpQueueOutboundChannelDetails (331) */
+ /** @name CumulusPalletXcmpQueueOutboundChannelDetails (335) */
interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
readonly recipient: u32;
readonly state: CumulusPalletXcmpQueueOutboundState;
@@ -2847,14 +2905,14 @@
readonly lastIndex: u16;
}
- /** @name CumulusPalletXcmpQueueOutboundState (332) */
+ /** @name CumulusPalletXcmpQueueOutboundState (336) */
interface CumulusPalletXcmpQueueOutboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name CumulusPalletXcmpQueueQueueConfigData (334) */
+ /** @name CumulusPalletXcmpQueueQueueConfigData (338) */
interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
readonly suspendThreshold: u32;
readonly dropThreshold: u32;
@@ -2864,7 +2922,7 @@
readonly xcmpMaxIndividualWeight: u64;
}
- /** @name CumulusPalletXcmpQueueError (336) */
+ /** @name CumulusPalletXcmpQueueError (340) */
interface CumulusPalletXcmpQueueError extends Enum {
readonly isFailedToSend: boolean;
readonly isBadXcmOrigin: boolean;
@@ -2874,7 +2932,7 @@
readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
}
- /** @name PalletXcmError (337) */
+ /** @name PalletXcmError (341) */
interface PalletXcmError extends Enum {
readonly isUnreachable: boolean;
readonly isSendFailure: boolean;
@@ -2892,29 +2950,29 @@
readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
}
- /** @name CumulusPalletXcmError (338) */
+ /** @name CumulusPalletXcmError (342) */
type CumulusPalletXcmError = Null;
- /** @name CumulusPalletDmpQueueConfigData (339) */
+ /** @name CumulusPalletDmpQueueConfigData (343) */
interface CumulusPalletDmpQueueConfigData extends Struct {
readonly maxIndividual: u64;
}
- /** @name CumulusPalletDmpQueuePageIndexData (340) */
+ /** @name CumulusPalletDmpQueuePageIndexData (344) */
interface CumulusPalletDmpQueuePageIndexData extends Struct {
readonly beginUsed: u32;
readonly endUsed: u32;
readonly overweightCount: u64;
}
- /** @name CumulusPalletDmpQueueError (343) */
+ /** @name CumulusPalletDmpQueueError (347) */
interface CumulusPalletDmpQueueError extends Enum {
readonly isUnknown: boolean;
readonly isOverLimit: boolean;
readonly type: 'Unknown' | 'OverLimit';
}
- /** @name PalletUniqueError (347) */
+ /** @name PalletUniqueError (351) */
interface PalletUniqueError extends Enum {
readonly isCollectionDecimalPointLimitExceeded: boolean;
readonly isConfirmUnsetSponsorFail: boolean;
@@ -2923,7 +2981,7 @@
readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';
}
- /** @name PalletUniqueSchedulerScheduledV3 (350) */
+ /** @name PalletUniqueSchedulerScheduledV3 (354) */
interface PalletUniqueSchedulerScheduledV3 extends Struct {
readonly maybeId: Option<U8aFixed>;
readonly priority: u8;
@@ -2932,7 +2990,7 @@
readonly origin: OpalRuntimeOriginCaller;
}
- /** @name OpalRuntimeOriginCaller (351) */
+ /** @name OpalRuntimeOriginCaller (355) */
interface OpalRuntimeOriginCaller extends Enum {
readonly isSystem: boolean;
readonly asSystem: FrameSupportDispatchRawOrigin;
@@ -2946,7 +3004,7 @@
readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';
}
- /** @name FrameSupportDispatchRawOrigin (352) */
+ /** @name FrameSupportDispatchRawOrigin (356) */
interface FrameSupportDispatchRawOrigin extends Enum {
readonly isRoot: boolean;
readonly isSigned: boolean;
@@ -2955,7 +3013,7 @@
readonly type: 'Root' | 'Signed' | 'None';
}
- /** @name PalletXcmOrigin (353) */
+ /** @name PalletXcmOrigin (357) */
interface PalletXcmOrigin extends Enum {
readonly isXcm: boolean;
readonly asXcm: XcmV1MultiLocation;
@@ -2964,7 +3022,7 @@
readonly type: 'Xcm' | 'Response';
}
- /** @name CumulusPalletXcmOrigin (354) */
+ /** @name CumulusPalletXcmOrigin (358) */
interface CumulusPalletXcmOrigin extends Enum {
readonly isRelay: boolean;
readonly isSiblingParachain: boolean;
@@ -2972,17 +3030,17 @@
readonly type: 'Relay' | 'SiblingParachain';
}
- /** @name PalletEthereumRawOrigin (355) */
+ /** @name PalletEthereumRawOrigin (359) */
interface PalletEthereumRawOrigin extends Enum {
readonly isEthereumTransaction: boolean;
readonly asEthereumTransaction: H160;
readonly type: 'EthereumTransaction';
}
- /** @name SpCoreVoid (356) */
+ /** @name SpCoreVoid (360) */
type SpCoreVoid = Null;
- /** @name PalletUniqueSchedulerError (357) */
+ /** @name PalletUniqueSchedulerError (361) */
interface PalletUniqueSchedulerError extends Enum {
readonly isFailedToSchedule: boolean;
readonly isNotFound: boolean;
@@ -2991,21 +3049,21 @@
readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';
}
- /** @name UpDataStructsCollection (358) */
+ /** @name UpDataStructsCollection (362) */
interface UpDataStructsCollection extends Struct {
readonly owner: AccountId32;
readonly mode: UpDataStructsCollectionMode;
readonly name: Vec<u16>;
readonly description: Vec<u16>;
readonly tokenPrefix: Bytes;
- readonly sponsorship: UpDataStructsSponsorshipState;
+ readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;
readonly limits: UpDataStructsCollectionLimits;
readonly permissions: UpDataStructsCollectionPermissions;
readonly externalCollection: bool;
}
- /** @name UpDataStructsSponsorshipState (359) */
- interface UpDataStructsSponsorshipState extends Enum {
+ /** @name UpDataStructsSponsorshipStateAccountId32 (363) */
+ interface UpDataStructsSponsorshipStateAccountId32 extends Enum {
readonly isDisabled: boolean;
readonly isUnconfirmed: boolean;
readonly asUnconfirmed: AccountId32;
@@ -3014,50 +3072,50 @@
readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
}
- /** @name UpDataStructsProperties (360) */
+ /** @name UpDataStructsProperties (364) */
interface UpDataStructsProperties extends Struct {
readonly map: UpDataStructsPropertiesMapBoundedVec;
readonly consumedSpace: u32;
readonly spaceLimit: u32;
}
- /** @name UpDataStructsPropertiesMapBoundedVec (361) */
+ /** @name UpDataStructsPropertiesMapBoundedVec (365) */
interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
- /** @name UpDataStructsPropertiesMapPropertyPermission (366) */
+ /** @name UpDataStructsPropertiesMapPropertyPermission (370) */
interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
- /** @name UpDataStructsCollectionStats (373) */
+ /** @name UpDataStructsCollectionStats (377) */
interface UpDataStructsCollectionStats extends Struct {
readonly created: u32;
readonly destroyed: u32;
readonly alive: u32;
}
- /** @name UpDataStructsTokenChild (374) */
+ /** @name UpDataStructsTokenChild (378) */
interface UpDataStructsTokenChild extends Struct {
readonly token: u32;
readonly collection: u32;
}
- /** @name PhantomTypeUpDataStructs (375) */
+ /** @name PhantomTypeUpDataStructs (379) */
interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
- /** @name UpDataStructsTokenData (377) */
+ /** @name UpDataStructsTokenData (381) */
interface UpDataStructsTokenData extends Struct {
readonly properties: Vec<UpDataStructsProperty>;
readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
readonly pieces: u128;
}
- /** @name UpDataStructsRpcCollection (379) */
+ /** @name UpDataStructsRpcCollection (383) */
interface UpDataStructsRpcCollection extends Struct {
readonly owner: AccountId32;
readonly mode: UpDataStructsCollectionMode;
readonly name: Vec<u16>;
readonly description: Vec<u16>;
readonly tokenPrefix: Bytes;
- readonly sponsorship: UpDataStructsSponsorshipState;
+ readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;
readonly limits: UpDataStructsCollectionLimits;
readonly permissions: UpDataStructsCollectionPermissions;
readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
@@ -3065,7 +3123,7 @@
readonly readOnly: bool;
}
- /** @name RmrkTraitsCollectionCollectionInfo (380) */
+ /** @name RmrkTraitsCollectionCollectionInfo (384) */
interface RmrkTraitsCollectionCollectionInfo extends Struct {
readonly issuer: AccountId32;
readonly metadata: Bytes;
@@ -3074,7 +3132,7 @@
readonly nftsCount: u32;
}
- /** @name RmrkTraitsNftNftInfo (381) */
+ /** @name RmrkTraitsNftNftInfo (385) */
interface RmrkTraitsNftNftInfo extends Struct {
readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;
readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;
@@ -3083,13 +3141,13 @@
readonly pending: bool;
}
- /** @name RmrkTraitsNftRoyaltyInfo (383) */
+ /** @name RmrkTraitsNftRoyaltyInfo (387) */
interface RmrkTraitsNftRoyaltyInfo extends Struct {
readonly recipient: AccountId32;
readonly amount: Permill;
}
- /** @name RmrkTraitsResourceResourceInfo (384) */
+ /** @name RmrkTraitsResourceResourceInfo (388) */
interface RmrkTraitsResourceResourceInfo extends Struct {
readonly id: u32;
readonly resource: RmrkTraitsResourceResourceTypes;
@@ -3097,26 +3155,26 @@
readonly pendingRemoval: bool;
}
- /** @name RmrkTraitsPropertyPropertyInfo (385) */
+ /** @name RmrkTraitsPropertyPropertyInfo (389) */
interface RmrkTraitsPropertyPropertyInfo extends Struct {
readonly key: Bytes;
readonly value: Bytes;
}
- /** @name RmrkTraitsBaseBaseInfo (386) */
+ /** @name RmrkTraitsBaseBaseInfo (390) */
interface RmrkTraitsBaseBaseInfo extends Struct {
readonly issuer: AccountId32;
readonly baseType: Bytes;
readonly symbol: Bytes;
}
- /** @name RmrkTraitsNftNftChild (387) */
+ /** @name RmrkTraitsNftNftChild (391) */
interface RmrkTraitsNftNftChild extends Struct {
readonly collectionId: u32;
readonly nftId: u32;
}
- /** @name PalletCommonError (389) */
+ /** @name PalletCommonError (393) */
interface PalletCommonError extends Enum {
readonly isCollectionNotFound: boolean;
readonly isMustBeTokenOwner: boolean;
@@ -3155,7 +3213,7 @@
readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';
}
- /** @name PalletFungibleError (391) */
+ /** @name PalletFungibleError (395) */
interface PalletFungibleError extends Enum {
readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isFungibleItemsHaveNoId: boolean;
@@ -3165,12 +3223,12 @@
readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
}
- /** @name PalletRefungibleItemData (392) */
+ /** @name PalletRefungibleItemData (396) */
interface PalletRefungibleItemData extends Struct {
readonly constData: Bytes;
}
- /** @name PalletRefungibleError (397) */
+ /** @name PalletRefungibleError (401) */
interface PalletRefungibleError extends Enum {
readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isWrongRefungiblePieces: boolean;
@@ -3180,20 +3238,19 @@
readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
}
- /** @name PalletNonfungibleItemData (398) */
+ /** @name PalletNonfungibleItemData (402) */
interface PalletNonfungibleItemData extends Struct {
readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name UpDataStructsPropertyScope (400) */
+ /** @name UpDataStructsPropertyScope (404) */
interface UpDataStructsPropertyScope extends Enum {
readonly isNone: boolean;
readonly isRmrk: boolean;
- readonly isEth: boolean;
- readonly type: 'None' | 'Rmrk' | 'Eth';
+ readonly type: 'None' | 'Rmrk';
}
- /** @name PalletNonfungibleError (402) */
+ /** @name PalletNonfungibleError (406) */
interface PalletNonfungibleError extends Enum {
readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isNonfungibleItemsHaveNoAmount: boolean;
@@ -3201,7 +3258,7 @@
readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';
}
- /** @name PalletStructureError (403) */
+ /** @name PalletStructureError (407) */
interface PalletStructureError extends Enum {
readonly isOuroborosDetected: boolean;
readonly isDepthLimit: boolean;
@@ -3210,7 +3267,7 @@
readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';
}
- /** @name PalletRmrkCoreError (404) */
+ /** @name PalletRmrkCoreError (408) */
interface PalletRmrkCoreError extends Enum {
readonly isCorruptedCollectionType: boolean;
readonly isRmrkPropertyKeyIsTooLong: boolean;
@@ -3234,7 +3291,7 @@
readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';
}
- /** @name PalletRmrkEquipError (406) */
+ /** @name PalletRmrkEquipError (410) */
interface PalletRmrkEquipError extends Enum {
readonly isPermissionError: boolean;
readonly isNoAvailableBaseId: boolean;
@@ -3246,7 +3303,18 @@
readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';
}
- /** @name PalletEvmError (409) */
+ /** @name PalletAppPromotionError (416) */
+ interface PalletAppPromotionError extends Enum {
+ readonly isAdminNotSet: boolean;
+ readonly isNoPermission: boolean;
+ readonly isNotSufficientFunds: boolean;
+ readonly isPendingForBlockOverflow: boolean;
+ readonly isSponsorNotSet: boolean;
+ readonly isIncorrectLockedBalanceOperation: boolean;
+ readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';
+ }
+
+ /** @name PalletEvmError (419) */
interface PalletEvmError extends Enum {
readonly isBalanceLow: boolean;
readonly isFeeOverflow: boolean;
@@ -3257,7 +3325,7 @@
readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
}
- /** @name FpRpcTransactionStatus (412) */
+ /** @name FpRpcTransactionStatus (422) */
interface FpRpcTransactionStatus extends Struct {
readonly transactionHash: H256;
readonly transactionIndex: u32;
@@ -3268,10 +3336,10 @@
readonly logsBloom: EthbloomBloom;
}
- /** @name EthbloomBloom (414) */
+ /** @name EthbloomBloom (424) */
interface EthbloomBloom extends U8aFixed {}
- /** @name EthereumReceiptReceiptV3 (416) */
+ /** @name EthereumReceiptReceiptV3 (426) */
interface EthereumReceiptReceiptV3 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumReceiptEip658ReceiptData;
@@ -3282,7 +3350,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumReceiptEip658ReceiptData (417) */
+ /** @name EthereumReceiptEip658ReceiptData (427) */
interface EthereumReceiptEip658ReceiptData extends Struct {
readonly statusCode: u8;
readonly usedGas: U256;
@@ -3290,14 +3358,14 @@
readonly logs: Vec<EthereumLog>;
}
- /** @name EthereumBlock (418) */
+ /** @name EthereumBlock (428) */
interface EthereumBlock extends Struct {
readonly header: EthereumHeader;
readonly transactions: Vec<EthereumTransactionTransactionV2>;
readonly ommers: Vec<EthereumHeader>;
}
- /** @name EthereumHeader (419) */
+ /** @name EthereumHeader (429) */
interface EthereumHeader extends Struct {
readonly parentHash: H256;
readonly ommersHash: H256;
@@ -3316,24 +3384,34 @@
readonly nonce: EthereumTypesHashH64;
}
- /** @name EthereumTypesHashH64 (420) */
+ /** @name EthereumTypesHashH64 (430) */
interface EthereumTypesHashH64 extends U8aFixed {}
- /** @name PalletEthereumError (425) */
+ /** @name PalletEthereumError (435) */
interface PalletEthereumError extends Enum {
readonly isInvalidSignature: boolean;
readonly isPreLogExists: boolean;
readonly type: 'InvalidSignature' | 'PreLogExists';
}
- /** @name PalletEvmCoderSubstrateError (426) */
+ /** @name PalletEvmCoderSubstrateError (436) */
interface PalletEvmCoderSubstrateError extends Enum {
readonly isOutOfGas: boolean;
readonly isOutOfFund: boolean;
readonly type: 'OutOfGas' | 'OutOfFund';
}
- /** @name PalletEvmContractHelpersSponsoringModeT (427) */
+ /** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr (437) */
+ interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {
+ readonly isDisabled: boolean;
+ readonly isUnconfirmed: boolean;
+ readonly asUnconfirmed: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly isConfirmed: boolean;
+ readonly asConfirmed: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
+ }
+
+ /** @name PalletEvmContractHelpersSponsoringModeT (438) */
interface PalletEvmContractHelpersSponsoringModeT extends Enum {
readonly isDisabled: boolean;
readonly isAllowlisted: boolean;
@@ -3341,20 +3419,21 @@
readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
}
- /** @name PalletEvmContractHelpersError (429) */
+ /** @name PalletEvmContractHelpersError (440) */
interface PalletEvmContractHelpersError extends Enum {
readonly isNoPermission: boolean;
- readonly type: 'NoPermission';
+ readonly isNoPendingSponsor: boolean;
+ readonly type: 'NoPermission' | 'NoPendingSponsor';
}
- /** @name PalletEvmMigrationError (430) */
+ /** @name PalletEvmMigrationError (441) */
interface PalletEvmMigrationError extends Enum {
readonly isAccountNotEmpty: boolean;
readonly isAccountIsNotMigrating: boolean;
readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
}
- /** @name SpRuntimeMultiSignature (432) */
+ /** @name SpRuntimeMultiSignature (443) */
interface SpRuntimeMultiSignature extends Enum {
readonly isEd25519: boolean;
readonly asEd25519: SpCoreEd25519Signature;
@@ -3365,34 +3444,34 @@
readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
}
- /** @name SpCoreEd25519Signature (433) */
+ /** @name SpCoreEd25519Signature (444) */
interface SpCoreEd25519Signature extends U8aFixed {}
- /** @name SpCoreSr25519Signature (435) */
+ /** @name SpCoreSr25519Signature (446) */
interface SpCoreSr25519Signature extends U8aFixed {}
- /** @name SpCoreEcdsaSignature (436) */
+ /** @name SpCoreEcdsaSignature (447) */
interface SpCoreEcdsaSignature extends U8aFixed {}
- /** @name FrameSystemExtensionsCheckSpecVersion (439) */
+ /** @name FrameSystemExtensionsCheckSpecVersion (450) */
type FrameSystemExtensionsCheckSpecVersion = Null;
- /** @name FrameSystemExtensionsCheckGenesis (440) */
+ /** @name FrameSystemExtensionsCheckGenesis (451) */
type FrameSystemExtensionsCheckGenesis = Null;
- /** @name FrameSystemExtensionsCheckNonce (443) */
+ /** @name FrameSystemExtensionsCheckNonce (454) */
interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
- /** @name FrameSystemExtensionsCheckWeight (444) */
+ /** @name FrameSystemExtensionsCheckWeight (455) */
type FrameSystemExtensionsCheckWeight = Null;
- /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (445) */
+ /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (456) */
interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
- /** @name OpalRuntimeRuntime (446) */
+ /** @name OpalRuntimeRuntime (457) */
type OpalRuntimeRuntime = Null;
- /** @name PalletEthereumFakeTransactionFinalizer (447) */
+ /** @name PalletEthereumFakeTransactionFinalizer (458) */
type PalletEthereumFakeTransactionFinalizer = Null;
} // declare module
tests/src/interfaces/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/types.ts
+++ b/tests/src/interfaces/types.ts
@@ -2,5 +2,6 @@
/* eslint-disable */
export * from './unique/types';
+export * from './appPromotion/types';
export * from './rmrk/types';
export * from './default/types';
tests/src/pallet-presence.test.tsdiffbeforeafterboth--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -68,9 +68,10 @@
const refungible = 'refungible';
const scheduler = 'scheduler';
const rmrkPallets = ['rmrkcore', 'rmrkequip'];
+ const appPromotion = 'apppromotion';
if (chain.eq('OPAL by UNIQUE')) {
- requiredPallets.push(refungible, scheduler, ...rmrkPallets);
+ requiredPallets.push(refungible, scheduler, appPromotion, ...rmrkPallets);
} else if (chain.eq('QUARTZ by UNIQUE')) {
// Insert Quartz additional pallets here
} else if (chain.eq('UNIQUE')) {
tests/src/refungible.test.tsdiffbeforeafterboth--- a/tests/src/refungible.test.ts
+++ b/tests/src/refungible.test.ts
@@ -245,8 +245,8 @@
section: 'common',
index: '0x4202',
data: [
- collection.collectionId.toString(),
- token.tokenId.toString(),
+ helper.api!.createType('u32', collection.collectionId).toHuman(),
+ helper.api!.createType('u32', token.tokenId).toHuman(),
{Substrate: alice.address},
'100',
],
@@ -265,8 +265,8 @@
section: 'common',
index: '0x4203',
data: [
- collection.collectionId.toString(),
- token.tokenId.toString(),
+ helper.api!.createType('u32', collection.collectionId).toHuman(),
+ helper.api!.createType('u32', token.tokenId).toHuman(),
{Substrate: alice.address},
'50',
],
tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth--- a/tests/src/removeCollectionAdmin.test.ts
+++ b/tests/src/removeCollectionAdmin.test.ts
@@ -27,6 +27,7 @@
const alice = privateKey('//Alice');
const bob = privateKey('//Bob');
const collection = await helper.nft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
+
const collectionInfo = await collection.getData();
expect(collectionInfo?.raw.owner.toString()).to.be.deep.eq(alice.address);
// first - add collection admin Bob
tests/src/substrate/substrate-api.tsdiffbeforeafterboth--- a/tests/src/substrate/substrate-api.ts
+++ b/tests/src/substrate/substrate-api.ts
@@ -25,6 +25,8 @@
import privateKey from './privateKey';
import promisifySubstrate from './promisify-substrate';
+import {SilentConsole} from '../util/playgrounds/unique.dev';
+
function defaultApiOptions(): ApiOptions {
@@ -42,6 +44,7 @@
},
rpc: {
unique: defs.unique.rpc,
+ appPromotion: defs.appPromotion.rpc,
rmrk: defs.rmrk.rpc,
eth: {
feeHistory: {
@@ -75,25 +78,8 @@
const api: ApiPromise = new ApiPromise(settings);
let result: T = null as unknown as T;
- // TODO: Remove, this is temporary: Filter unneeded API output
- // (Jaco promised it will be removed in the next version)
- const consoleErr = console.error;
- const consoleLog = console.log;
- const consoleWarn = console.warn;
-
- const outFn = (printer: any) => (...args: any[]) => {
- for (const arg of args) {
- if (typeof arg !== 'string')
- continue;
- if (arg.includes('1000:: Normal connection closure') || arg.includes('Not decorating unknown runtime apis:') || arg.includes('RPC methods not decorated:') || arg === 'Normal connection closure')
- return;
- }
- printer(...args);
- };
-
- console.error = outFn(consoleErr.bind(console));
- console.log = outFn(consoleLog.bind(console));
- console.warn = outFn(consoleWarn.bind(console));
+ const silentConsole = new SilentConsole();
+ silentConsole.enable();
try {
await promisifySubstrate(api, async () => {
@@ -106,9 +92,7 @@
})();
} finally {
await api.disconnect();
- console.error = consoleErr;
- console.log = consoleLog;
- console.warn = consoleWarn;
+ silentConsole.disable();
}
return result as T;
}
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -17,10 +17,11 @@
import '../interfaces/augment-api-rpc';
import '../interfaces/augment-api-query';
import {ApiPromise} from '@polkadot/api';
-import type {AccountId, EventRecord, Event} from '@polkadot/types/interfaces';
+import type {AccountId, EventRecord, Event, BlockNumber} from '@polkadot/types/interfaces';
import type {GenericEventData} from '@polkadot/types';
import {AnyTuple, IEvent, IKeyringPair} from '@polkadot/types/types';
import {evmToAddress} from '@polkadot/util-crypto';
+import {AnyNumber} from '@polkadot/types-codec/types';
import BN from 'bn.js';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
@@ -48,6 +49,7 @@
Fungible = 'fungible',
NFT = 'nonfungible',
Scheduler = 'scheduler',
+ AppPromotion = 'apppromotion',
}
export async function isUnique(): Promise<boolean> {
@@ -1779,3 +1781,23 @@
itApi.only = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {only: true});
itApi.skip = (name: string, cb: (apis: { api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair }) => any) => itApi(name, cb, {skip: true});
+
+
+export async function expectSubstrateEventsAtBlock(api: ApiPromise, blockNumber: AnyNumber | BlockNumber, section: string, methods: string[], dryRun = false) {
+ const blockHash = await api.rpc.chain.getBlockHash(blockNumber);
+ const subEvents = (await api.query.system.events.at(blockHash))
+ .filter(x => x.event.section === section)
+ .map((x) => x.toHuman());
+ const events = methods.map((m) => {
+ return {
+ event: {
+ method: m,
+ section,
+ },
+ };
+ });
+ if (!dryRun) {
+ expect(subEvents).to.be.like(events);
+ }
+ return subEvents;
+}
\ No newline at end of file
tests/src/util/playgrounds/index.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/index.ts
+++ b/tests/src/util/playgrounds/index.ts
@@ -2,39 +2,16 @@
// SPDX-License-Identifier: Apache-2.0
import {IKeyringPair} from '@polkadot/types/types';
+import {Context} from 'mocha';
import config from '../../config';
import '../../interfaces/augment-api-events';
-import {DevUniqueHelper} from './unique.dev';
+import {DevUniqueHelper, SilentLogger, SilentConsole} from './unique.dev';
-class SilentLogger {
- log(msg: any, level: any): void { }
- level = {
- ERROR: 'ERROR' as const,
- WARNING: 'WARNING' as const,
- INFO: 'INFO' as const,
- };
-}
export const usingPlaygrounds = async (code: (helper: DevUniqueHelper, privateKey: (seed: string) => IKeyringPair) => Promise<void>) => {
- // TODO: Remove, this is temporary: Filter unneeded API output
- // (Jaco promised it will be removed in the next version)
- const consoleErr = console.error;
- const consoleLog = console.log;
- const consoleWarn = console.warn;
+ const silentConsole = new SilentConsole();
+ silentConsole.enable();
- const outFn = (printer: any) => (...args: any[]) => {
- for (const arg of args) {
- if (typeof arg !== 'string')
- continue;
- if (arg.includes('1000:: Normal connection closure') || arg.includes('Not decorating unknown runtime apis:') || arg.includes('RPC methods not decorated:') || arg === 'Normal connection closure')
- return;
- }
- printer(...args);
- };
-
- console.error = outFn(consoleErr.bind(console));
- console.log = outFn(consoleLog.bind(console));
- console.warn = outFn(consoleWarn.bind(console));
const helper = new DevUniqueHelper(new SilentLogger());
try {
@@ -45,8 +22,42 @@
}
finally {
await helper.disconnect();
- console.error = consoleErr;
- console.log = consoleLog;
- console.warn = consoleWarn;
+ silentConsole.disable();
}
};
+
+export enum Pallets {
+ Inflation = 'inflation',
+ RmrkCore = 'rmrkcore',
+ RmrkEquip = 'rmrkequip',
+ ReFungible = 'refungible',
+ Fungible = 'fungible',
+ NFT = 'nonfungible',
+ Scheduler = 'scheduler',
+}
+
+export function requirePalletsOrSkip(test: Context, helper: DevUniqueHelper, requiredPallets: string[]) {
+ const missingPallets = helper.fetchMissingPalletNames(requiredPallets);
+
+ if (missingPallets.length > 0) {
+ const skipMsg = `\tSkipping test '${test.test?.title}'.\n\tThe following pallets are missing:\n\t- ${missingPallets.join('\n\t- ')}`;
+ console.warn('\x1b[38:5:208m%s\x1b[0m', skipMsg);
+ test.skip();
+ }
+}
+
+export async function itSub(name: string, cb: (apis: { helper: DevUniqueHelper, privateKey: (seed: string) => IKeyringPair }) => any, opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {}) {
+ (opts.only ? it.only :
+ opts.skip ? it.skip : it)(name, async function () {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ if (opts.requiredPallets) {
+ requirePalletsOrSkip(this, helper, opts.requiredPallets);
+ }
+
+ await cb({helper, privateKey});
+ });
+ });
+}
+itSub.only = (name: string, cb: (apis: { helper: DevUniqueHelper, privateKey: (seed: string) => IKeyringPair }) => any) => itSub(name, cb, {only: true});
+itSub.skip = (name: string, cb: (apis: { helper: DevUniqueHelper, privateKey: (seed: string) => IKeyringPair }) => any) => itSub(name, cb, {skip: true});
+itSub.ifWithPallets = (name: string, required: string[], cb: (apis: { helper: DevUniqueHelper, privateKey: (seed: string) => IKeyringPair }) => any) => itSub(name, cb, {requiredPallets: required});
tests/src/util/playgrounds/types.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/types.ts
+++ b/tests/src/util/playgrounds/types.ts
@@ -101,10 +101,27 @@
tokenId: number;
}
+export interface IBlock {
+ extrinsics: IExtrinsic[]
+ header: {
+ parentHash: string,
+ number: number,
+ };
+}
+
+export interface IExtrinsic {
+ isSigned: boolean,
+ method: {
+ method: string,
+ section: string,
+ args: any[]
+ }
+}
+
export interface ICollectionCreationOptions {
- name: string | number[];
- description: string | number[];
- tokenPrefix: string | number[];
+ name?: string | number[];
+ description?: string | number[];
+ tokenPrefix?: string | number[];
mode?: {
nft?: null;
refungible?: null;
@@ -123,8 +140,15 @@
tokenSymbol: string[]
}
+export interface ISubstrateBalance {
+ free: bigint,
+ reserved: bigint,
+ miscFrozen: bigint,
+ feeFrozen: bigint
+}
+
export type TSubstrateAccount = string;
export type TEthereumAccount = string;
export type TApiAllowedListeners = 'connected' | 'disconnected' | 'error' | 'ready' | 'decorated';
export type TUniqueNetworks = 'opal' | 'quartz' | 'unique';
-export type TSigner = IKeyringPair; // | 'string'
\ No newline at end of file
+export type TSigner = IKeyringPair; // | 'string'
tests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/unique.dev.ts
+++ b/tests/src/util/playgrounds/unique.dev.ts
@@ -5,22 +5,69 @@
import {UniqueHelper} from './unique';
import {ApiPromise, WsProvider} from '@polkadot/api';
import * as defs from '../../interfaces/definitions';
-import {TSigner} from './types';
import {IKeyringPair} from '@polkadot/types/types';
+export class SilentLogger {
+ log(_msg: any, _level: any): void { }
+ level = {
+ ERROR: 'ERROR' as const,
+ WARNING: 'WARNING' as const,
+ INFO: 'INFO' as const,
+ };
+}
+
+export class SilentConsole {
+ // TODO: Remove, this is temporary: Filter unneeded API output
+ // (Jaco promised it will be removed in the next version)
+ consoleErr: any;
+ consoleLog: any;
+ consoleWarn: any;
+
+ constructor() {
+ this.consoleErr = console.error;
+ this.consoleLog = console.log;
+ this.consoleWarn = console.warn;
+ }
+
+ enable() {
+ const outFn = (printer: any) => (...args: any[]) => {
+ for (const arg of args) {
+ if (typeof arg !== 'string')
+ continue;
+ if (arg.includes('1000:: Normal connection closure') || arg.includes('Not decorating unknown runtime apis:') || arg.includes('RPC methods not decorated:') || arg === 'Normal connection closure')
+ return;
+ }
+ printer(...args);
+ };
+
+ console.error = outFn(this.consoleErr.bind(console));
+ console.log = outFn(this.consoleLog.bind(console));
+ console.warn = outFn(this.consoleWarn.bind(console));
+ }
+
+ disable() {
+ console.error = this.consoleErr;
+ console.log = this.consoleLog;
+ console.warn = this.consoleWarn;
+ }
+}
+
+
export class DevUniqueHelper extends UniqueHelper {
/**
* Arrange methods for tests
*/
arrange: ArrangeGroup;
+ wait: WaitGroup;
constructor(logger: { log: (msg: any, level: any) => void, level: any }) {
super(logger);
this.arrange = new ArrangeGroup(this);
+ this.wait = new WaitGroup(this);
}
- async connect(wsEndpoint: string, listeners?: any): Promise<void> {
+ async connect(wsEndpoint: string, _listeners?: any): Promise<void> {
const wsProvider = new WsProvider(wsEndpoint);
this.api = new ApiPromise({
provider: wsProvider,
@@ -36,6 +83,7 @@
},
rpc: {
unique: defs.unique.rpc,
+ appPromotion: defs.appPromotion.rpc,
rmrk: defs.rmrk.rpc,
eth: {
feeHistory: {
@@ -72,20 +120,21 @@
*/
createAccounts = async (balances: bigint[], donor: IKeyringPair): Promise<IKeyringPair[]> => {
let nonce = await this.helper.chain.getNonce(donor.address);
+ const ss58Format = this.helper.chain.getChainProperties().ss58Format;
const tokenNominal = this.helper.balance.getOneTokenNominal();
const transactions = [];
const accounts: IKeyringPair[] = [];
for (const balance of balances) {
- const recepient = this.helper.util.fromSeed(mnemonicGenerate());
- accounts.push(recepient);
+ const recipient = this.helper.util.fromSeed(mnemonicGenerate(), ss58Format);
+ accounts.push(recipient);
if (balance !== 0n) {
- const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recepient.address}, balance * tokenNominal]);
+ const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recipient.address}, balance * tokenNominal]);
transactions.push(this.helper.signTransaction(donor, tx, 'account generation', {nonce}));
nonce++;
}
}
- await Promise.all(transactions).catch(e => {});
+ await Promise.all(transactions).catch(_e => {});
//#region TODO remove this region, when nonce problem will be solved
const checkBalances = async () => {
@@ -105,7 +154,7 @@
for (let index = 0; index < 5; index++) {
accountsCreated = await checkBalances();
if(accountsCreated) break;
- await this.waitNewBlocks(1);
+
}
if (!accountsCreated) throw Error('Accounts generation failed');
@@ -114,12 +163,86 @@
return accounts;
};
+ // TODO combine this method and createAccounts into one
+ createCrowd = async (accountsToCreate: number, withBalance: bigint, donor: IKeyringPair): Promise<IKeyringPair[]> => {
+ const createAsManyAsCan = async () => {
+ let transactions: any = [];
+ const accounts: IKeyringPair[] = [];
+ let nonce = await this.helper.chain.getNonce(donor.address);
+ const tokenNominal = this.helper.balance.getOneTokenNominal();
+ for (let i = 0; i < accountsToCreate; i++) {
+ if (i === 500) { // if there are too many accounts to create
+ await Promise.allSettled(transactions); // wait while first 500 (should be 100 for devnode) tx will be settled
+ transactions = []; //
+ nonce = await this.helper.chain.getNonce(donor.address); // update nonce
+ }
+ const recepient = this.helper.util.fromSeed(mnemonicGenerate());
+ accounts.push(recepient);
+ if (withBalance !== 0n) {
+ const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recepient.address}, withBalance * tokenNominal]);
+ transactions.push(this.helper.signTransaction(donor, tx, 'account generation', {nonce}));
+ nonce++;
+ }
+ }
+
+ const fullfilledAccounts = [];
+ await Promise.allSettled(transactions);
+ for (const account of accounts) {
+ const accountBalance = await this.helper.balance.getSubstrate(account.address);
+ if (accountBalance === withBalance * tokenNominal) {
+ fullfilledAccounts.push(account);
+ }
+ }
+ return fullfilledAccounts;
+ };
+
+
+ const crowd: IKeyringPair[] = [];
+ // do up to 5 retries
+ for (let index = 0; index < 5 && accountsToCreate !== 0; index++) {
+ const asManyAsCan = await createAsManyAsCan();
+ crowd.push(...asManyAsCan);
+ accountsToCreate -= asManyAsCan.length;
+ }
+
+ if (accountsToCreate !== 0) throw Error(`Crowd generation failed: ${accountsToCreate} accounts left`);
+
+ return crowd;
+ };
+
+ isDevNode = async () => {
+ const block1 = await this.helper.api?.rpc.chain.getBlock(await this.helper.api?.rpc.chain.getBlockHash(1));
+ const block2 = await this.helper.api?.rpc.chain.getBlock(await this.helper.api?.rpc.chain.getBlockHash(2));
+ const findCreationDate = async (block: any) => {
+ const humanBlock = block.toHuman();
+ let date;
+ humanBlock.block.extrinsics.forEach((ext: any) => {
+ if(ext.method.section === 'timestamp') {
+ date = Number(ext.method.args.now.replaceAll(',', ''));
+ }
+ });
+ return date;
+ };
+ const block1date = await findCreationDate(block1);
+ const block2date = await findCreationDate(block2);
+ if(block2date! - block1date! < 9000) return true;
+ };
+}
+
+class WaitGroup {
+ helper: UniqueHelper;
+
+ constructor(helper: UniqueHelper) {
+ this.helper = helper;
+ }
+
/**
* Wait for specified bnumber of blocks
* @param blocksCount number of blocks to wait
* @returns
*/
- async waitNewBlocks(blocksCount = 1): Promise<void> {
+ async newBlocks(blocksCount = 1): Promise<void> {
+ // eslint-disable-next-line no-async-promise-executor
const promise = new Promise<void>(async (resolve) => {
const unsubscribe = await this.helper.api!.rpc.chain.subscribeNewHeads(() => {
if (blocksCount > 0) {
@@ -132,4 +255,27 @@
});
return promise;
}
-}
\ No newline at end of file
+
+ async forParachainBlockNumber(blockNumber: bigint) {
+ return new Promise<void>(async (resolve) => {
+ const unsubscribe = await this.helper.api!.rpc.chain.subscribeNewHeads(async (data: any) => {
+ if (data.number.toNumber() >= blockNumber) {
+ unsubscribe();
+ resolve();
+ }
+ });
+ });
+ }
+
+ async forRelayBlockNumber(blockNumber: bigint) {
+ return new Promise<void>(async (resolve) => {
+ const unsubscribe = await this.helper.api!.query.parachainSystem.validationData(async (data: any) => {
+ if (data.value.relayParentNumber.toNumber() >= blockNumber) {
+ // @ts-ignore
+ unsubscribe();
+ resolve();
+ }
+ });
+ });
+ }
+}
tests/src/util/playgrounds/unique.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/unique.ts
+++ b/tests/src/util/playgrounds/unique.ts
@@ -9,15 +9,14 @@
import {ApiInterfaceEvents} from '@polkadot/api/types';
import {encodeAddress, decodeAddress, keccakAsHex, evmToAddress, addressToEvm} from '@polkadot/util-crypto';
import {IKeyringPair} from '@polkadot/types/types';
-import {IApiListeners, IChainEvent, IChainProperties, ICollectionCreationOptions, ICollectionLimits, ICollectionPermissions, ICrossAccountId, ICrossAccountIdLower, ILogger, INestingPermissions, IProperty, IToken, ITokenPropertyPermission, ITransactionResult, IUniqueHelperLog, TApiAllowedListeners, TEthereumAccount, TSigner, TSubstrateAccount, TUniqueNetworks} from './types';
+import {IApiListeners, IBlock, IChainEvent, IChainProperties, ICollectionCreationOptions, ICollectionLimits, ICollectionPermissions, ICrossAccountId, ICrossAccountIdLower, ILogger, INestingPermissions, IProperty, ISubstrateBalance, IToken, ITokenPropertyPermission, ITransactionResult, IUniqueHelperLog, TApiAllowedListeners, TEthereumAccount, TSigner, TSubstrateAccount, TUniqueNetworks} from './types';
-const crossAccountIdFromLower = (lowerAddress: ICrossAccountIdLower): ICrossAccountId => {
+export const crossAccountIdFromLower = (lowerAddress: ICrossAccountIdLower): ICrossAccountId => {
const address = {} as ICrossAccountId;
if(lowerAddress.substrate) address.Substrate = lowerAddress.substrate;
if(lowerAddress.ethereum) address.Ethereum = lowerAddress.ethereum;
return address;
};
-
const nesting = {
toChecksumAddress(address: string): string {
@@ -91,9 +90,9 @@
return encodeAddress(decodeAddress(address), ss58Format);
}
- static extractCollectionIdFromCreationResult(creationResult: ITransactionResult, label = 'new collection') {
+ static extractCollectionIdFromCreationResult(creationResult: ITransactionResult) {
if (creationResult.status !== this.transactionStatus.SUCCESS) {
- throw Error(`Unable to create collection for ${label}`);
+ throw Error('Unable to create collection!');
}
let collectionId = null;
@@ -104,15 +103,15 @@
});
if (collectionId === null) {
- throw Error(`No CollectionCreated event for ${label}`);
+ throw Error('No CollectionCreated event was found!');
}
return collectionId;
}
- static extractTokensFromCreationResult(creationResult: ITransactionResult, label = 'new tokens') {
+ static extractTokensFromCreationResult(creationResult: ITransactionResult) {
if (creationResult.status !== this.transactionStatus.SUCCESS) {
- throw Error(`Unable to create tokens for ${label}`);
+ throw Error('Unable to create tokens!');
}
let success = false;
const tokens = [] as any;
@@ -130,9 +129,9 @@
return {success, tokens};
}
- static extractTokensFromBurnResult(burnResult: ITransactionResult, label = 'burned tokens') {
+ static extractTokensFromBurnResult(burnResult: ITransactionResult) {
if (burnResult.status !== this.transactionStatus.SUCCESS) {
- throw Error(`Unable to burn tokens for ${label}`);
+ throw Error('Unable to burn tokens!');
}
let success = false;
const tokens = [] as any;
@@ -150,7 +149,7 @@
return {success, tokens};
}
- static findCollectionInEvents(events: {event: IChainEvent}[], collectionId: number, expectedSection: string, expectedMethod: string, label?: string) {
+ static findCollectionInEvents(events: {event: IChainEvent}[], collectionId: number, expectedSection: string, expectedMethod: string) {
let eventId = null;
events.forEach(({event: {data, method, section}}) => {
if ((section === expectedSection) && (method === expectedMethod)) {
@@ -159,7 +158,7 @@
});
if (eventId === null) {
- throw Error(`No ${expectedMethod} event for ${label}`);
+ throw Error(`No ${expectedMethod} event was found!`);
}
return eventId === collectionId;
}
@@ -317,6 +316,7 @@
if(options !== null) return transaction.signAndSend(sender, options, callback);
return transaction.signAndSend(sender, callback);
};
+ // eslint-disable-next-line no-async-promise-executor
return new Promise(async (resolve, reject) => {
try {
const unsub = await sign((result: any) => {
@@ -364,7 +364,7 @@
return call(...params);
}
- async executeExtrinsic(sender: TSigner, extrinsic: string, params: any[], expectSuccess=false, failureMessage='expected success') {
+ async executeExtrinsic(sender: TSigner, extrinsic: string, params: any[], expectSuccess=false/*, failureMessage='expected success'*/) {
if(this.api === null) throw Error('API not initialized');
if(!extrinsic.startsWith('api.tx.')) throw Error(`${extrinsic} is not transaction`);
@@ -388,6 +388,7 @@
type: this.chainLogType.EXTRINSIC,
status: result.status,
call: extrinsic,
+ signer: this.getSignerAddress(sender),
params,
} as IUniqueHelperLog;
@@ -396,7 +397,7 @@
this.chainLog.push(log);
- if(expectSuccess && result.status !== this.transactionStatus.SUCCESS) throw Error(failureMessage);
+ if(expectSuccess && result.status !== this.transactionStatus.SUCCESS) throw Error(`${result.moduleError}`);
return result;
}
@@ -438,6 +439,16 @@
if(typeof signer === 'string') return signer;
return signer.address;
}
+
+ fetchAllPalletNames(): string[] {
+ if(this.api === null) throw Error('API not initialized');
+ return this.api.runtimeMetadata.asLatest.pallets.map(m => m.name.toString().toLowerCase());
+ }
+
+ fetchMissingPalletNames(requiredPallets: string[]): string[] {
+ const palletNames = this.fetchAllPalletNames();
+ return requiredPallets.filter(p => !palletNames.includes(p));
+ }
}
@@ -474,7 +485,9 @@
}
/**
- * Get information about the collection with additional data, including the number of tokens it contains, its administrators, the normalized address of the collection's owner, and decoded name and description.
+ * Get information about the collection with additional data,
+ * including the number of tokens it contains, its administrators,
+ * the normalized address of the collection's owner, and decoded name and description.
*
* @param collectionId ID of collection
* @example await getData(2)
@@ -502,42 +515,50 @@
collectionData[key] = this.helper.util.vec2str(humanCollection[key]);
}
- collectionData.tokensCount = (['RFT', 'NFT'].includes(humanCollection.mode)) ? await this.helper[humanCollection.mode.toLocaleLowerCase() as 'nft' | 'rft'].getLastTokenId(collectionId) : 0;
+ collectionData.tokensCount = (['RFT', 'NFT'].includes(humanCollection.mode))
+ ? await this.helper[humanCollection.mode.toLocaleLowerCase() as 'nft' | 'rft'].getLastTokenId(collectionId)
+ : 0;
collectionData.admins = await this.getAdmins(collectionId);
return collectionData;
}
/**
- * Get the normalized addresses of the collection's administrators.
+ * Get the addresses of the collection's administrators, optionally normalized.
*
* @param collectionId ID of collection
+ * @param normalize whether to normalize the addresses to the default ss58 format
* @example await getAdmins(1)
* @returns array of administrators
*/
- async getAdmins(collectionId: number): Promise<ICrossAccountId[]> {
- const normalized = [];
- for(const admin of (await this.helper.callRpc('api.rpc.unique.adminlist', [collectionId])).toHuman()) {
- if(admin.Substrate) normalized.push({Substrate: this.helper.address.normalizeSubstrate(admin.Substrate)});
- else normalized.push(admin);
- }
- return normalized;
+ async getAdmins(collectionId: number, normalize = false): Promise<ICrossAccountId[]> {
+ const admins = (await this.helper.callRpc('api.rpc.unique.adminlist', [collectionId])).toHuman();
+
+ return normalize
+ ? admins.map((address: any) => {
+ return address.Substrate
+ ? {Substrate: this.helper.address.normalizeSubstrate(address.Substrate)}
+ : address;
+ })
+ : admins;
}
/**
- * Get the normalized addresses added to the collection allow-list.
+ * Get the addresses added to the collection allow-list, optionally normalized.
* @param collectionId ID of collection
+ * @param normalize whether to normalize the addresses to the default ss58 format
* @example await getAllowList(1)
* @returns array of allow-listed addresses
*/
- async getAllowList(collectionId: number): Promise<ICrossAccountId[]> {
- const normalized = [];
+ async getAllowList(collectionId: number, normalize = false): Promise<ICrossAccountId[]> {
const allowListed = (await this.helper.callRpc('api.rpc.unique.allowlist', [collectionId])).toHuman();
- for (const address of allowListed) {
- if (address.Substrate) normalized.push({Substrate: this.helper.address.normalizeSubstrate(address.Substrate)});
- else normalized.push(address);
- }
- return normalized;
+ return normalize
+ ? allowListed.map((address: any) => {
+ return address.Substrate
+ ? {Substrate: this.helper.address.normalizeSubstrate(address.Substrate)}
+ : address;
+ })
+ : allowListed;
}
/**
@@ -556,40 +577,36 @@
*
* @param signer keyring of signer
* @param collectionId ID of collection
- * @param label extra label for log
* @example await helper.collection.burn(aliceKeyring, 3);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async burn(signer: TSigner, collectionId: number, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async burn(signer: TSigner, collectionId: number): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.destroyCollection', [collectionId],
- true, `Unable to burn collection for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'CollectionDestroyed', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'CollectionDestroyed');
}
/**
- * Sets the sponsor for the collection (Requires the Substrate address).
+ * Sets the sponsor for the collection (Requires the Substrate address). Needs confirmation by the sponsor.
*
* @param signer keyring of signer
* @param collectionId ID of collection
* @param sponsorAddress Sponsor substrate address
- * @param label extra label for log
* @example setSponsor(aliceKeyring, 10, "5DyN4Y92vZCjv38fg...")
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async setSponsor(signer: TSigner, collectionId: number, sponsorAddress: TSubstrateAccount, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async setSponsor(signer: TSigner, collectionId: number, sponsorAddress: TSubstrateAccount): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.setCollectionSponsor', [collectionId, sponsorAddress],
- true, `Unable to set collection sponsor for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionSponsorSet', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionSponsorSet');
}
/**
@@ -597,19 +614,35 @@
*
* @param signer keyring of signer
* @param collectionId ID of collection
- * @param label extra label for log
* @example confirmSponsorship(aliceKeyring, 10)
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async confirmSponsorship(signer: TSigner, collectionId: number, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async confirmSponsorship(signer: TSigner, collectionId: number): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.confirmSponsorship', [collectionId],
- true, `Unable to confirm collection sponsorship for ${label}`,
+ true,
+ );
+
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'SponsorshipConfirmed');
+ }
+
+ /**
+ * Removes the sponsor of a collection, regardless if it consented or not.
+ *
+ * @param signer keyring of signer
+ * @param collectionId ID of collection
+ * @example removeSponsor(aliceKeyring, 10)
+ * @returns ```true``` if extrinsic success, otherwise ```false```
+ */
+ async removeSponsor(signer: TSigner, collectionId: number): Promise<boolean> {
+ const result = await this.helper.executeExtrinsic(
+ signer,
+ 'api.tx.unique.removeCollectionSponsor', [collectionId],
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'SponsorshipConfirmed', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionSponsorRemoved');
}
/**
@@ -618,7 +651,6 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param limits collection limits object
- * @param label extra label for log
* @example
* await setLimits(
* aliceKeyring,
@@ -630,15 +662,14 @@
* )
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async setLimits(signer: TSigner, collectionId: number, limits: ICollectionLimits, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async setLimits(signer: TSigner, collectionId: number, limits: ICollectionLimits): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.setCollectionLimits', [collectionId, limits],
- true, `Unable to set collection limits for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionLimitSet', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionLimitSet');
}
/**
@@ -647,19 +678,17 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param ownerAddress substrate address of new owner
- * @param label extra label for log
* @example changeOwner(aliceKeyring, 10, "5DyN4Y92vZCjv38fg...")
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async changeOwner(signer: TSigner, collectionId: number, ownerAddress: TSubstrateAccount, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async changeOwner(signer: TSigner, collectionId: number, ownerAddress: TSubstrateAccount): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.changeCollectionOwner', [collectionId, ownerAddress],
- true, `Unable to change collection owner for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionOwnedChanged', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionOwnedChanged');
}
/**
@@ -668,80 +697,71 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param adminAddressObj Administrator address (substrate or ethereum)
- * @param label extra label for log
* @example addAdmin(aliceKeyring, 10, {Substrate: "5DyN4Y92vZCjv38fg..."})
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async addAdmin(signer: TSigner, collectionId: number, adminAddressObj: ICrossAccountId, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async addAdmin(signer: TSigner, collectionId: number, adminAddressObj: ICrossAccountId): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.addCollectionAdmin', [collectionId, adminAddressObj],
- true, `Unable to add collection admin for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionAdminAdded', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionAdminAdded');
}
/**
- * Adds an address to allow list
+ * Removes a collection administrator.
+ *
* @param signer keyring of signer
* @param collectionId ID of collection
- * @param addressObj address to add to the allow list
- * @param label extra label for log
+ * @param adminAddressObj Administrator address (substrate or ethereum)
+ * @example removeAdmin(aliceKeyring, 10, {Substrate: "5DyN4Y92vZCjv38fg..."})
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async addToAllowList(signer: TSigner, collectionId: number, addressObj: ICrossAccountId, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async removeAdmin(signer: TSigner, collectionId: number, adminAddressObj: ICrossAccountId): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
- 'api.tx.unique.addToAllowList', [collectionId, addressObj],
- true, `Unable to add address to allow list for ${label}`,
+ 'api.tx.unique.removeCollectionAdmin', [collectionId, adminAddressObj],
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'AllowListAddressAdded');
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionAdminRemoved');
}
/**
- * Removes an address from allow list.
- *
+ * Adds an address to allow list
* @param signer keyring of signer
* @param collectionId ID of collection
- * @param addressObj address to be removed from allow list (substrate or ethereum)
- * @param label extra label for log
- * @example removeFromAllowList(aliceKeyring, 10, {Substrate: "5DyN4Y92vZCjv38fg..."})
+ * @param addressObj address to add to the allow list
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async removeFromAllowList(signer: TSigner, collectionId: number, addressObj: ICrossAccountId, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async addToAllowList(signer: TSigner, collectionId: number, addressObj: ICrossAccountId): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
- 'api.tx.unique.removeFromAllowList', [collectionId, addressObj],
- true, `Unable to remove address from allow list for ${label}`,
+ 'api.tx.unique.addToAllowList', [collectionId, addressObj],
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'AllowListAddressRemoved', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'AllowListAddressAdded');
}
/**
- * Removes a collection administrator.
+ * Removes an address from allow list
*
* @param signer keyring of signer
* @param collectionId ID of collection
- * @param adminAddressObj Administrator address (substrate or ethereum)
- * @param label extra label for log
- * @example removeAdmin(aliceKeyring, 10, {Substrate: "5DyN4Y92vZCjv38fg..."})
+ * @param addressObj address to remove from the allow list
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async removeAdmin(signer: TSigner, collectionId: number, adminAddressObj: ICrossAccountId, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async removeFromAllowList(signer: TSigner, collectionId: number, addressObj: ICrossAccountId): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
- 'api.tx.unique.removeCollectionAdmin', [collectionId, adminAddressObj],
- true, `Unable to remove collection admin for ${label}`,
+ 'api.tx.unique.removeFromAllowList', [collectionId, addressObj],
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionAdminRemoved', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'AllowListAddressRemoved');
}
/**
@@ -750,19 +770,17 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param permissions collection permissions object
- * @param label extra label for log
* @example setPermissions(aliceKeyring, 10, {access:'AllowList', mintMode: true, nesting: {collectionAdmin: true, tokenOwner: true}});
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async setPermissions(signer: TSigner, collectionId: number, permissions: ICollectionPermissions, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async setPermissions(signer: TSigner, collectionId: number, permissions: ICollectionPermissions): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.setCollectionPermissions', [collectionId, permissions],
- true, `Unable to set collection permissions for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionPermissionSet', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'unique', 'CollectionPermissionSet');
}
/**
@@ -771,12 +789,11 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param permissions nesting permissions object
- * @param label extra label for log
* @example enableNesting(aliceKeyring, 10, {collectionAdmin: true, tokenOwner: true});
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async enableNesting(signer: TSigner, collectionId: number, permissions: INestingPermissions, label?: string): Promise<boolean> {
- return await this.setPermissions(signer, collectionId, {nesting: permissions}, label);
+ async enableNesting(signer: TSigner, collectionId: number, permissions: INestingPermissions): Promise<boolean> {
+ return await this.setPermissions(signer, collectionId, {nesting: permissions});
}
/**
@@ -784,12 +801,11 @@
*
* @param signer keyring of signer
* @param collectionId ID of collection
- * @param label extra label for log
* @example disableNesting(aliceKeyring, 10);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async disableNesting(signer: TSigner, collectionId: number, label?: string): Promise<boolean> {
- return await this.setPermissions(signer, collectionId, {nesting: {tokenOwner: false, collectionAdmin: false}}, label);
+ async disableNesting(signer: TSigner, collectionId: number): Promise<boolean> {
+ return await this.setPermissions(signer, collectionId, {nesting: {tokenOwner: false, collectionAdmin: false}});
}
/**
@@ -798,19 +814,17 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param properties array of property objects
- * @param label extra label for log
* @example setProperties(aliceKeyring, 10, [{key: "gender", value: "male"}]);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async setProperties(signer: TSigner, collectionId: number, properties: IProperty[], label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async setProperties(signer: TSigner, collectionId: number, properties: IProperty[]): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.setCollectionProperties', [collectionId, properties],
- true, `Unable to set collection properties for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'CollectionPropertySet', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'CollectionPropertySet');
}
/**
@@ -819,19 +833,17 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param propertyKeys array of property keys to delete
- * @param label
* @example deleteProperties(aliceKeyring, 10, ["gender", "age"]);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async deleteProperties(signer: TSigner, collectionId: number, propertyKeys: string[], label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async deleteProperties(signer: TSigner, collectionId: number, propertyKeys: string[]): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.deleteCollectionProperties', [collectionId, propertyKeys],
- true, `Unable to delete collection properties for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'CollectionPropertyDeleted', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'CollectionPropertyDeleted');
}
/**
@@ -849,7 +861,7 @@
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.transfer', [addressObj, collectionId, tokenId, amount],
- true, `Unable to transfer token #${tokenId} from collection #${collectionId}`,
+ true, // `Unable to transfer token #${tokenId} from collection #${collectionId}`,
);
return this.helper.util.isTokenTransferSuccess(result.result.events, collectionId, tokenId, {Substrate: typeof signer === 'string' ? signer : signer.address}, addressObj, amount);
@@ -872,7 +884,7 @@
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.transferFrom', [fromAddressObj, toAddressObj, collectionId, tokenId, amount],
- true, `Unable to transfer token #${tokenId} from collection #${collectionId}`,
+ true, // `Unable to transfer token #${tokenId} from collection #${collectionId}`,
);
return this.helper.util.isTokenTransferSuccess(result.result.events, collectionId, tokenId, fromAddressObj, toAddressObj, amount);
}
@@ -884,22 +896,20 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param label
* @param amount amount of tokens to be burned. For NFT must be set to 1n
* @example burnToken(aliceKeyring, 10, 5);
* @returns ```true``` and burnt token number is extrinsic success. Otherwise ```false``` and ```null```
*/
- async burnToken(signer: TSigner, collectionId: number, tokenId: number, label?: string, amount=1n): Promise<{
+ async burnToken(signer: TSigner, collectionId: number, tokenId: number, amount=1n): Promise<{
success: boolean,
token: number | null
}> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
const burnResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.burnItem', [collectionId, tokenId, amount],
- true, `Unable to burn token for ${label}`,
+ true, // `Unable to burn token for ${label}`,
);
- const burnedTokens = this.helper.util.extractTokensFromBurnResult(burnResult, label);
+ const burnedTokens = this.helper.util.extractTokensFromBurnResult(burnResult);
if (burnedTokens.tokens.length > 1) throw Error('Burned multiple tokens');
return {success: burnedTokens.success, token: burnedTokens.tokens.length > 0 ? burnedTokens.tokens[0] : null};
}
@@ -911,19 +921,17 @@
* @param collectionId ID of collection
* @param fromAddressObj address on behalf of which the token will be burnt
* @param tokenId ID of token
- * @param label
* @param amount amount of tokens to be burned. For NFT must be set to 1n
* @example burnTokenFrom(aliceKeyring, 10, {Substrate: "5DyN4Y92vZCjv38fg..."}, 5, {Ethereum: "0x9F0583DbB85..."})
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async burnTokenFrom(signer: TSigner, collectionId: number, fromAddressObj: ICrossAccountId, tokenId: number, label?: string, amount=1n): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async burnTokenFrom(signer: TSigner, collectionId: number, fromAddressObj: ICrossAccountId, tokenId: number, amount=1n): Promise<boolean> {
const burnResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.burnFrom', [collectionId, fromAddressObj, tokenId, amount],
- true, `Unable to burn token from for ${label}`,
+ true, // `Unable to burn token from for ${label}`,
);
- const burnedTokens = this.helper.util.extractTokensFromBurnResult(burnResult, label);
+ const burnedTokens = this.helper.util.extractTokensFromBurnResult(burnResult);
return burnedTokens.success && burnedTokens.tokens.length > 0;
}
@@ -933,28 +941,27 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param toAddressObj
- * @param label
+ * @param toAddressObj Substrate or Ethereum address which gets approved use of the signer's tokens
* @param amount amount of token to be approved. For NFT must be set to 1n
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async approveToken(signer: IKeyringPair, collectionId: number, tokenId: number, toAddressObj: ICrossAccountId, label?: string, amount=1n) {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async approveToken(signer: IKeyringPair, collectionId: number, tokenId: number, toAddressObj: ICrossAccountId, amount=1n) {
const approveResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.approve', [toAddressObj, collectionId, tokenId, amount],
- true, `Unable to approve token for ${label}`,
+ true, // `Unable to approve token for ${label}`,
);
- return this.helper.util.findCollectionInEvents(approveResult.result.events, collectionId, 'common', 'Approved', label);
+ return this.helper.util.findCollectionInEvents(approveResult.result.events, collectionId, 'common', 'Approved');
}
/**
- * Get the amount of token pieces approved to transfer
+ * Get the amount of token pieces approved to transfer or burn. Normally 0.
+ *
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param toAccountObj
- * @param fromAccountObj
+ * @param toAccountObj address which is approved to use token pieces
+ * @param fromAccountObj address which may have allowed the use of its owned tokens
* @example getTokenApprovedPieces(10, 5, {Substrate: "5DyN4Y92vZCjv38fg..."}, {Substrate: "5ERZNF88Mm7UGfPP3mdG..."})
* @returns number of approved to transfer pieces
*/
@@ -963,7 +970,8 @@
}
/**
- * Get the last created token id
+ * Get the last created token ID in a collection
+ *
* @param collectionId ID of collection
* @example getLastTokenId(10);
* @returns id of the last created token
@@ -974,6 +982,7 @@
/**
* Check if token exists
+ *
* @param collectionId ID of collection
* @param tokenId ID of token
* @example isTokenExists(10, 20);
@@ -999,14 +1008,15 @@
/**
* Get token data
+ *
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param blockHashAt
- * @param propertyKeys
+ * @param propertyKeys optionally filter the token properties to only these keys
+ * @param blockHashAt optionally query the data at some block with this hash
* @example getToken(10, 5);
* @returns human readable token data
*/
- async getToken(collectionId: number, tokenId: number, blockHashAt?: string, propertyKeys?: string[]): Promise<{
+ async getToken(collectionId: number, tokenId: number, propertyKeys: string[] = [], blockHashAt?: string): Promise<{
properties: IProperty[];
owner: ICrossAccountId;
normalizedOwner: ICrossAccountId;
@@ -1016,7 +1026,7 @@
tokenData = await this.helper.callRpc('api.rpc.unique.tokenData', [collectionId, tokenId]);
}
else {
- if(typeof propertyKeys === 'undefined') {
+ if(propertyKeys.length == 0) {
const collection = (await this.helper.callRpc('api.rpc.unique.collectionById', [collectionId])).toHuman();
if(!collection) return null;
propertyKeys = collection.tokenPropertyPermissions.map((x: ITokenPropertyPermission) => x.key);
@@ -1035,45 +1045,43 @@
/**
* Set permissions to change token properties
+ *
* @param signer keyring of signer
* @param collectionId ID of collection
* @param permissions permissions to change a property by the collection owner or admin
- * @param label
* @example setTokenPropertyPermissions(
* aliceKeyring, 10, [{key: "gender", permission: {tokenOwner: true, mutable: true, collectionAdmin: true}}]
* )
* @returns true if extrinsic success otherwise false
*/
- async setTokenPropertyPermissions(signer: TSigner, collectionId: number, permissions: ITokenPropertyPermission[], label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async setTokenPropertyPermissions(signer: TSigner, collectionId: number, permissions: ITokenPropertyPermission[]): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.setTokenPropertyPermissions', [collectionId, permissions],
- true, `Unable to set token property permissions for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'PropertyPermissionSet', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'PropertyPermissionSet');
}
/**
* Set token properties
+ *
* @param signer keyring of signer
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param properties
- * @param label
+ * @param properties key-value pairs of metadata which to add to a token. Keys must be permitted in the collection
* @example setTokenProperties(aliceKeyring, 10, 5, [{key: "gender", value: "female"}, {key: "age", value: "23"}])
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async setTokenProperties(signer: TSigner, collectionId: number, tokenId: number, properties: IProperty[], label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `token #${tokenId} from collection #${collectionId}`;
+ async setTokenProperties(signer: TSigner, collectionId: number, tokenId: number, properties: IProperty[]): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.setTokenProperties', [collectionId, tokenId, properties],
- true, `Unable to set token properties for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'TokenPropertySet', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'TokenPropertySet');
}
/**
@@ -1082,31 +1090,29 @@
* @param collectionId ID of collection
* @param tokenId ID of token
* @param propertyKeys property keys to be deleted
- * @param label
* @example deleteTokenProperties(aliceKeyring, 10, 5, ["gender", "age"])
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async deleteTokenProperties(signer: TSigner, collectionId: number, tokenId: number, propertyKeys: string[], label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `token #${tokenId} from collection #${collectionId}`;
+ async deleteTokenProperties(signer: TSigner, collectionId: number, tokenId: number, propertyKeys: string[]): Promise<boolean> {
const result = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.deleteTokenProperties', [collectionId, tokenId, propertyKeys],
- true, `Unable to delete token properties for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'TokenPropertyDeleted', label);
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'TokenPropertyDeleted');
}
/**
* Mint new collection
+ *
* @param signer keyring of signer
* @param collectionOptions basic collection options and properties
* @param mode NFT or RFT type of a collection
- * @param errorLabel
* @example mintCollection(aliceKeyring, {name: 'New', description: "New collection", tokenPrefix: "NEW"}, "NFT")
* @returns object of the created collection
*/
- async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions, mode: 'NFT' | 'RFT', errorLabel = 'Unable to mint collection'): Promise<UniqueCollectionBase> {
+ async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions, mode: 'NFT' | 'RFT'): Promise<UniqueCollectionBase> {
collectionOptions = JSON.parse(JSON.stringify(collectionOptions)) as ICollectionCreationOptions; // Clone object
collectionOptions.mode = (mode === 'NFT') ? {nft: null} : {refungible: null};
for (const key of ['name', 'description', 'tokenPrefix']) {
@@ -1115,16 +1121,16 @@
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createCollectionEx', [collectionOptions],
- true, errorLabel,
+ true, // errorLabel,
);
- return this.getCollectionObject(this.helper.util.extractCollectionIdFromCreationResult(creationResult, errorLabel));
+ return this.getCollectionObject(this.helper.util.extractCollectionIdFromCreationResult(creationResult));
}
- getCollectionObject(collectionId: number): any {
+ getCollectionObject(_collectionId: number): any {
return null;
}
- getTokenObject(collectionId: number, tokenId: number): any {
+ getTokenObject(_collectionId: number, _tokenId: number): any {
return null;
}
}
@@ -1156,7 +1162,7 @@
* Get token's owner
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param blockHashAt
+ * @param blockHashAt optionally query the data at the block with this hash
* @example getTokenOwner(10, 5);
* @returns Address in CrossAccountId format, e.g. {Substrate: "5DnSF6RRjwteE3BrCj..."}
*/
@@ -1238,7 +1244,7 @@
* Get tokens nested in the provided token
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param blockHashAt
+ * @param blockHashAt optionally query the data at the block with this hash
* @example getTokenChildren(10, 5);
* @returns tokens whose depth of nesting is <= 5
*/
@@ -1260,15 +1266,14 @@
* @param signer keyring of signer
* @param tokenObj token to be nested
* @param rootTokenObj token to be parent
- * @param label
* @example nestToken(aliceKeyring, {collectionId: 10, tokenId: 5}, {collectionId: 10, tokenId: 4});
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async nestToken(signer: TSigner, tokenObj: IToken, rootTokenObj: IToken, label='nest token'): Promise<boolean> {
+ async nestToken(signer: TSigner, tokenObj: IToken, rootTokenObj: IToken): Promise<boolean> {
const rootTokenAddress = {Ethereum: this.helper.util.getNestingTokenAddress(rootTokenObj.collectionId, rootTokenObj.tokenId)};
const result = await this.transferToken(signer, tokenObj.collectionId, tokenObj.tokenId, rootTokenAddress);
if(!result) {
- throw Error(`Unable to nest token for ${label}`);
+ throw Error('Unable to nest token!');
}
return result;
}
@@ -1279,15 +1284,14 @@
* @param tokenObj token to unnest
* @param rootTokenObj parent of a token
* @param toAddressObj address of a new token owner
- * @param label
* @example unnestToken(aliceKeyring, {collectionId: 10, tokenId: 5}, {collectionId: 10, tokenId: 4}, {Substrate: "5DyN4Y92vZCjv38fg..."});
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async unnestToken(signer: TSigner, tokenObj: IToken, rootTokenObj: IToken, toAddressObj: ICrossAccountId, label='unnest token'): Promise<boolean> {
+ async unnestToken(signer: TSigner, tokenObj: IToken, rootTokenObj: IToken, toAddressObj: ICrossAccountId): Promise<boolean> {
const rootTokenAddress = {Ethereum: this.helper.util.getNestingTokenAddress(rootTokenObj.collectionId, rootTokenObj.tokenId)};
const result = await this.transferTokenFrom(signer, tokenObj.collectionId, tokenObj.tokenId, rootTokenAddress, toAddressObj);
if(!result) {
- throw Error(`Unable to unnest token for ${label}`);
+ throw Error('Unable to unnest token!');
}
return result;
}
@@ -1296,7 +1300,6 @@
* Mint new collection
* @param signer keyring of signer
* @param collectionOptions Collection options
- * @param label
* @example
* mintCollection(aliceKeyring, {
* name: 'New',
@@ -1305,19 +1308,17 @@
* })
* @returns object of the created collection
*/
- async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions, label = 'new collection'): Promise<UniqueNFTCollection> {
- return await super.mintCollection(signer, collectionOptions, 'NFT', `Unable to mint NFT collection for ${label}`) as UniqueNFTCollection;
+ async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions): Promise<UniqueNFTCollection> {
+ return await super.mintCollection(signer, collectionOptions, 'NFT') as UniqueNFTCollection;
}
/**
* Mint new token
* @param signer keyring of signer
* @param data token data
- * @param label
* @returns created token object
*/
- async mintToken(signer: TSigner, data: { collectionId: number; owner: ICrossAccountId | string; properties?: IProperty[]; }, label?: string): Promise<UniqueNFTToken> {
- if(typeof label === 'undefined') label = `collection #${data.collectionId}`;
+ async mintToken(signer: TSigner, data: { collectionId: number; owner: ICrossAccountId | string; properties?: IProperty[]; }): Promise<UniqueNFTToken> {
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createItem', [data.collectionId, (typeof data.owner === 'string') ? {Substrate: data.owner} : data.owner, {
@@ -1325,9 +1326,9 @@
properties: data.properties,
},
}],
- true, `Unable to mint NFT token for ${label}`,
+ true,
);
- const createdTokens = this.helper.util.extractTokensFromCreationResult(creationResult, label);
+ const createdTokens = this.helper.util.extractTokensFromCreationResult(creationResult);
if (createdTokens.tokens.length > 1) throw Error('Minted multiple tokens');
if (createdTokens.tokens.length < 1) throw Error('No tokens minted');
return this.getTokenObject(data.collectionId, createdTokens.tokens[0].tokenId);
@@ -1338,7 +1339,6 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param tokens array of tokens with owner and properties
- * @param label
* @example
* mintMultipleTokens(aliceKeyring, 10, [{
* owner: {Substrate: "5DyN4Y92vZCjv38fg..."},
@@ -1349,15 +1349,14 @@
* }]);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async mintMultipleTokens(signer: TSigner, collectionId: number, tokens: {owner: ICrossAccountId, properties?: IProperty[]}[], label?: string): Promise<UniqueNFTToken[]> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async mintMultipleTokens(signer: TSigner, collectionId: number, tokens: {owner: ICrossAccountId, properties?: IProperty[]}[]): Promise<UniqueNFTToken[]> {
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createMultipleItemsEx', [collectionId, {NFT: tokens}],
- true, `Unable to mint NFT tokens for ${label}`,
+ true,
);
const collection = this.getCollectionObject(collectionId);
- return this.helper.util.extractTokensFromCreationResult(creationResult, label).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
+ return this.helper.util.extractTokensFromCreationResult(creationResult).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
}
/**
@@ -1366,7 +1365,6 @@
* @param collectionId ID of collection
* @param owner tokens owner
* @param tokens array of tokens with owner and properties
- * @param label
* @example
* mintMultipleTokensWithOneOwner(aliceKeyring, 10, "5DyN4Y92vZCjv38fg...", [{
* properties: [{
@@ -1379,8 +1377,7 @@
* }]);
* @returns array of newly created tokens
*/
- async mintMultipleTokensWithOneOwner(signer: TSigner, collectionId: number, owner: ICrossAccountId, tokens: {properties?: IProperty[]}[], label?: string): Promise<UniqueNFTToken[]> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async mintMultipleTokensWithOneOwner(signer: TSigner, collectionId: number, owner: ICrossAccountId, tokens: {properties?: IProperty[]}[]): Promise<UniqueNFTToken[]> {
const rawTokens = [];
for (const token of tokens) {
const raw = {NFT: {properties: token.properties}};
@@ -1389,23 +1386,10 @@
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createMultipleItems', [collectionId, owner, rawTokens],
- true, `Unable to mint NFT tokens for ${label}`,
+ true,
);
const collection = this.getCollectionObject(collectionId);
- return this.helper.util.extractTokensFromCreationResult(creationResult, label).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
- }
-
- /**
- * Destroys a concrete instance of NFT.
- * @param signer keyring of signer
- * @param collectionId ID of collection
- * @param tokenId ID of token
- * @param label
- * @example burnToken(aliceKeyring, 10, 5);
- * @returns ```true``` and burnt token number is extrinsic success. Otherwise ```false``` and ```null```
- */
- async burnToken(signer: IKeyringPair, collectionId: number, tokenId: number, label?: string): Promise<{ success: boolean; token: number | null; }> {
- return await super.burnToken(signer, collectionId, tokenId, label, 1n);
+ return this.helper.util.extractTokensFromCreationResult(creationResult).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
}
/**
@@ -1415,12 +1399,11 @@
* @param collectionId ID of collection
* @param tokenId ID of token
* @param toAddressObj address to approve
- * @param label
* @example approveToken(aliceKeyring, 10, 5, {Substrate: "5DyN4Y92vZCjv38fg..."})
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async approveToken(signer: IKeyringPair, collectionId: number, tokenId: number, toAddressObj: ICrossAccountId, label?: string, amount=1n) {
- return super.approveToken(signer, collectionId, tokenId, toAddressObj, label, amount);
+ async approveToken(signer: IKeyringPair, collectionId: number, tokenId: number, toAddressObj: ICrossAccountId) {
+ return super.approveToken(signer, collectionId, tokenId, toAddressObj, 1n);
}
}
@@ -1480,7 +1463,7 @@
* @example transferTokenFrom(aliceKeyring, 10, 5, {Substrate: "5DyN4Y92vZCjv38fg..."}, 2000n)
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async transferToken(signer: TSigner, collectionId: number, tokenId: number, addressObj: ICrossAccountId, amount=100n): Promise<boolean> {
+ async transferToken(signer: TSigner, collectionId: number, tokenId: number, addressObj: ICrossAccountId, amount=1n): Promise<boolean> {
return await super.transferToken(signer, collectionId, tokenId, addressObj, amount);
}
@@ -1495,7 +1478,7 @@
* @example transferTokenFrom(aliceKeyring, 10, 5, {Substrate: "5DyN4Y92vZCjv38fg..."}, {Substrate: "5DfhbVfww7ThF8q6f3i..."}, 2000n)
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async transferTokenFrom(signer: TSigner, collectionId: number, tokenId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=100n): Promise<boolean> {
+ async transferTokenFrom(signer: TSigner, collectionId: number, tokenId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=1n): Promise<boolean> {
return await super.transferTokenFrom(signer, collectionId, tokenId, fromAddressObj, toAddressObj, amount);
}
@@ -1503,7 +1486,6 @@
* Mint new collection
* @param signer keyring of signer
* @param collectionOptions Collection options
- * @param label
* @example
* mintCollection(aliceKeyring, {
* name: 'New',
@@ -1512,20 +1494,18 @@
* })
* @returns object of the created collection
*/
- async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions, label = 'new collection'): Promise<UniqueRFTCollection> {
- return await super.mintCollection(signer, collectionOptions, 'RFT', `Unable to mint RFT collection for ${label}`) as UniqueRFTCollection;
+ async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions): Promise<UniqueRFTCollection> {
+ return await super.mintCollection(signer, collectionOptions, 'RFT') as UniqueRFTCollection;
}
/**
* Mint new token
* @param signer keyring of signer
* @param data token data
- * @param label
* @example mintToken(aliceKeyring, {collectionId: 10, owner: {Substrate: '5GHoZe9c73RYbVzq...'}, pieces: 10000n});
* @returns created token object
*/
- async mintToken(signer: TSigner, data: { collectionId: number; owner: ICrossAccountId | string; pieces: bigint; properties?: IProperty[]; }, label?: string): Promise<UniqueRFTToken> {
- if(typeof label === 'undefined') label = `collection #${data.collectionId}`;
+ async mintToken(signer: TSigner, data: { collectionId: number; owner: ICrossAccountId | string; pieces: bigint; properties?: IProperty[]; }): Promise<UniqueRFTToken> {
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createItem', [data.collectionId, (typeof data.owner === 'string') ? {Substrate: data.owner} : data.owner, {
@@ -1534,24 +1514,23 @@
properties: data.properties,
},
}],
- true, `Unable to mint RFT token for ${label}`,
+ true,
);
- const createdTokens = this.helper.util.extractTokensFromCreationResult(creationResult, label);
+ const createdTokens = this.helper.util.extractTokensFromCreationResult(creationResult);
if (createdTokens.tokens.length > 1) throw Error('Minted multiple tokens');
if (createdTokens.tokens.length < 1) throw Error('No tokens minted');
return this.getTokenObject(data.collectionId, createdTokens.tokens[0].tokenId);
}
- async mintMultipleTokens(signer: TSigner, collectionId: number, tokens: {owner: ICrossAccountId, pieces: bigint, properties?: IProperty[]}[], label?: string): Promise<UniqueRFTToken[]> {
+ async mintMultipleTokens(signer: TSigner, collectionId: number, tokens: {owner: ICrossAccountId, pieces: bigint, properties?: IProperty[]}[]): Promise<UniqueRFTToken[]> {
throw Error('Not implemented');
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createMultipleItemsEx', [collectionId, {RefungibleMultipleOwners: tokens}],
- true, `Unable to mint RFT tokens for ${label}`,
+ true, // `Unable to mint RFT tokens for ${label}`,
);
const collection = this.getCollectionObject(collectionId);
- return this.helper.util.extractTokensFromCreationResult(creationResult, label).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
+ return this.helper.util.extractTokensFromCreationResult(creationResult).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
}
/**
@@ -1560,12 +1539,10 @@
* @param collectionId ID of collection
* @param owner tokens owner
* @param tokens array of tokens with properties and pieces
- * @param label
* @example mintMultipleTokensWithOneOwner(aliceKeyring, 10, {Substrate: "5GHoZe9c73RYbVzq..."}, [{pieces: 100000n, properties: [{key: "gender", value: "male"}]}]);
* @returns array of newly created RFT tokens
*/
- async mintMultipleTokensWithOneOwner(signer: TSigner, collectionId: number, owner: ICrossAccountId, tokens: {pieces: bigint, properties?: IProperty[]}[], label?: string): Promise<UniqueRFTToken[]> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async mintMultipleTokensWithOneOwner(signer: TSigner, collectionId: number, owner: ICrossAccountId, tokens: {pieces: bigint, properties?: IProperty[]}[]): Promise<UniqueRFTToken[]> {
const rawTokens = [];
for (const token of tokens) {
const raw = {ReFungible: {pieces: token.pieces, properties: token.properties}};
@@ -1574,10 +1551,10 @@
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createMultipleItems', [collectionId, owner, rawTokens],
- true, `Unable to mint RFT tokens for ${label}`,
+ true,
);
const collection = this.getCollectionObject(collectionId);
- return this.helper.util.extractTokensFromCreationResult(creationResult, label).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
+ return this.helper.util.extractTokensFromCreationResult(creationResult).tokens.map((x: IToken) => collection.getTokenObject(x.tokenId));
}
/**
@@ -1585,13 +1562,12 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param tokenId ID of token
- * @param label
* @param amount number of pieces to be burnt
* @example burnToken(aliceKeyring, 10, 5);
* @returns ```true``` and burnt token number is extrinsic success. Otherwise ```false``` and ```null```
*/
- async burnToken(signer: IKeyringPair, collectionId: number, tokenId: number, label?: string, amount=100n): Promise<{ success: boolean; token: number | null; }> {
- return await super.burnToken(signer, collectionId, tokenId, label, amount);
+ async burnToken(signer: IKeyringPair, collectionId: number, tokenId: number, amount=1n): Promise<{ success: boolean; token: number | null; }> {
+ return await super.burnToken(signer, collectionId, tokenId, amount);
}
/**
@@ -1601,13 +1577,12 @@
* @param collectionId ID of collection
* @param tokenId ID of token
* @param toAddressObj address to approve
- * @param label
* @param amount number of pieces to be approved
* @example approveToken(aliceKeyring, 10, 5, {Substrate: "5GHoZe9c73RYbVzq..."}, "", 10000n);
* @returns true if the token success, otherwise false
*/
- async approveToken(signer: IKeyringPair, collectionId: number, tokenId: number, toAddressObj: ICrossAccountId, label?: string, amount=100n) {
- return super.approveToken(signer, collectionId, tokenId, toAddressObj, label, amount);
+ async approveToken(signer: IKeyringPair, collectionId: number, tokenId: number, toAddressObj: ICrossAccountId, amount=1n) {
+ return super.approveToken(signer, collectionId, tokenId, toAddressObj, amount);
}
/**
@@ -1627,20 +1602,18 @@
* @param collectionId ID of collection
* @param tokenId ID of token
* @param amount new number of pieces
- * @param label
* @example repartitionToken(aliceKeyring, 10, 5, 12345n);
* @returns true if the repartion was success, otherwise false
*/
- async repartitionToken(signer: TSigner, collectionId: number, tokenId: number, amount: bigint, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async repartitionToken(signer: TSigner, collectionId: number, tokenId: number, amount: bigint): Promise<boolean> {
const currentAmount = await this.getTokenTotalPieces(collectionId, tokenId);
const repartitionResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.repartition', [collectionId, tokenId, amount],
- true, `Unable to repartition RFT token for ${label}`,
+ true,
);
- if(currentAmount < amount) return this.helper.util.findCollectionInEvents(repartitionResult.result.events, collectionId, 'common', 'ItemCreated', label);
- return this.helper.util.findCollectionInEvents(repartitionResult.result.events, collectionId, 'common', 'ItemDestroyed', label);
+ if(currentAmount < amount) return this.helper.util.findCollectionInEvents(repartitionResult.result.events, collectionId, 'common', 'ItemCreated');
+ return this.helper.util.findCollectionInEvents(repartitionResult.result.events, collectionId, 'common', 'ItemDestroyed');
}
}
@@ -1661,7 +1634,6 @@
* @param signer keyring of signer
* @param collectionOptions Collection options
* @param decimalPoints number of token decimals
- * @param errorLabel
* @example
* mintCollection(aliceKeyring, {
* name: 'New',
@@ -1670,7 +1642,7 @@
* }, 18)
* @returns newly created fungible collection
*/
- async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions, decimalPoints = 0, errorLabel = 'Unable to mint collection'): Promise<UniqueFTCollection> {
+ async mintCollection(signer: TSigner, collectionOptions: ICollectionCreationOptions, decimalPoints = 0): Promise<UniqueFTCollection> {
collectionOptions = JSON.parse(JSON.stringify(collectionOptions)) as ICollectionCreationOptions; // Clone object
if(collectionOptions.tokenPropertyPermissions) throw Error('Fungible collections has no tokenPropertyPermissions');
collectionOptions.mode = {fungible: decimalPoints};
@@ -1680,9 +1652,9 @@
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createCollectionEx', [collectionOptions],
- true, errorLabel,
+ true,
);
- return this.getCollectionObject(this.helper.util.extractCollectionIdFromCreationResult(creationResult, errorLabel));
+ return this.getCollectionObject(this.helper.util.extractCollectionIdFromCreationResult(creationResult));
}
/**
@@ -1691,12 +1663,10 @@
* @param collectionId ID of collection
* @param owner address owner of new tokens
* @param amount amount of tokens to be meanted
- * @param label
* @example mintTokens(aliceKeyring, 10, {Substrate: "5GHoZe9c73RYbVzq"}, 1000n);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async mintTokens(signer: TSigner, collectionId: number, owner: ICrossAccountId | string, amount: bigint, label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async mintTokens(signer: TSigner, collectionId: number, owner: ICrossAccountId | string, amount: bigint): Promise<boolean> {
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createItem', [collectionId, (typeof owner === 'string') ? {Substrate: owner} : owner, {
@@ -1704,9 +1674,9 @@
value: amount,
},
}],
- true, `Unable to mint fungible tokens for ${label}`,
+ true, // `Unable to mint fungible tokens for ${label}`,
);
- return this.helper.util.findCollectionInEvents(creationResult.result.events, collectionId, 'common', 'ItemCreated', label);
+ return this.helper.util.findCollectionInEvents(creationResult.result.events, collectionId, 'common', 'ItemCreated');
}
/**
@@ -1715,11 +1685,9 @@
* @param collectionId ID of collection
* @param owner tokens owner
* @param tokens array of tokens with properties and pieces
- * @param label
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async mintMultipleTokensWithOneOwner(signer: TSigner, collectionId: number, owner: ICrossAccountId, tokens: {value: bigint}[], label?: string): Promise<boolean> {
- if(typeof label === 'undefined') label = `collection #${collectionId}`;
+ async mintMultipleTokensWithOneOwner(signer: TSigner, collectionId: number, owner: ICrossAccountId, tokens: {value: bigint}[]): Promise<boolean> {
const rawTokens = [];
for (const token of tokens) {
const raw = {Fungible: {Value: token.value}};
@@ -1728,9 +1696,9 @@
const creationResult = await this.helper.executeExtrinsic(
signer,
'api.tx.unique.createMultipleItems', [collectionId, owner, rawTokens],
- true, `Unable to mint RFT tokens for ${label}`,
+ true,
);
- return this.helper.util.findCollectionInEvents(creationResult.result.events, collectionId, 'common', 'ItemCreated', label);
+ return this.helper.util.findCollectionInEvents(creationResult.result.events, collectionId, 'common', 'ItemCreated');
}
/**
@@ -1758,12 +1726,12 @@
* Transfer tokens to address
* @param signer keyring of signer
* @param collectionId ID of collection
- * @param toAddressObj address recepient
+ * @param toAddressObj address recipient
* @param amount amount of tokens to be sent
* @example transfer(aliceKeyring, 10, {Substrate: "5GHoZe9c73RYbVzq..."}, 1000n);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async transfer(signer: TSigner, collectionId: number, toAddressObj: ICrossAccountId, amount: bigint) {
+ async transfer(signer: TSigner, collectionId: number, toAddressObj: ICrossAccountId, amount=1n) {
return await super.transferToken(signer, collectionId, 0, toAddressObj, amount);
}
@@ -1777,7 +1745,7 @@
* @example transferFrom(aliceKeyring, 10, {Substrate: "5GHoZe9c73RYbVzq..."}, {Substrate: "5DfhbVfww7ThF8q6f3ij..."}, 10000n);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async transferFrom(signer: TSigner, collectionId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount: bigint) {
+ async transferFrom(signer: TSigner, collectionId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=1n) {
return await super.transferTokenFrom(signer, collectionId, 0, fromAddressObj, toAddressObj, amount);
}
@@ -1786,12 +1754,11 @@
* @param signer keyring of signer
* @param collectionId ID of collection
* @param amount amount of tokens to be destroyed
- * @param label
* @example burnTokens(aliceKeyring, 10, 1000n);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async burnTokens(signer: IKeyringPair, collectionId: number, amount=100n, label?: string): Promise<boolean> {
- return (await super.burnToken(signer, collectionId, 0, label, amount)).success;
+ async burnTokens(signer: IKeyringPair, collectionId: number, amount=1n): Promise<boolean> {
+ return (await super.burnToken(signer, collectionId, 0, amount)).success;
}
/**
@@ -1800,12 +1767,11 @@
* @param collectionId ID of collection
* @param fromAddressObj address on behalf of which tokens will be burnt
* @param amount amount of tokens to be burnt
- * @param label
* @example burnTokensFrom(aliceKeyring, 10, {Substrate: "5GHoZe9c73RYbVzq..."}, 1000n);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async burnTokensFrom(signer: IKeyringPair, collectionId: number, fromAddressObj: ICrossAccountId, amount=100n, label?: string): Promise<boolean> {
- return await super.burnTokenFrom(signer, collectionId, fromAddressObj, 0, label, amount);
+ async burnTokensFrom(signer: IKeyringPair, collectionId: number, fromAddressObj: ICrossAccountId, amount=1n): Promise<boolean> {
+ return await super.burnTokenFrom(signer, collectionId, fromAddressObj, 0, amount);
}
/**
@@ -1824,12 +1790,11 @@
* @param collectionId ID of collection
* @param toAddressObj address to be approved
* @param amount amount of tokens to be approved
- * @param label
* @example approveTokens(aliceKeyring, 10, {Substrate: "5GHoZe9c73RYbVzq..."}, 1000n)
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
- async approveTokens(signer: IKeyringPair, collectionId: number, toAddressObj: ICrossAccountId, amount=100n, label?: string) {
- return super.approveToken(signer, collectionId, 0, toAddressObj, label, amount);
+ async approveTokens(signer: IKeyringPair, collectionId: number, toAddressObj: ICrossAccountId, amount=1n) {
+ return super.approveToken(signer, collectionId, 0, toAddressObj, amount);
}
/**
@@ -1881,6 +1846,13 @@
return blockHash;
}
+ // TODO add docs
+ async getBlock(blockHashOrNumber: string | number): Promise<IBlock | null> {
+ const blockHash = typeof blockHashOrNumber === 'string' ? blockHashOrNumber : await this.getBlockHashByNumber(blockHashOrNumber);
+ if (!blockHash) return null;
+ return (await this.helper.callRpc('api.rpc.chain.getBlock', [blockHash])).toHuman().block;
+ }
+
/**
* Get account nonce
* @param address substrate address
@@ -1915,6 +1887,16 @@
}
/**
+ * Get full substrate balance including free, miscFrozen, feeFrozen, and reserved
+ * @param address substrate address
+ * @returns
+ */
+ async getSubstrateFull(address: TSubstrateAccount): Promise<ISubstrateBalance> {
+ const accountInfo = (await this.helper.callRpc('api.query.system.account', [address])).data;
+ return {free: accountInfo.free.toBigInt(), miscFrozen: accountInfo.miscFrozen.toBigInt(), feeFrozen: accountInfo.feeFrozen.toBigInt(), reserved: accountInfo.reserved.toBigInt()};
+ }
+
+ /**
* Get ethereum address balance
* @param address ethereum address
* @example getEthereum("0x9F0583DbB855d...")
@@ -1927,13 +1909,13 @@
/**
* Transfer tokens to substrate address
* @param signer keyring of signer
- * @param address substrate address of a recepient
+ * @param address substrate address of a recipient
* @param amount amount of tokens to be transfered
* @example transferToSubstrate(aliceKeyring, "5GrwvaEF5zXb26Fz...", 100_000_000_000n);
* @returns ```true``` if extrinsic success, otherwise ```false```
*/
async transferToSubstrate(signer: TSigner, address: TSubstrateAccount, amount: bigint | string): Promise<boolean> {
- const result = await this.helper.executeExtrinsic(signer, 'api.tx.balances.transfer', [address, amount], true, `Unable to transfer balance from ${this.helper.getSignerAddress(signer)} to ${address}`);
+ const result = await this.helper.executeExtrinsic(signer, 'api.tx.balances.transfer', [address, amount], true/*, `Unable to transfer balance from ${this.helper.getSignerAddress(signer)} to ${address}`*/);
let transfer = {from: null, to: null, amount: 0n} as any;
result.result.events.forEach(({event: {data, method, section}}) => {
@@ -2000,7 +1982,59 @@
}
}
+class StakingGroup extends HelperGroup {
+ /**
+ * Stake tokens for App Promotion
+ * @param signer keyring of signer
+ * @param amountToStake amount of tokens to stake
+ * @param label extra label for log
+ * @returns
+ */
+ async stake(signer: TSigner, amountToStake: bigint, label?: string): Promise<boolean> {
+ if(typeof label === 'undefined') label = `${signer.address} amount: ${amountToStake}`;
+ const stakeResult = await this.helper.executeExtrinsic(
+ signer, 'api.tx.appPromotion.stake',
+ [amountToStake], true,
+ );
+ // TODO extract info from stakeResult
+ return true;
+ }
+ /**
+ * Unstake tokens for App Promotion
+ * @param signer keyring of signer
+ * @param amountToUnstake amount of tokens to unstake
+ * @param label extra label for log
+ * @returns block number where balances will be unlocked
+ */
+ async unstake(signer: TSigner, label?: string): Promise<number> {
+ if(typeof label === 'undefined') label = `${signer.address}`;
+ const unstakeResult = await this.helper.executeExtrinsic(
+ signer, 'api.tx.appPromotion.unstake',
+ [], true,
+ );
+ // TODO extract block number fron events
+ return 1;
+ }
+
+ async getTotalStaked(address?: ICrossAccountId): Promise<bigint> {
+ if (address) return (await this.helper.callRpc('api.rpc.appPromotion.totalStaked', [address])).toBigInt();
+ return (await this.helper.callRpc('api.rpc.appPromotion.totalStaked')).toBigInt();
+ }
+
+ async getTotalStakedPerBlock(address: ICrossAccountId): Promise<bigint[][]> {
+ return (await this.helper.callRpc('api.rpc.appPromotion.totalStakedPerBlock', [address])).map(([block, amount]: any[]) => [block.toBigInt(), amount.toBigInt()]);
+ }
+
+ async getPendingUnstake(address: ICrossAccountId): Promise<bigint> {
+ return (await this.helper.callRpc('api.rpc.appPromotion.pendingUnstake', [address])).toBigInt();
+ }
+
+ async getPendingUnstakePerBlock(address: ICrossAccountId): Promise<bigint[][]> {
+ return (await this.helper.callRpc('api.rpc.appPromotion.pendingUnstakePerBlock', [address])).map(([block, amount]: any[]) => [block.toBigInt(), amount.toBigInt()]);
+ }
+}
+
export class UniqueHelper extends ChainHelperBase {
chain: ChainGroup;
balance: BalanceGroup;
@@ -2009,6 +2043,7 @@
nft: NFTGroup;
rft: RFTGroup;
ft: FTGroup;
+ staking: StakingGroup;
constructor(logger?: ILogger) {
super(logger);
@@ -2019,6 +2054,7 @@
this.nft = new NFTGroup(this);
this.rft = new RFTGroup(this);
this.ft = new FTGroup(this);
+ this.staking = new StakingGroup(this);
}
}
@@ -2056,64 +2092,72 @@
return await this.helper.collection.getEffectiveLimits(this.collectionId);
}
- async setSponsor(signer: TSigner, sponsorAddress: TSubstrateAccount, label?: string) {
- return await this.helper.collection.setSponsor(signer, this.collectionId, sponsorAddress, label);
+ async setSponsor(signer: TSigner, sponsorAddress: TSubstrateAccount) {
+ return await this.helper.collection.setSponsor(signer, this.collectionId, sponsorAddress);
}
- async confirmSponsorship(signer: TSigner, label?: string) {
- return await this.helper.collection.confirmSponsorship(signer, this.collectionId, label);
+ async confirmSponsorship(signer: TSigner) {
+ return await this.helper.collection.confirmSponsorship(signer, this.collectionId);
}
- async setLimits(signer: TSigner, limits: ICollectionLimits, label?: string) {
- return await this.helper.collection.setLimits(signer, this.collectionId, limits, label);
+ async removeSponsor(signer: TSigner) {
+ return await this.helper.collection.removeSponsor(signer, this.collectionId);
}
- async changeOwner(signer: TSigner, ownerAddress: TSubstrateAccount, label?: string) {
- return await this.helper.collection.changeOwner(signer, this.collectionId, ownerAddress, label);
+ async setLimits(signer: TSigner, limits: ICollectionLimits) {
+ return await this.helper.collection.setLimits(signer, this.collectionId, limits);
+ }
+
+ async changeOwner(signer: TSigner, ownerAddress: TSubstrateAccount) {
+ return await this.helper.collection.changeOwner(signer, this.collectionId, ownerAddress);
+ }
+
+ async addAdmin(signer: TSigner, adminAddressObj: ICrossAccountId) {
+ return await this.helper.collection.addAdmin(signer, this.collectionId, adminAddressObj);
}
- async addAdmin(signer: TSigner, adminAddressObj: ICrossAccountId, label?: string) {
- return await this.helper.collection.addAdmin(signer, this.collectionId, adminAddressObj, label);
+ async enableCertainPermissions(signer: TSigner, accessMode: 'AllowList' | 'Normal' | undefined = 'AllowList', mintMode: boolean | undefined = true) {
+ return await this.setPermissions(signer, {access: accessMode, mintMode: mintMode});
}
- async addToAllowList(signer: TSigner, addressObj: ICrossAccountId, label?: string) {
- return await this.helper.collection.addToAllowList(signer, this.collectionId, addressObj, label);
+ async addToAllowList(signer: TSigner, addressObj: ICrossAccountId) {
+ return await this.helper.collection.addToAllowList(signer, this.collectionId, addressObj);
}
- async removeFromAllowList(signer: TSigner, addressObj: ICrossAccountId, label?: string) {
- return await this.helper.collection.removeFromAllowList(signer, this.collectionId, addressObj, label);
+ async removeFromAllowList(signer: TSigner, addressObj: ICrossAccountId) {
+ return await this.helper.collection.removeFromAllowList(signer, this.collectionId, addressObj);
}
- async removeAdmin(signer: TSigner, adminAddressObj: ICrossAccountId, label?: string) {
- return await this.helper.collection.removeAdmin(signer, this.collectionId, adminAddressObj, label);
+ async removeAdmin(signer: TSigner, adminAddressObj: ICrossAccountId) {
+ return await this.helper.collection.removeAdmin(signer, this.collectionId, adminAddressObj);
}
- async setProperties(signer: TSigner, properties: IProperty[], label?: string) {
- return await this.helper.collection.setProperties(signer, this.collectionId, properties, label);
+ async setProperties(signer: TSigner, properties: IProperty[]) {
+ return await this.helper.collection.setProperties(signer, this.collectionId, properties);
}
- async deleteProperties(signer: TSigner, propertyKeys: string[], label?: string) {
- return await this.helper.collection.deleteProperties(signer, this.collectionId, propertyKeys, label);
+ async deleteProperties(signer: TSigner, propertyKeys: string[]) {
+ return await this.helper.collection.deleteProperties(signer, this.collectionId, propertyKeys);
}
async getTokenNextSponsored(tokenId: number, addressObj: ICrossAccountId) {
return await this.helper.collection.getTokenNextSponsored(this.collectionId, tokenId, addressObj);
}
- async setPermissions(signer: TSigner, permissions: ICollectionPermissions, label?: string) {
- return await this.helper.collection.setPermissions(signer, this.collectionId, permissions, label);
+ async setPermissions(signer: TSigner, permissions: ICollectionPermissions) {
+ return await this.helper.collection.setPermissions(signer, this.collectionId, permissions);
}
- async enableNesting(signer: TSigner, permissions: INestingPermissions, label?: string) {
- return await this.helper.collection.enableNesting(signer, this.collectionId, permissions, label);
+ async enableNesting(signer: TSigner, permissions: INestingPermissions) {
+ return await this.helper.collection.enableNesting(signer, this.collectionId, permissions);
}
- async disableNesting(signer: TSigner, label?: string) {
- return await this.helper.collection.disableNesting(signer, this.collectionId, label);
+ async disableNesting(signer: TSigner) {
+ return await this.helper.collection.disableNesting(signer, this.collectionId);
}
- async burn(signer: TSigner, label?: string) {
- return await this.helper.collection.burn(signer, this.collectionId, label);
+ async burn(signer: TSigner) {
+ return await this.helper.collection.burn(signer, this.collectionId);
}
}
@@ -2128,7 +2172,7 @@
}
async getToken(tokenId: number, blockHashAt?: string) {
- return await this.helper.nft.getToken(this.collectionId, tokenId, blockHashAt);
+ return await this.helper.nft.getToken(this.collectionId, tokenId, [], blockHashAt);
}
async getTokenOwner(tokenId: number, blockHashAt?: string) {
@@ -2151,44 +2195,44 @@
return await this.helper.nft.transferTokenFrom(signer, this.collectionId, tokenId, fromAddressObj, toAddressObj);
}
- async approveToken(signer: TSigner, tokenId: number, toAddressObj: ICrossAccountId, label?: string) {
- return await this.helper.nft.approveToken(signer, this.collectionId, tokenId, toAddressObj, label);
+ async approveToken(signer: TSigner, tokenId: number, toAddressObj: ICrossAccountId) {
+ return await this.helper.nft.approveToken(signer, this.collectionId, tokenId, toAddressObj);
}
async isTokenApproved(tokenId: number, toAddressObj: ICrossAccountId) {
return await this.helper.nft.isTokenApproved(this.collectionId, tokenId, toAddressObj);
}
- async mintToken(signer: TSigner, owner: ICrossAccountId, properties?: IProperty[], label?: string) {
- return await this.helper.nft.mintToken(signer, {collectionId: this.collectionId, owner, properties}, label);
+ async mintToken(signer: TSigner, owner: ICrossAccountId, properties?: IProperty[]) {
+ return await this.helper.nft.mintToken(signer, {collectionId: this.collectionId, owner, properties});
}
- async mintMultipleTokens(signer: TSigner, tokens: {owner: ICrossAccountId, properties?: IProperty[]}[], label?: string) {
- return await this.helper.nft.mintMultipleTokens(signer, this.collectionId, tokens, label);
+ async mintMultipleTokens(signer: TSigner, tokens: {owner: ICrossAccountId, properties?: IProperty[]}[]) {
+ return await this.helper.nft.mintMultipleTokens(signer, this.collectionId, tokens);
}
- async burnToken(signer: TSigner, tokenId: number, label?: string) {
- return await this.helper.nft.burnToken(signer, this.collectionId, tokenId, label);
+ async burnToken(signer: TSigner, tokenId: number) {
+ return await this.helper.nft.burnToken(signer, this.collectionId, tokenId);
}
- async setTokenProperties(signer: TSigner, tokenId: number, properties: IProperty[], label?: string) {
- return await this.helper.nft.setTokenProperties(signer, this.collectionId, tokenId, properties, label);
+ async setTokenProperties(signer: TSigner, tokenId: number, properties: IProperty[]) {
+ return await this.helper.nft.setTokenProperties(signer, this.collectionId, tokenId, properties);
}
- async deleteTokenProperties(signer: TSigner, tokenId: number, propertyKeys: string[], label?: string) {
- return await this.helper.nft.deleteTokenProperties(signer, this.collectionId, tokenId, propertyKeys, label);
+ async deleteTokenProperties(signer: TSigner, tokenId: number, propertyKeys: string[]) {
+ return await this.helper.nft.deleteTokenProperties(signer, this.collectionId, tokenId, propertyKeys);
}
- async setTokenPropertyPermissions(signer: TSigner, permissions: ITokenPropertyPermission[], label?: string) {
- return await this.helper.nft.setTokenPropertyPermissions(signer, this.collectionId, permissions, label);
+ async setTokenPropertyPermissions(signer: TSigner, permissions: ITokenPropertyPermission[]) {
+ return await this.helper.nft.setTokenPropertyPermissions(signer, this.collectionId, permissions);
}
- async nestToken(signer: TSigner, tokenId: number, toTokenObj: IToken, label?: string) {
- return await this.helper.nft.nestToken(signer, {collectionId: this.collectionId, tokenId}, toTokenObj, label);
+ async nestToken(signer: TSigner, tokenId: number, toTokenObj: IToken) {
+ return await this.helper.nft.nestToken(signer, {collectionId: this.collectionId, tokenId}, toTokenObj);
}
- async unnestToken(signer: TSigner, tokenId: number, fromTokenObj: IToken, toAddressObj: ICrossAccountId, label?: string) {
- return await this.helper.nft.unnestToken(signer, {collectionId: this.collectionId, tokenId}, fromTokenObj, toAddressObj, label);
+ async unnestToken(signer: TSigner, tokenId: number, fromTokenObj: IToken, toAddressObj: ICrossAccountId) {
+ return await this.helper.nft.unnestToken(signer, {collectionId: this.collectionId, tokenId}, fromTokenObj, toAddressObj);
}
}
@@ -2214,59 +2258,59 @@
return await this.helper.rft.getTokenTotalPieces(this.collectionId, tokenId);
}
- async transferToken(signer: TSigner, tokenId: number, addressObj: ICrossAccountId, amount=100n) {
+ async transferToken(signer: TSigner, tokenId: number, addressObj: ICrossAccountId, amount=1n) {
return await this.helper.rft.transferToken(signer, this.collectionId, tokenId, addressObj, amount);
}
- async transferTokenFrom(signer: TSigner, tokenId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=100n) {
+ async transferTokenFrom(signer: TSigner, tokenId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=1n) {
return await this.helper.rft.transferTokenFrom(signer, this.collectionId, tokenId, fromAddressObj, toAddressObj, amount);
}
- async approveToken(signer: TSigner, tokenId: number, toAddressObj: ICrossAccountId, amount=100n, label?: string) {
- return await this.helper.rft.approveToken(signer, this.collectionId, tokenId, toAddressObj, label, amount);
+ async approveToken(signer: TSigner, tokenId: number, toAddressObj: ICrossAccountId, amount=1n) {
+ return await this.helper.rft.approveToken(signer, this.collectionId, tokenId, toAddressObj, amount);
}
async getTokenApprovedPieces(tokenId: number, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId) {
return await this.helper.rft.getTokenApprovedPieces(this.collectionId, tokenId, toAddressObj, fromAddressObj);
}
- async repartitionToken(signer: TSigner, tokenId: number, amount: bigint, label?: string) {
- return await this.helper.rft.repartitionToken(signer, this.collectionId, tokenId, amount, label);
+ async repartitionToken(signer: TSigner, tokenId: number, amount: bigint) {
+ return await this.helper.rft.repartitionToken(signer, this.collectionId, tokenId, amount);
}
- async mintToken(signer: TSigner, owner: ICrossAccountId, pieces=100n, properties?: IProperty[], label?: string) {
- return await this.helper.rft.mintToken(signer, {collectionId: this.collectionId, owner, pieces, properties}, label);
+ async mintToken(signer: TSigner, owner: ICrossAccountId, pieces=100n, properties?: IProperty[]) {
+ return await this.helper.rft.mintToken(signer, {collectionId: this.collectionId, owner, pieces, properties});
}
- async mintMultipleTokens(signer: TSigner, tokens: {owner: ICrossAccountId, pieces: bigint, properties?: IProperty[]}[], label?: string) {
- return await this.helper.rft.mintMultipleTokens(signer, this.collectionId, tokens, label);
+ async mintMultipleTokens(signer: TSigner, tokens: {owner: ICrossAccountId, pieces: bigint, properties?: IProperty[]}[]) {
+ return await this.helper.rft.mintMultipleTokens(signer, this.collectionId, tokens);
}
- async burnToken(signer: TSigner, tokenId: number, amount=100n, label?: string) {
- return await this.helper.rft.burnToken(signer, this.collectionId, tokenId, label, amount);
+ async burnToken(signer: TSigner, tokenId: number, amount=1n) {
+ return await this.helper.rft.burnToken(signer, this.collectionId, tokenId, amount);
}
- async setTokenProperties(signer: TSigner, tokenId: number, properties: IProperty[], label?: string) {
- return await this.helper.rft.setTokenProperties(signer, this.collectionId, tokenId, properties, label);
+ async setTokenProperties(signer: TSigner, tokenId: number, properties: IProperty[]) {
+ return await this.helper.rft.setTokenProperties(signer, this.collectionId, tokenId, properties);
}
- async deleteTokenProperties(signer: TSigner, tokenId: number, propertyKeys: string[], label?: string) {
- return await this.helper.rft.deleteTokenProperties(signer, this.collectionId, tokenId, propertyKeys, label);
+ async deleteTokenProperties(signer: TSigner, tokenId: number, propertyKeys: string[]) {
+ return await this.helper.rft.deleteTokenProperties(signer, this.collectionId, tokenId, propertyKeys);
}
- async setTokenPropertyPermissions(signer: TSigner, permissions: ITokenPropertyPermission[], label?: string) {
- return await this.helper.rft.setTokenPropertyPermissions(signer, this.collectionId, permissions, label);
+ async setTokenPropertyPermissions(signer: TSigner, permissions: ITokenPropertyPermission[]) {
+ return await this.helper.rft.setTokenPropertyPermissions(signer, this.collectionId, permissions);
}
}
class UniqueFTCollection extends UniqueCollectionBase {
- async mint(signer: TSigner, owner: ICrossAccountId, amount: bigint, label?: string) {
- return await this.helper.ft.mintTokens(signer, this.collectionId, owner, amount, label);
+ async mint(signer: TSigner, owner: ICrossAccountId, amount: bigint) {
+ return await this.helper.ft.mintTokens(signer, this.collectionId, owner, amount);
}
- async mintWithOneOwner(signer: TSigner, owner: ICrossAccountId, tokens: {value: bigint}[], label?: string) {
- return await this.helper.ft.mintMultipleTokensWithOneOwner(signer, this.collectionId, owner, tokens, label);
+ async mintWithOneOwner(signer: TSigner, owner: ICrossAccountId, tokens: {value: bigint}[]) {
+ return await this.helper.ft.mintMultipleTokensWithOneOwner(signer, this.collectionId, owner, tokens);
}
async getBalance(addressObj: ICrossAccountId) {
@@ -2277,28 +2321,28 @@
return await this.helper.ft.getTop10Owners(this.collectionId);
}
- async transfer(signer: TSigner, toAddressObj: ICrossAccountId, amount: bigint) {
+ async transfer(signer: TSigner, toAddressObj: ICrossAccountId, amount=1n) {
return await this.helper.ft.transfer(signer, this.collectionId, toAddressObj, amount);
}
- async transferFrom(signer: TSigner, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount: bigint) {
+ async transferFrom(signer: TSigner, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=1n) {
return await this.helper.ft.transferFrom(signer, this.collectionId, fromAddressObj, toAddressObj, amount);
}
- async burnTokens(signer: TSigner, amount: bigint, label?: string) {
- return await this.helper.ft.burnTokens(signer, this.collectionId, amount, label);
+ async burnTokens(signer: TSigner, amount=1n) {
+ return await this.helper.ft.burnTokens(signer, this.collectionId, amount);
}
- async burnTokensFrom(signer: TSigner, fromAddressObj: ICrossAccountId, amount: bigint, label?: string) {
- return await this.helper.ft.burnTokensFrom(signer, this.collectionId, fromAddressObj, amount, label);
+ async burnTokensFrom(signer: TSigner, fromAddressObj: ICrossAccountId, amount=1n) {
+ return await this.helper.ft.burnTokensFrom(signer, this.collectionId, fromAddressObj, amount);
}
async getTotalPieces() {
return await this.helper.ft.getTotalPieces(this.collectionId);
}
- async approveTokens(signer: TSigner, toAddressObj: ICrossAccountId, amount=100n, label?: string) {
- return await this.helper.ft.approveTokens(signer, this.collectionId, toAddressObj, amount, label);
+ async approveTokens(signer: TSigner, toAddressObj: ICrossAccountId, amount=1n) {
+ return await this.helper.ft.approveTokens(signer, this.collectionId, toAddressObj, amount);
}
async getApprovedTokens(fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId) {
@@ -2322,12 +2366,12 @@
return await this.collection.getTokenNextSponsored(this.tokenId, addressObj);
}
- async setProperties(signer: TSigner, properties: IProperty[], label?: string) {
- return await this.collection.setTokenProperties(signer, this.tokenId, properties, label);
+ async setProperties(signer: TSigner, properties: IProperty[]) {
+ return await this.collection.setTokenProperties(signer, this.tokenId, properties);
}
- async deleteProperties(signer: TSigner, propertyKeys: string[], label?: string) {
- return await this.collection.deleteTokenProperties(signer, this.tokenId, propertyKeys, label);
+ async deleteProperties(signer: TSigner, propertyKeys: string[]) {
+ return await this.collection.deleteTokenProperties(signer, this.tokenId, propertyKeys);
}
}
@@ -2356,12 +2400,12 @@
return await this.collection.getTokenChildren(this.tokenId, blockHashAt);
}
- async nest(signer: TSigner, toTokenObj: IToken, label?: string) {
- return await this.collection.nestToken(signer, this.tokenId, toTokenObj, label);
+ async nest(signer: TSigner, toTokenObj: IToken) {
+ return await this.collection.nestToken(signer, this.tokenId, toTokenObj);
}
- async unnest(signer: TSigner, fromTokenObj: IToken, toAddressObj: ICrossAccountId, label?: string) {
- return await this.collection.unnestToken(signer, this.tokenId, fromTokenObj, toAddressObj, label);
+ async unnest(signer: TSigner, fromTokenObj: IToken, toAddressObj: ICrossAccountId) {
+ return await this.collection.unnestToken(signer, this.tokenId, fromTokenObj, toAddressObj);
}
async transfer(signer: TSigner, addressObj: ICrossAccountId) {
@@ -2372,16 +2416,16 @@
return await this.collection.transferTokenFrom(signer, this.tokenId, fromAddressObj, toAddressObj);
}
- async approve(signer: TSigner, toAddressObj: ICrossAccountId, label?: string) {
- return await this.collection.approveToken(signer, this.tokenId, toAddressObj, label);
+ async approve(signer: TSigner, toAddressObj: ICrossAccountId) {
+ return await this.collection.approveToken(signer, this.tokenId, toAddressObj);
}
async isApproved(toAddressObj: ICrossAccountId) {
return await this.collection.isTokenApproved(this.tokenId, toAddressObj);
}
- async burn(signer: TSigner, label?: string) {
- return await this.collection.burnToken(signer, this.tokenId, label);
+ async burn(signer: TSigner) {
+ return await this.collection.burnToken(signer, this.tokenId);
}
}
@@ -2405,27 +2449,27 @@
return await this.collection.getTokenTotalPieces(this.tokenId);
}
- async transfer(signer: TSigner, addressObj: ICrossAccountId, amount=100n) {
+ async transfer(signer: TSigner, addressObj: ICrossAccountId, amount=1n) {
return await this.collection.transferToken(signer, this.tokenId, addressObj, amount);
}
- async transferFrom(signer: TSigner, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=100n) {
+ async transferFrom(signer: TSigner, fromAddressObj: ICrossAccountId, toAddressObj: ICrossAccountId, amount=1n) {
return await this.collection.transferTokenFrom(signer, this.tokenId, fromAddressObj, toAddressObj, amount);
}
- async approve(signer: TSigner, toAddressObj: ICrossAccountId, amount=100n, label?: string) {
- return await this.collection.approveToken(signer, this.tokenId, toAddressObj, amount, label);
+ async approve(signer: TSigner, toAddressObj: ICrossAccountId, amount=1n) {
+ return await this.collection.approveToken(signer, this.tokenId, toAddressObj, amount);
}
async getApprovedPieces(fromAddressObj: ICrossAccountId, toAccountObj: ICrossAccountId) {
return await this.collection.getTokenApprovedPieces(this.tokenId, fromAddressObj, toAccountObj);
}
- async repartition(signer: TSigner, amount: bigint, label?: string) {
- return await this.collection.repartitionToken(signer, this.tokenId, amount, label);
+ async repartition(signer: TSigner, amount: bigint) {
+ return await this.collection.repartitionToken(signer, this.tokenId, amount);
}
- async burn(signer: TSigner, amount=100n, label?: string) {
- return await this.collection.burnToken(signer, this.tokenId, amount, label);
+ async burn(signer: TSigner, amount=1n) {
+ return await this.collection.burnToken(signer, this.tokenId, amount);
}
}